MoySklad

package module
v0.0.0-...-d945546 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 16, 2023 License: MIT Imports: 2 Imported by: 0

README

MoySklad

Go Report Card

Модуль для работы с 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()

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewClientWithBasicAuth

func NewClientWithBasicAuth(username, password string) (c *client.JSONApiClient)

NewClientWithBasicAuth авторизация по имени пользователя и паролю

func NewClientWithToken

func NewClientWithToken(token string) (c *client.JSONApiClient)

NewClientWithToken авторизация по токену

func NewQueryParams

func NewQueryParams() *params.QueryParams

NewQueryParams возвращает структуру для параметров запроса

Types

This section is empty.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL