MoySklad
Модуль для работы с JSON API MoySklad ver.1.2, на языке Golang
Внимание! Модуль находится в стадии разработки
Установка
Требуется версия go >=1.8
go get -u github.com/Kirill-Znamenskiy/MoySklad
Пример использования
package main
import (
"fmt"
"github.com/Kirill-Znamenskiy/MoySklad"
"log"
)
func main() {
// Авторизация через токен
ms := moysklad.NewClientWithToken(`API_TOKEN`)
// Также можно использовать авторизацию по паре имя пользователя и пароль
// client := moysklad.NewClientWithBasicAuth(`MS_USERNAME`, `MS_PASSWORD`)
// Параметры запроса (фильтрация, сортировка, лимит, expand...)
params := moysklad.NewQueryParams().Limit(20).OrderAsc("name")
// Получаем структуру ответа 'Result[T]', содержащим ответ на запрос
// и *Response, в котором содержится дополнительная ифнормация о запросе, включая ошибки
result, response := ms.Entity().Product().WithParams(params).Get()
// Выведем кол-во секунд, за которое запрос был выполнен
fmt.Printf("Запрос выполнен за: %f сек.\n", response.TimeElapsed)
// *Response может содержать ошибки (например, ошибки десериализации)
// или ошибки ответа от сервиса moysklad
if response.HasErrors() {
err := response.GetErrors() // Получим ошибки в виде среза
// или можем объединить все ошибки в одну.
// Объединение происходит с помощью управляющего символа \n
// err := response.GetErrorsInline()
log.Println(err)
}
for _, product := range result.Rows {
fmt.Println(product.Name)
}
}
Настройки экземпляра клиента
Создать экземпляр клиента с токеном
ms := moysklad.NewClientWithToken(`API_TOKEN`)
Создать экземпляр клиента с логином и паролем
ms := moysklad.NewClientWithBasicAuth(`MS_USERNAME`, `MS_PASSWORD`)
Включить вывод форматированного JSON
ms.PrettyPrintJson(true)
Отключить уведомление вебхуков в контексте данного запроса
ms.DisableWebhookContent(true)
Установить кол-во попыток выполнения данного запроса (По умолчанию: 0 - бесконечно до получения результата).
Попытка считается исчерпанной при получении 429 или иной ошибки от сервиса МойСклад.
Если все попытки исчерпаны будет возвращена соответствующая ошибка.
ms.SetAttempts(10)
Время задержки в мс. между повторным выполнением данного запроса при получении 429 ошибки.
По умолчанию: 100
ms.SetTimeout(100)
Параметры (Params)
Модуль позволяет использовать параметры для запроса в рамках JSON API MoySklad.
Получить экземпляр параметров
params := moysklad.NewQueryParams()
Установить лимит
params.Limit(10)
Установить отступ
params.Offset(5)
Замена объектов ссылками (expand)
params.Expand("positions.assortment")
Контекстный поиск
params.Search("128GB")
Сортировка
// Сортировка по возрастанию (ASC)
params.Order("name") // (по умолчанию)
params.OrderAsc("name")
// Сортировка по убыванию (DESC)
params.OrderDesc("name")
Фильтрация
// "=" Фильтрация по значению
params.FilterEquals("name", "iPhone")
// "!=" Не равно
params.FilterNotEquals("code", "02321")
// ">" Больше
params.FilterGreater("moment", "2022-10-01 00:00:00")
// "<" Меньше
params.FilterLesser("moment", "2022-10-01 23:59:59")
// "=>" Больше или равно
params.FilterGreaterOrEquals("moment", "2022-10-01 00:00:00")
// "<=" Меньше или равно
params.FilterLesserOrEquals("moment", "2022-10-01 23:59:59")
// "~" Частичное совпадение
params.FilterEquivalence("name", "red")
// "!~" Частичное совпадение не выводится
params.FilterTypeNotEquivalence("name", "ello")
// "~=" Полное совпадение в начале значения
params.FilterEquivalenceLeft("name", "bl")
// "=~" Полное совпадение в конце значения
params.FilterEquivalenceRight("name", "ack")
Группировка (отчёты).
Возможные значения: GroupByProduct, GroupByVariant (по умолчанию), GroupByConsignment
params.GroupBy(params.GroupByProduct)
Цепочка вызовов
params.FilterEquals("name", "iPhone").Order("moment").Limit(10).Offset(5)
Передаём параметры и выполняем запрос
result, response := ms.Entity().Product().WithParams(params).Get()