avtoto

package module
v0.1.8 Latest Latest
Warning

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

Go to latest
Published: Jan 7, 2023 License: MIT Imports: 9 Imported by: 0

README

avtoto

Go Reference avtoto API

DiscordGo logo

avtoto - обёртка на API сервиса avtoto.ru

Изначально разработчики API предполагали использование SOAP-технологии, но в конечном итоге оставили дополнение для версии на cURL. Именно это дополнение используется для работы с API в этом проекте.

Установка

go get github.com/rb-pro/avtoto

С чего начать?

Для начала работы с API Вам необходимо:

  • Заключить договор-поставки. Для этого обратитесь в клиентский отдел любым удобным способом. Дальнейшие действия возможны только после подписания договора.
  • Активировать сервис и добавьте IP адрес своего сайта на странице настройка веб-сервиса.
  • Ввести логин / пароль (как при авторизации на сайте) и номер (id) клиента (номер указан в разделе общая информация).

Вам необходимо знать:

  • Номер клиента
  • Логин
  • Пароль

С помощью этих данных Вы можете инициализировать пользователя:

user := avtoto.User{
    UserId:       userIdInt,
    UserLogin:    UserLoginStr,
    UserPassword: UserPasswordStr}

После этого Вам предоставлен функционал всего API. Методы описаны в данной документации и документации поставщиков API.

Работа с данной обёрткой осуществляется с помощью работы со структурами запрос-ответ. Например: Для метода GetBrandsByCodeRequestGetBrandsByCode существуют структуры:

  • GetBrandsByCodeRequestGetBrandsByCodeRequest - для запроса
  • GetBrandsByCodeRequestGetBrandsByCodeResponse - для ответа

Documentation

Overview

avtoto - обёртка на API сервиса avtoto.ru

Изначально разработчики API предполагали использование SOAP-технологии, но в конечном итоге оставили дополнение для версии на cURL. Именно это дополнение используется для работы с API в этом проекте.

Установка

go get github.com/rb-pro/avtoto

С чего начать?

Для начала работы с API Вам необходимо:

  • Заключите договор-поставки. Для этого обратитесь в клиентский отдел любым удобным способом. Дальнейшие действия возможны только после подписания договора.
  • Активируйте сервис и добавьте IP адрес своего сайта на странице настройка веб-сервиса.
  • Выполните настройки на своём сайте: введите логин / пароль (как при авторизации на сайте) и номер (id) клиента (номер указан в разделе общая информация).

Вам необходимо знать:

  • Номер клиента
  • Логин
  • Пароль

С помощью этих данных Вы можете инициилизировать пользователя:

user := avtoto.User{
	UserId:       userIdInt,
	UserLogin:    UserLoginStr,
	UserPassword: UserPasswordStr}

После этого Вам предоставлен функционал всего API. Методы описаны в данной документации и документации поставщиков API.

Index

Constants

View Source
const URL string = "https://www.avtoto.ru/?soap_server=json_mode"

Variables

This section is empty.

Functions

This section is empty.

Types

type AddToBasketRequest

type AddToBasketRequest struct {
	Code     string  `json:"Code"`              // [*] Код детали
	Manuf    string  `json:"Manuf"`             // [*] Производитель
	Name     string  `json:"Name"`              // [*] Название
	Price    float64 `json:"Price"`             // Цена
	Storage  string  `json:"Storage"`           // [*] Склад
	Delivery string  `json:"Delivery"`          // [*] Срок доставки
	Count    int     `json:"Count"`             // [*] количество для покупки (тип: целое)
	PartId   int     `json:"PartId"`            // [*] Номер запчасти в списке результата поиска (тип: целое)
	SearchID int     `json:"SearchID"`          // [*] Номер поиска (тип: целое)
	RemoteID int     `json:"RemoteID"`          // ID запчасти в Вашей системе(тип: целое)
	Comment  string  `json:"Comment,omitempty"` // Ваш комментарий к запчасти (тип: строка) [необязательный параметр]
}

Метод AddToBasket добавляет запчасти в корзину:

Примечание: Необходимо, чтобы количество для покупки Count не превышало максимальное количество MaxCount и соответствовало кратности заказа BaseCount. [*] — данные, сохраненные в результате поиска

Структура запроса метода AddToBasket

type AddToBasketResponse

type AddToBasketResponse struct {
	Done   []int `json:"Done"` // Массив RemoteID успешно добавленных элементов
	Errors []struct {
		Type  string `json:"type"`  // Тип ошибки: RemoteID - Если элемент прошел проверку на корректность, но возникла ошибка при добавлении элемента в корзину или Element, если возникла ошибка при проверке на корректность
		Id    int    `json:"id"`    // RemoteID или номер элемента
		Error string `json:"error"` // Описание ошибки
	} `json:"Errors"`
	Info struct {
		DocVersion string `json:"DocVersion"` // Версия документации
		IP         string `json:"IP"`         // IP используемой машины
		UserID     int    `json:"UserID"`     // ID пользователя
	} `json:"Info"`
	DoneInnerID []struct {
		RemoteID int `json:"RemoteID"` // ID товара в Вашей системе
		InnerID  int `json:"InnerID"`  // ID товара в корзине AvtoTO
	} `json:"DoneInnerId"`
}

Метод AddToBasket добавляет запчасти в корзину:

Структура ответа метода AddToBasket

func (AddToBasketResponse) BasketResInCheckReq

func (AddToBasketRes AddToBasketResponse) BasketResInCheckReq(partCount int) (CheckAvailabilityInBasketRequest, error)

Преобразовать ответ после добавления товара в корзину в запрос на получение информации по товару из корзины

basketCheck, errorbasketChecks := AddToBasketRes.BasketResInCheckReq(0)
if errorbasketChecks != nil {
	fmt.Println(errorbasketChecks)
}
fmt.Printf("%+#v\n", basketCheck)

Output:

avtotoGo.CheckAvailabilityInBasketRequest{InnerID:99756690, RemoteID:1, Count:0}

func (AddToBasketResponse) BasketResInDeleteReq

func (AddToBasketRes AddToBasketResponse) BasketResInDeleteReq(partCount int) (DeleteFromBasketRequest, error)

Функция преобразования ответа результата добавления товара в корзину в запрос на удаление позиции товара. Для примера была взята структура AddToBasketRes:

basketItemsDelete, errorBasketItemDelete := AddToBasketRes.BasketResInDeleteReq(0)
if errorBasketItemDelete != nil {
	fmt.Println(errorBasketItemDelete)
}

Output:

avtotoGo.UpdateCountInBasketRequest{InnerID:99756690, RemoteID:1, NewCount:0x0}

func (AddToBasketResponse) BasketResInOrdersReq

func (AddToBasketRes AddToBasketResponse) BasketResInOrdersReq(partCount int) (AddToOrdersFromBasketRequest, error)

Преобразовать ответ после добавления товара в корзину в запрос на добавление запчасти из корзины в заказы

orderBasket, errorbasketChecks := AddToBasketRes.BasketResInOrdersReq(0)
if errorbasketChecks != nil {
	fmt.Println(errorbasketChecks)
}
fmt.Printf("%+#v\n", orderBasket)

Output:

avtotoGo.AddToOrdersFromBasketRequest{InnerID:99756690, RemoteID:1, Count:0}

func (AddToBasketResponse) BasketResInOrdersStatusReq

func (AddToBasketRes AddToBasketResponse) BasketResInOrdersStatusReq(partCount int) (GetOrdersStatusRequest, error)

Преобразовать ответ после добавления товара в корзину в запрос на получения статуса заказа

orderStatusGet, errorbasketChecks := AddToBasketRes.BasketResInOrdersStatusReq(0)
if errorbasketChecks != nil {
	fmt.Println(errorbasketChecks)
}
fmt.Printf("%+#v\n", orderStatusGet)

Output:

avtotoGo.GetOrdersStatusRequest{InnerID:99756690, RemoteID:1}

func (AddToBasketResponse) BasketResInUpdateReq

func (AddToBasketRes AddToBasketResponse) BasketResInUpdateReq(partCount int) (UpdateCountInBasketRequest, error)

Функция преобразования ответа результата добавления товара в корзину в запрос на обновление позиции товара. Для примера была взята структура AddToBasketRes:

basketItemsUpdate, errorBasketItemUpdate := AddToBasketRes.BasketResInUpdateReq(0)
if errorBasketItemUpdate != nil {
	fmt.Println(errorBasketItemUpdate)
}

Output:

avtotoGo.UpdateCountInBasketRequest{InnerID:99756690, RemoteID:1, NewCount:0x0}

func (AddToBasketResponse) Error

func (AddToBasketRes AddToBasketResponse) Error() string

Получить ошибку из ответа метода AddToBasket

type AddToOrdersFromBasketRequest

type AddToOrdersFromBasketRequest struct {
	InnerID  int `json:"InnerID"`         // ID записи в корзине AvtoTO (тип: целое) — данные, сохраненные в результате добавления в корзину
	RemoteID int `json:"RemoteID"`        // ID запчасти в Вашей системе (тип: целое)
	Count    int `json:"Count,omitempty"` // Количество для добавления (необязательный параметр, тип: целое)
}

Метод AddToOrdersFromBasket добавляет запчасти в заказы из корзины Avtoto

Структура запроса метода AddToOrdersFromBasket

type AddToOrdersFromBasketResponse

type AddToOrdersFromBasketResponse struct {
	Done   []int `json:"Done"` // Массив RemoteID успешно добавленных элементов
	Errors []struct {
		RemoteID int      `json:"RemoteID"` // ID товара в Вашей системе
		InnerID  int      `json:"InnerID"`  // ID товара в корзине AvtoTO (тип: целое)
		Errors   []string `json:"Errors"`   // список ошибок по данному ID товара (массив)
	} `json:"Errors"`
	Info struct {
		DocVersion string `json:"DocVersion"` // Версия документации
		IP         string `json:"IP"`         // IP используемой машины
		UserID     int    `json:"UserID"`     // ID пользователя
	} `json:"Info"`
	DoneInnerId []struct {
		RemoteID int `json:"RemoteID"` // ID товара в Вашей системе
		InnerID  int `json:"InnerID"`  // InnerID - ID успешно добавленного в заказы товара AvtoTO
	} `json:"DoneInnerId"`
}

Метод AddToOrdersFromBasket добавляет запчасти в заказы из корзины Avtoto

Структура ответа метода AddToOrdersFromBasket

func (AddToOrdersFromBasketResponse) Error

func (AddToOrdersFromBasketRes AddToOrdersFromBasketResponse) Error() string

Получить ошибку из ответа метода AddToOrdersFromBasket

type CheckAvailabilityInBasketRequest

type CheckAvailabilityInBasketRequest struct {
	InnerID  int `json:"InnerID"`         // ID записи в корзине AvtoTO (тип: целое)
	RemoteID int `json:"RemoteID"`        // ID запчасти в Вашей системе (тип: целое)
	Count    int `json:"Count,omitempty"` // Количество для добавления (необязательный параметр, тип: целое)
}

Метод CheckAvailabilityInBasket проверяет запчасти в корзине AvtoTO на наличие в прайсах для дальнейшего заказа, а так же срок хранения в корзине

Структура запроса метода CheckAvailabilityInBasket

type CheckAvailabilityInBasketResponse

type CheckAvailabilityInBasketResponse struct {
	PartsInfo []struct {
		RemoteID     int    `json:"RemoteID"`     // ID товара в Вашей системе
		InnerID      int    `json:"InnerID"`      // ID товара в корзине AvtoTO (тип: целое)
		Availability int    `json:"Availability"` // 1/0 (в наличии / нет в наличии) (тип: целое)
		MaxCount     string `json:"MaxCount"`     // максимальное допустимое количество товара для заказа в корзине AvtoTO (тип: целое, значение "-1" означает "без ограничений")
	} `json:"PartsInfo"`
	Errors []struct {
		RemoteID int      `json:"RemoteID"` // ID товара в Вашей системе
		InnerID  int      `json:"InnerID"`  // ID товара в корзине AvtoTO (тип: целое)
		Errors   []string `json:"Errors"`   // список ошибок по данному ID товара (массив)
	} `json:"Errors"`
	Info struct {
		DocVersion string `json:"DocVersion"` // Версия документации
		IP         string `json:"IP"`         // IP используемой машины
		UserID     int    `json:"UserID"`     // ID пользователя
	} `json:"Info"`
}

Метод CheckAvailabilityInBasket проверяет запчасти в корзине AvtoTO на наличие в прайсах для дальнейшего заказа, а так же срок хранения в корзине

Структура ответа метода CheckAvailabilityInBasket

func (CheckAvailabilityInBasketResponse) Availability

func (CheckAvailabilityInBasketRes CheckAvailabilityInBasketResponse) Availability(count int) (string, error)

Получить данные по Availability(наличие)

func (CheckAvailabilityInBasketResponse) Error

func (CheckAvailabilityInBasketRes CheckAvailabilityInBasketResponse) Error() string

Получить ошибку из ответа метода CheckAvailabilityInBasket

type CustomIntToString

type CustomIntToString struct {
	// contains filtered or unexported fields
}

Структура созданная для десериализация JSON с неправильной типизацией - https://habr.com/ru/post/502176/ Так получилось, что API можетотдавать данные по ключу SearchID как string, так и integer. Эта структура и 2 объявленных для неё метода способны изменить это и предоставить постоянный рабочий функционал, который позволяет держать значение элемента массива типа string в завосимости от входного параметра.

func (CustomIntToString) MarshalJSON

func (cf CustomIntToString) MarshalJSON() ([]byte, error)

Кастомное кодирование JSON для ключа SearchID

func (*CustomIntToString) UnmarshalJSON

func (cis *CustomIntToString) UnmarshalJSON(data []byte) error

Кастомное декодирование JSON для ключа SearchID

func (CustomIntToString) Value

func (cf CustomIntToString) Value() string

Получить значение

type Date

type Date struct {
	// contains filtered or unexported fields
}

func (Date) Day

func (t Date) Day() string

Составные части даты и времени

func (Date) Hour

func (t Date) Hour() string

func (Date) MarshalJSON

func (t Date) MarshalJSON() ([]byte, error)

MarshalJSON is used to convert the timestamp to JSON

func (Date) Minute

func (t Date) Minute() string

func (Date) Month

func (t Date) Month() string

func (Date) String

func (t Date) String() string

Вернуть дату в формате string в одной строке

func (Date) Strings

func (t Date) Strings() (string, string, string)

Вернуть дату в формате string по частям

func (*Date) UnmarshalJSON

func (t *Date) UnmarshalJSON(s []byte) error

UnmarshalJSON is used to convert the timestamp from JSON

func (Date) Year

func (t Date) Year() string

type DeleteFromBasketRequest

type DeleteFromBasketRequest struct {
	InnerID  int `json:"InnerID"`  // ID записи в корзине AvtoTO (тип: целое)
	RemoteID int `json:"RemoteID"` // ID запчасти в Вашей системе (тип: целое)
}

Метод DeleteFromBasket удаляет запчасти из корзины

Структура запроса метода DeleteFromBasket

type DeleteFromBasketResponse

type DeleteFromBasketResponse struct {
	Done   []int `json:"Done"` // Массив RemoteID успешно удаленных элементов
	Errors []struct {
		Type  string `json:"type"`  // Тип ошибки: RemoteID - Если элемент прошел проверку на корректность, но возникла ошибка при добавлении элемента в корзину или Element, если возникла ошибка при проверке на корректность
		Id    int    `json:"id"`    // RemoteID или номер элемента
		Error string `json:"error"` // Описание ошибки
	} `json:"Errors"`
	Info struct {
		DocVersion string `json:"DocVersion"` // Версия документации
		IP         string `json:"IP"`         // IP используемой машины
		UserID     int    `json:"UserID"`     // ID пользователя
	} `json:"Info"`
}

Метод DeleteFromBasket удаляет запчасти из корзины

Структура ответа метода DeleteFromBasket

func (DeleteFromBasketResponse) Error

func (DeleteFromBasketRes DeleteFromBasketResponse) Error() string

Получить ошибку из ответа метода DeleteFromBasket

type GetBrandsByCodeRequest

type GetBrandsByCodeRequest struct {
	UserId       int    `json:"user_id"`       // [*] Уникальный идентификатор пользователя (номер клиента) (тип: целое)
	UserLogin    string `json:"user_login"`    // [*] Логин пользователя (тип: строка)
	UserPassword string `json:"user_password"` // Пароль пользователя (тип: строка)
	SearchCode   string `json:"search_code"`   // Поисковый запрос, минимум 3 символа (тип: строка)
}

Метод GetBrandsByCode предназначен для поиска списка брендов по артикулу запчасти Примечание: Сервис поиска предложений будет работать в случае выполнения условия: сумма заказов / количество запросов > 20 после некоторого порога проценок. [*] — эти данные можно узнать зайдя на страницу Настройки после авторизации на сайте

Структура запроса метода GetBrandsByCode

type GetBrandsByCodeResponse

type GetBrandsByCodeResponse struct {
	Brands []struct {
		Manuf string `json:"Manuf"` // Производитель
		Name  string `json:"Name"`  // Название
	} `json:"Brands"`
	Info struct {
		Errors []string `json:"Errors"`
	} `json:"Info"`
}

Метод GetBrandsByCode предназначен для поиска списка брендов по артикулу запчасти

Структура ответа метода GetBrandsByCode

func (GetBrandsByCodeResponse) Error

func (GetBrandsByCodeRes GetBrandsByCodeResponse) Error() string

Получить ошибку из ответа метода GetBrandsByCode

func (GetBrandsByCodeResponse) LenParts

func (GetBrandsByCodeRes GetBrandsByCodeResponse) LenParts() int

Получить количество Parts метода GetBrandsByCode

type GetOrdersStatusRequest

type GetOrdersStatusRequest struct {
	InnerID  int `json:"InnerID"`  // ID записи в корзине AvtoTO (тип: целое) — данные, сохраненные в результате добавления в корзину
	RemoteID int `json:"RemoteID"` // ID запчасти в Вашей системе (тип: целое)
}

Метод GetOrdersStatus предназначен для проверки статуса заказа в системе AvtoTO

Структура запроса метода GetOrdersStatus

type GetOrdersStatusRequestData

type GetOrdersStatusRequestData struct {
	User  User                     `json:"user"`  // Данные пользователя для авторизации (тип: ассоциативный массив)
	Parts []GetOrdersStatusRequest `json:"parts"` // Список запчастей для добавления в заказы (тип: индексированный массив)
}

Метод GetOrdersStatus предназначен для проверки статуса заказа в системе AvtoTO Полная структура запроса метода GetOrdersStatus скрыта от разработчика.

type GetOrdersStatusResponse

type GetOrdersStatusResponse struct {
	OrdersInfo []struct {
		RemoteID int `json:"RemoteID"` // ID заказа в Вашей системе
		InnerID  int `json:"InnerID"`  // ID заказа в системе AvtoTO
		Info     struct {
			Progress      int      `json:"progress"`      // общий статус заказа (тип: целое)
			Progress_text string   `json:"progress_text"` // общий статус заказа (тип: строка)
			Count         int      `json:"count"`         // общее количество заказа (тип: целое)
			Sub_progress  []string `json:"sub_progress"`  // частичные статусы заказа (тип: массив)
			// Частичный статус (номер) => количество частичного статуса
			Sub_progress_text string `json:"sub_progress_text"` // частичные статусы заказа, описание (тип: строка с HTML разметкой)
		} `json:"Info"`
	} `json:"OrdersInfo"`
	Errors []struct {
		RemoteID int      `json:"RemoteID"` // ID товара в Вашей системе
		InnerID  int      `json:"InnerID"`  // ID товара в корзине AvtoTO (тип: целое)
		Errors   []string `json:"Errors"`   // список ошибок по данному ID товара (массив)
	} `json:"Errors"`
}

Метод GetOrdersStatus предназначен для проверки статуса заказа в системе AvtoTO

Структура ответа метода GetOrdersStatus

func (GetOrdersStatusResponse) Error

func (GetOrdersStatusRes GetOrdersStatusResponse) Error() string

Получить ошибку из ответа метода GetOrdersStatus

func (GetOrdersStatusResponse) Status

func (GetOrdersStatusRes GetOrdersStatusResponse) Status(partCount int) (string, error)

Получить статус заказа

type GetShippingListRequest

type GetShippingListRequest struct {
	From    Date `json:"from,omitempty"`     // дата начала выборки (ДД.ММ.ГГГГ) (опционально) (тип: строка)
	To      Date `json:"to,omitempty"`       // дата окончания выборки (ДД.ММ.ГГГГ) (опционально) (тип: строка)
	PageNum int  `json:"page_num,omitempty"` // номер страницы (опционально) (тип: целое)
}

Метод GetShippingList предназначен для получения статистики проценок по всем объединенным регистрациям

Структура запроса метода GetShippingList

type GetShippingListRequestData

type GetShippingListRequestData struct {
	User User `json:"user"` // Данные пользователя для авторизации (тип: ассоциативный массив)
	// contains filtered or unexported fields
}

Метод GetShippingList предназначен для получения статистики проценок по всем объединенным регистрациям Полная структура запроса метода GetShippingList скрыта от разработчика.

type GetShippingListResponse

type GetShippingListResponse struct {
	Shippings []struct {
		Id     int `json:"Id"`   // ID отгрузки
		Date   int `json:"Date"` // Дата отгрузки
		Type   int `json:"Type"` // Тип отгрузки
		Summ   int `json:"Summ"` // Сумма отгрузки
		Orders []struct {
			OrderId int    `json:"OrderId"` // ID заказа
			Comment string `json:"Comment"` // Комментарий к заказу
			Sclad   string `json:"Sclad"`   // Направление склада
			Code    string `json:"Code"`    // Артикул
			Name    string `json:"Name"`    // Название
			Manuf   string `json:"Manuf"`   // Бренд
			Price   int    `json:"Price"`   // Цена
			Count   int    `json:"Count"`   // Количество
		} `json:"Orders"`
	} `json:"Shippings"`
	Pagination struct {
		CountItems  int `json:"CountItems"`  // Количество отгрузок
		CountPages  int `json:"CountPages"`  // Количество страниц
		PerPage     int `json:"PerPage"`     // Количество результатов на странице
		CurrentPage int `json:"CurrentPage"` // Текущая страница
	} `json:"Pagination"`
	Errors []string `json:"Errors"` // Массив ошибок, возникший в процессе поиска
	Info   struct {
		DocVersion string `json:"DocVersion"` // Версия документации
	} `json:"Info"`
}

Метод GetShippingList предназначен для получения статистики проценок по всем объединенным регистрациям

Структура ответа метода GetShippingList

func (GetShippingListResponse) CountItems

func (slr GetShippingListResponse) CountItems() int

Получить Количество отгрузок из ответа метода GetShippingList

func (GetShippingListResponse) CountPages

func (slr GetShippingListResponse) CountPages() int

Получить Количество страниц из ответа метода GetShippingList

func (GetShippingListResponse) CurrentPage

func (slr GetShippingListResponse) CurrentPage() int

Получить Текущую страницу из ответа метода GetShippingList

func (GetShippingListResponse) Error

func (slr GetShippingListResponse) Error() string

Получить ошибки из ответа метода GetShippingList

func (GetShippingListResponse) PerPage

func (slr GetShippingListResponse) PerPage() int

Получить Количество результатов на странице из ответа метода GetShippingList

type GetStatSearchResponse

type GetStatSearchResponse struct {
	StatInfo struct {
		SearchCount   int  `json:"SearchCount"`   // Количество проценок за определенный период
		SearchEnabled bool `json:"SearchEnabled"` // Доступность использования проценки (true - доступно, false - недоступно)
		MaxCount      bool `json:"MaxCount"`      // лимит проценок
		OrdersSum     int  `json:"OrdersSum"`     // сумма закупок за определенный период

		StatDateStart      Date     `json:"StatDateStart"`      // дата начала периода подсчета
		StatDateStartStamp TimeUnix `json:"StatDateStartStamp"` // дата начала периода подсчета в формате UNIX

		StatDateEnd      Date     `json:"StatDateEnd"`      // Дата окончания периода подсчета
		StatDateEndStamp TimeUnix `json:"StatDateEndStamp"` // Дата окончания периода подсчета в формате UNIX

		SearchHistory []struct {
			Day         Date `json:"Day"`         // День (в формате dd/mm)
			SearchCount int  `json:"SearchCount"` // Количество проценок
		} `json:"SearchHistory"`
	} `json:"StatInfo"`
	BrandsStatInfo struct {
		SearchCount   string `json:"SearchCount"`   // Количество запросов за определенный период
		SearchEnabled bool   `json:"SearchEnabled"` // Доступность использования запросов (true - доступно, false - недоступно)
		MaxCount      bool   `json:"MaxCount"`      // Лимит запросов

		StatDateStart      Date     `json:"StatDateStart"`      // Дата начала периода подсчета
		StatDateStartStamp TimeUnix `json:"StatDateStartStamp"` // Дата начала периода подсчета в формате UNIX
		StatDateEnd        Date     `json:"StatDateEnd"`        // Дата окончания периода подсчета
		StatDateEndStamp   TimeUnix `json:"StatDateEndStamp"`   // Дата окончания периода подсчета в формате UNIX
		SearchHistory      []struct {
			Day         Date `json:"Day"`         // День (в формате dd/mm)
			SearchCount int  `json:"SearchCount"` // Количество запросов
		} `json:"SearchHistory"`
	} `json:"BrandsStatInfo"`
	Errors []string `json:"Errors"` // Массив ошибок, возникший в процессе поиска
	Info   struct {
		DocVersion string `json:"DocVersion"` // Версия API
	} `json:"Info"`
}

Метод GetStatSearch предназначен для получения статистики проценок по всем объединенным регистрациям. Информаци о проценках - индексированный массив с упорядоченными целочисленными ключами, начиная с 0

Структура ответа метода GetStatSearch

func (GetStatSearchResponse) Error

func (GetStatSearchRes GetStatSearchResponse) Error() string

Получить ошибку из ответа метода GetStatSearch

type SearchGetParts2Request

type SearchGetParts2Request struct {
	ProcessSearchId string `json:"ProcessSearchId"` // Уникальный идентификатор процесса поиска (тип: строка).
	Limit           int    `json:"Limit"`           // необязательный параметр, орграничение на количество строк в выдаче (тип: целое).
}

Метод SearchGetParts2 предназначен для получения результатов поиска запчастей по коду на сервере AvtoTO. Расширенная версия, выдает статус ответа Полная структура запроса метода GetShippingList скрыта от разработчика.

func (SearchGetParts2Request) SearchGetParts2

func (SearchGetParts2Req SearchGetParts2Request) SearchGetParts2() (SearchGetParts2Response, error)

Получить данные по методу SearchGetParts2

SearchGetParts2Res, errorSearch := SearchGetParts2Req.SearchGetParts2() // Вызов метода SearchGetParts2
if errorSearch != nil {
	log.Fatal(errorSearch)
}
if SearchGetParts2Res.Error() != "Запрос в обработке" {
	fmt.Println(SearchGetParts2Res)
} else {
	fmt.Println("Запрос в обработке. Ждём 1 секунду и заново опрашиваешь по методу SearchGetParts2")
}

type SearchGetParts2Response

type SearchGetParts2Response struct {
	Parts []struct {
		Code      string `json:"Code"`      // [*] Код детали
		Manuf     string `json:"Manuf"`     // [*] Производитель
		Name      string `json:"Name"`      // [*] Название
		Price     int    `json:"Price"`     // Цена
		Storage   string `json:"Storage"`   // [*] Склад
		Delivery  string `json:"Delivery"`  // [*] Срок доставки
		MaxCount  string `json:"MaxCount"`  // [*] Максимальное количество для заказа, остаток по складу. Значение "-1" - означает "много" или "неизвестно"
		BaseCount string `json:"BaseCount"` // [*] Кратность заказа

		StorageDate     string `json:"StorageDate"`     // [**] Дата обновления склада
		DeliveryPercent int    `json:"DeliveryPercent"` // [**] Процент успешных закупок из общего числа заказов
		BackPercent     int    `json:"BackPercent"`     // [**] Процент удержания при возврате товара (при отсутствии возврата поставщику возвращается значение "-1")

		AvtotoData struct {
			PartId int `json:"PartId"` // [*] Номер запчасти в списке результата поиска
		} `json:"AvtotoData"`
	} `json:"Parts"`
	Info struct {
		Errors       []string          `json:"Errors"`       // Массив ошибок, возникший в процессе поиска
		SearchStatus int               `json:"SearchStatus"` // Информация о статусе процесса на сервере AvtoTO. Возможные варианты значений:
		SearchID     CustomIntToString `json:"SearchId"`     // Уникальный идентификатор запроса поиска, возвращается в случае удачного поиска
	} `json:"Info"`
}

Метод SearchGetParts2 предназначен для получения результатов поиска запчастей по коду на сервере AvtoTO. Расширенная версия, выдает статус ответа Список запчастей, найденных по запросу - индексированный массив с упорядоченными целочисленными ключами, начиная с 0. Каждый элемент этого массива содержит информацию о конкретной детали и представляет из себя ассоциативный массив. [*] — эти данные необходимо сохранить в Вашей системе, в дальнейшем они понадобятся для добавления запчастей в корзину [**] — В случае, когда SearchStatus = 4 (Результат получен)

Структура ответа метода SearchGetParts2

func (SearchGetParts2Response) Error

func (SearchGetParts2Res SearchGetParts2Response) Error() string

Получить ошибку из ответа метода SearchGetParts2

func (SearchGetParts2Response) LenParts

func (SearchGetParts2Res SearchGetParts2Response) LenParts() int

Получить количество Parts метода SearchGetParts2

func (SearchGetParts2Response) SearchResInBasketReq

func (SearchGetParts2Res SearchGetParts2Response) SearchResInBasketReq(partCount int) (AddToBasketRequest, error)

Получить данные по методу SearchGetParts2

func (SearchGetParts2Response) Status

func (SearchGetParts2Res SearchGetParts2Response) Status() string

Получить статус запроса по методу SearchGetParts2

type SearchStartRequest

type SearchStartRequest struct {
	UserId       int    `json:"user_id"`         // [*] Уникальный идентификатор пользователя (номер клиента) (тип: целое)
	UserLogin    string `json:"user_login"`      // [*] Логин пользователя (тип: строка)
	UserPassword string `json:"user_password"`   // Пароль пользователя (тип: строка)
	SearchCode   string `json:"search_code"`     // Поисковый запрос, минимум 3 символа (тип: строка)
	SearchCross  string `json:"search_cross"`    // Искать в аналогах или нет (тип: строка, 'on' или 'off')
	Brand        string `json:"brand,omitempty"` // [**] Искать код с учетом бренда, минимум 2 символа (опционально)(тип: строка)

}

type SearchStartResponse

type SearchStartResponse struct {
	ProcessSearchID string `json:"ProcessSearchId"` // идентификатор процесса поиска (тип: строка). Необходим для отслеживания результатов процесса поиска.
	Info            struct {
		SearchID string   `json:"SearchId"`
		Errors   []string `json:"Errors"`
		Logs     string   `json:"Logs"`
	} `json:"Info"`
}

Метод SearchStart предназначен для получения результатов поиска запчастей по коду на сервере AvtoTO

Структура ответа метода SearchStart

func (SearchStartResponse) Error

func (SearchStartRes SearchStartResponse) Error() string

Получить ошибку из ответа метода SearchStart

func (SearchStartResponse) LogsString

func (responseSearchStart SearchStartResponse) LogsString() string

Получить логи из ответа метода SearchStart

func (SearchStartResponse) ProcessSearchCode

func (searchStartRes SearchStartResponse) ProcessSearchCode() string

Получить ProcessSearchID из ответа метода SearchStart

func (SearchStartResponse) SearchResInReq

func (searchStartRes SearchStartResponse) SearchResInReq() (SearchGetParts2Request, error)

Преобразование ответа в запрос. SearchStartResponse > SearchGetParts2Request

type TimeUnix

type TimeUnix struct {
	// contains filtered or unexported fields
}

func (TimeUnix) Day

func (t TimeUnix) Day() string

Составные части даты и времени

func (TimeUnix) Hour

func (t TimeUnix) Hour() string

func (TimeUnix) Minute

func (t TimeUnix) Minute() string

func (TimeUnix) Month

func (t TimeUnix) Month() string

func (TimeUnix) String

func (t TimeUnix) String() string

Вернуть дату в формате string в одной строке

func (TimeUnix) Strings

func (t TimeUnix) Strings() (string, string, string)

Вернуть дату в формате string в одной строке

func (TimeUnix) Time

func (t TimeUnix) Time() time.Time

Time returns the JSON time as a time.Time instance in UTC

func (TimeUnix) Unix

func (t TimeUnix) Unix() int64

Unix returns t as a Unix time, the number of seconds elapsed since January 1, 1970 UTC. The result does not depend on the location associated with t.

func (*TimeUnix) UnmarshalJSON

func (t *TimeUnix) UnmarshalJSON(s []byte) (err error)

UnmarshalJSON is used to convert the timestamp from JSON

func (TimeUnix) Year

func (t TimeUnix) Year() string

type UpdateCountInBasketRequest

type UpdateCountInBasketRequest struct {
	InnerID  int  `json:"InnerID"`  // ID записи в корзине AvtoTO (тип: целое) — данные, сохраненные в результате добавления в корзину
	RemoteID int  `json:"RemoteID"` // ID запчасти в Вашей системе (тип: целое)
	NewCount uint `json:"NewCount"` // Необходимое количество запчастей в карзине (тип: целое, положительное) — Необходимо, чтобы новое количество NewCount не превышало максимальное количество MaxCount, и соответствовало кратности заказа BaseCount

}

Метод UpdateCountInBasket предназначен для получения результатов поиска запчастей по коду на сервере AvtoTO. Расширенная версия, выдает статус ответа

Структура запроса метода UpdateCountInBasket

type UpdateCountInBasketResponse

type UpdateCountInBasketResponse struct {
	Done []struct {
		RemoteID int `json:"RemoteID"`
	} `json:"Done"`
	Errors []struct {
		Type  string `json:"type"`  // Тип ошибки: RemoteID - Если элемент прошел проверку на корректность, но возникла ошибка при добавлении элемента в корзину или Element, если возникла ошибка при проверке на корректность
		Id    int    `json:"id"`    // RemoteID или номер элемента
		Error string `json:"error"` // Описание ошибки
	} `json:"Errors"`
	Info struct {
		DocVersion string `json:"DocVersion"` // Версия документации
		IP         string `json:"IP"`         // IP используемой машины
		UserID     int    `json:"UserID"`     // ID пользователя
	} `json:"Info"`
}

Метод UpdateCountInBasket предназначен для получения результатов поиска запчастей по коду на сервере AvtoTO. Расширенная версия, выдает статус ответа

Структура ответа метода UpdateCountInBasket

func (UpdateCountInBasketResponse) Error

func (UpdateCountInBasketRes UpdateCountInBasketResponse) Error() string

Получить ошибку из ответа метода UpdateCountInBasket

type User

type User struct {
	UserId       int    `json:"user_id"`       // Уникальный идентификатор пользователя (номер клиента) (тип: целое)
	UserLogin    string `json:"user_login"`    // Логин пользователя (тип: строка)
	UserPassword string `json:"user_password"` // Пароль пользователя (тип: строка)
}

Исходная структура для авторизации пользователя

func (User) AddToBasket

func (user User) AddToBasket(AddToBasketReq []AddToBasketRequest) (AddToBasketResponse, error)

Получить данные по методу AddToBasket

basketItems := make([]avtoto.AddToBasketRequest, 1)
basketItem, errorBasketItem := SearchGetParts2Res.SearchResInBasketReq(0)
if errorBasketItem != nil {
	fmt.Println(errorBasketItem)
}
basketItems[0] = basketItem
basketItems[0].RemoteID = 1
basketItems[0].Count = 20
AddToBasketRes, errorRes := user.AddToBasket(basketItems)
if errorRes != nil {
	fmt.Println(errorRes)
}

func (User) AddToOrdersFromBasket

func (user User) AddToOrdersFromBasket(AddToOrdersFromBasketReq []AddToOrdersFromBasketRequest) (AddToOrdersFromBasketResponse, error)

Получить данные по методу AddToOrdersFromBasket

orderBaskets := make([]avtoto.AddToOrdersFromBasketRequest, 1)
orderBasket, errorbasketChecks := AddToBasketRes.BasketResInOrdersReq(0)
if errorbasketChecks != nil {
	fmt.Println(errorbasketChecks)
}
orderBaskets[0] = orderBasket
AddToOrdersFromBasketRes, errorOrders := user.AddToOrdersFromBasket(orderBaskets)
if errorOrders != nil {
	fmt.Println(errorOrders)
}

func (User) CheckAvailabilityInBasket

func (user User) CheckAvailabilityInBasket(CheckAvailabilityInBasketReq []CheckAvailabilityInBasketRequest) (CheckAvailabilityInBasketResponse, error)

Получить данные по методу CheckAvailabilityInBasket

basketChecks := make([]avtoto.CheckAvailabilityInBasketRequest, 1)
basketCheck, errorbasketChecks := AddToBasketRes.BasketResInCheckReq(0)
if errorbasketChecks != nil {
	fmt.Println(errorbasketChecks)
}
basketChecks[0] = basketCheck
CheckAvailabilityInBasketRes, errorCheckInBasket := user.CheckAvailabilityInBasket(basketChecks)
if errorCheckInBasket != nil {
	fmt.Println(errorCheckInBasket)
}
availability, errorAvailability := CheckAvailabilityInBasketRes.Availability(0)
if errorAvailability != nil {
	fmt.Println(errorAvailability)
}

func (User) DeleteFromBasket

func (user User) DeleteFromBasket(DeleteFromBasketReq []DeleteFromBasketRequest) (DeleteFromBasketResponse, error)

Получить данные по методу DeleteFromBasket

basketItemsDeletes := make([]avtoto.DeleteFromBasketRequest, 1)
basketItemsDelete, errorBasketItemDelete := AddToBasketRes.BasketResInDeleteReq(0)
if errorBasketItemDelete != nil {
	fmt.Println(errorBasketItemDelete)
}
basketItemsDeletes[0] = basketItemsDelete
DeleteFromBasketRes, errorBusketDelete := user.DeleteFromBasket(basketItemsDeletes)
if errorBasketItemDelete != nil {
	fmt.Println(errorBusketDelete)
}

func (User) GetBrandsByCode

func (user User) GetBrandsByCode(GetBrandsByCodeReq GetBrandsByCodeRequest) (GetBrandsByCodeResponse, error)

Получить данные по методу GetBrandsByCode

myBrand := avtoto.GetBrandsByCodeRequest{SearchCode: mySearchCode} // Создаём структуру запроса бренда по заданному артиклу
dataGetBrandsByCode, errorSearch := user.GetBrandsByCode(myBrand) // Получаем с сервера список брендов
if errorSearch != nil {
	log.Fatal(errorSearch)
}
fmt.Println("> Для артикла", mySearchCode, "найдено", len(dataGetBrandsByCode.Brands), "бренда(ов).",
	"\nПервый найденный бренд имеет производителя", dataGetBrandsByCode.Brands[0].Manuf, "и имя", dataGetBrandsByCode.Brands[0].Name)

func (User) GetOrdersStatus

func (user User) GetOrdersStatus(GetOrdersStatusReq []GetOrdersStatusRequest) (GetOrdersStatusResponse, error)

Получить данные по методу GetOrdersStatus

orderStatusGets := make([]avtoto.GetOrdersStatusRequest, 1)
orderStatusGet, errorbasketChecks := AddToBasketRes.BasketResInOrdersStatusReq(0)
if errorbasketChecks != nil {
	fmt.Println(errorbasketChecks)
}
orderStatusGets[0] = orderStatusGet
GetOrdersStatusRes, errorOrdersStatus := user.GetOrdersStatus(orderStatusGets)
if errorOrdersStatus != nil {
	fmt.Println(errorOrdersStatus)
}
orderStatus, orderStatusError := GetOrdersStatusRes.Status(0)
if orderStatusError != nil {
	fmt.Println(orderStatusError)
}

func (User) GetShippingList

func (user User) GetShippingList(GetShippingListReq GetShippingListRequest) (GetShippingListResponse, error)

Получить данные по методу GetShippingList

GetShippingListReq := avtoto.GetShippingListRequest{}
ShippingList, ShippingListError := user.GetShippingList(GetShippingListReq)
if ShippingListError != nil {
	fmt.Println(ShippingListError)
}

func (User) GetStatSearch

func (user User) GetStatSearch() (GetStatSearchResponse, error)

Получить данные по методу GetStatSearch

statSearch, statSearchError := user.GetStatSearch()
if statSearchError != nil {
	fmt.Println(statSearchError)
}

func (User) SearchStartRequest

func (user User) SearchStartRequest(searchStartReq SearchStartRequest) (SearchStartResponse, error)

Получить данные по методу SearchStart

searchStartReq := avtoto.SearchStartRequest{SearchCode: mySearchCode, SearchCross: "on", Brand: dataGetBrandsByCode.Brands[0].Manuf}// Объявление запроса метода SearchStart
datasSearchStartRequest, errorSearch := user.SearchStartRequest(searchStartReq)// Вызов метода SearchStartRequest с запросом
if errorSearch != nil {
	log.Fatal(errorSearch)
}
fmt.Println("> Полученный ProcessSearchID", datasSearchStartRequest.ProcessSearchID)

func (User) UpdateCountInBasket

func (user User) UpdateCountInBasket(UpdateCountInBasketReq []UpdateCountInBasketRequest) (UpdateCountInBasketResponse, error)

Получить данные по методу UpdateCountInBasket

basketItemsUpdates := make([]avtoto.UpdateCountInBasketRequest, 1)
basketItemsUpdate, errorBasketItemUpdate := AddToBasketRes.BasketResInUpdateReq(0)
if errorBasketItemUpdate != nil {
	fmt.Println(errorBasketItemUpdate)
}
basketItemsUpdates[0] = basketItemsUpdate
basketItemsUpdates[0].NewCount = 10
UpdateCountinBasketRes, errorBasketUpdate := user.UpdateCountInBasket(basketItemsUpdates)
if errorBasketUpdate != nil {
	fmt.Println(errorBasketUpdate)
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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