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
- type AddToBasketRequest
- type AddToBasketResponse
- func (AddToBasketRes AddToBasketResponse) BasketResInCheckReq(partCount int) (CheckAvailabilityInBasketRequest, error)
- func (AddToBasketRes AddToBasketResponse) BasketResInDeleteReq(partCount int) (DeleteFromBasketRequest, error)
- func (AddToBasketRes AddToBasketResponse) BasketResInOrdersReq(partCount int) (AddToOrdersFromBasketRequest, error)
- func (AddToBasketRes AddToBasketResponse) BasketResInOrdersStatusReq(partCount int) (GetOrdersStatusRequest, error)
- func (AddToBasketRes AddToBasketResponse) BasketResInUpdateReq(partCount int) (UpdateCountInBasketRequest, error)
- func (AddToBasketRes AddToBasketResponse) Error() string
- type AddToOrdersFromBasketRequest
- type AddToOrdersFromBasketResponse
- type CheckAvailabilityInBasketRequest
- type CheckAvailabilityInBasketResponse
- type CustomIntToString
- type Date
- func (t Date) Day() string
- func (t Date) Hour() string
- func (t Date) MarshalJSON() ([]byte, error)
- func (t Date) Minute() string
- func (t Date) Month() string
- func (t Date) String() string
- func (t Date) Strings() (string, string, string)
- func (t *Date) UnmarshalJSON(s []byte) error
- func (t Date) Year() string
- type DeleteFromBasketRequest
- type DeleteFromBasketResponse
- type GetBrandsByCodeRequest
- type GetBrandsByCodeResponse
- type GetOrdersStatusRequest
- type GetOrdersStatusRequestData
- type GetOrdersStatusResponse
- type GetShippingListRequest
- type GetShippingListRequestData
- type GetShippingListResponse
- type GetStatSearchResponse
- type SearchGetParts2Request
- type SearchGetParts2Response
- func (SearchGetParts2Res SearchGetParts2Response) Error() string
- func (SearchGetParts2Res SearchGetParts2Response) LenParts() int
- func (SearchGetParts2Res SearchGetParts2Response) SearchResInBasketReq(partCount int) (AddToBasketRequest, error)
- func (SearchGetParts2Res SearchGetParts2Response) Status() string
- type SearchStartRequest
- type SearchStartResponse
- type TimeUnix
- func (t TimeUnix) Day() string
- func (t TimeUnix) Hour() string
- func (t TimeUnix) Minute() string
- func (t TimeUnix) Month() string
- func (t TimeUnix) String() string
- func (t TimeUnix) Strings() (string, string, string)
- func (t TimeUnix) Time() time.Time
- func (t TimeUnix) Unix() int64
- func (t *TimeUnix) UnmarshalJSON(s []byte) (err error)
- func (t TimeUnix) Year() string
- type UpdateCountInBasketRequest
- type UpdateCountInBasketResponse
- type User
- func (user User) AddToBasket(AddToBasketReq []AddToBasketRequest) (AddToBasketResponse, error)
- func (user User) AddToOrdersFromBasket(AddToOrdersFromBasketReq []AddToOrdersFromBasketRequest) (AddToOrdersFromBasketResponse, error)
- func (user User) CheckAvailabilityInBasket(CheckAvailabilityInBasketReq []CheckAvailabilityInBasketRequest) (CheckAvailabilityInBasketResponse, error)
- func (user User) DeleteFromBasket(DeleteFromBasketReq []DeleteFromBasketRequest) (DeleteFromBasketResponse, error)
- func (user User) GetBrandsByCode(GetBrandsByCodeReq GetBrandsByCodeRequest) (GetBrandsByCodeResponse, error)
- func (user User) GetOrdersStatus(GetOrdersStatusReq []GetOrdersStatusRequest) (GetOrdersStatusResponse, error)
- func (user User) GetShippingList(GetShippingListReq GetShippingListRequest) (GetShippingListResponse, error)
- func (user User) GetStatSearch() (GetStatSearchResponse, error)
- func (user User) SearchStartRequest(searchStartReq SearchStartRequest) (SearchStartResponse, error)
- func (user User) UpdateCountInBasket(UpdateCountInBasketReq []UpdateCountInBasketRequest) (UpdateCountInBasketResponse, error)
Constants ¶
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
type Date ¶
type Date struct {
// contains filtered or unexported fields
}
func (Date) MarshalJSON ¶
MarshalJSON is used to convert the timestamp to JSON
func (*Date) UnmarshalJSON ¶
UnmarshalJSON is used to convert the timestamp from JSON
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
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) Unix ¶
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 ¶
UnmarshalJSON is used to convert the timestamp from JSON
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) }