relynolli-server/CDEK/v2/deliveryPoints.go

123 lines
6.0 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package v2
import (
"context"
"fmt"
"net/http"
)
type DeliveryPointsResponse []DeliveryPoint
type DeliveryPointWorkTime struct {
Day int `json:"day"`
Time string `json:"time"`
}
type DeliveryPointWorkTimeExceptions struct {
Date string `json:"date"`
IsWorking bool `json:"is_working"`
}
type DeliveryPointOfficeImage struct {
Url string `json:"url"`
}
type DeliveryPointLocation struct {
CountryCode string `json:"country_code"`
RegionCode int `json:"region_code"`
Region string `json:"region,omitempty"`
CityCode int `json:"city_code"`
City string `json:"city,omitempty"`
FiasGuid string `json:"fias_guid,omitempty"`
PostalCode string `json:"postal_code,omitempty"`
Longitude float64 `json:"longitude"`
Latitude float64 `json:"latitude"`
Address string `json:"address"`
AddressFull string `json:"address_full,omitempty"`
}
type DeliveryPoint struct {
Code string `json:"code"`
Name string `json:"name,omitempty"`
AddressComment string `json:"address_comment,omitempty"`
WorkTime string `json:"work_time,omitempty"`
Phones []Phone `json:"phones,omitempty"`
Email string `json:"email,omitempty"`
Note string `json:"note,omitempty"`
Type string `json:"type"`
OwnerCode string `json:"owner_code"`
TakeOnly bool `json:"take_only"`
IsHandout bool `json:"is_handout,omitempty"`
IsReception bool `json:"is_reception,omitempty"`
IsDressingRoom bool `json:"is_dressing_room,omitempty"`
HaveCashless bool `json:"have_cashless"`
HaveCash bool `json:"have_cash"`
AllowedCod bool `json:"allowed_cod"`
Site string `json:"site,omitempty"`
WorkTimeList []DeliveryPointWorkTime `json:"work_time_list,omitempty"`
WeightMin float64 `json:"weight_min,omitempty"`
WeightMax float64 `json:"weight_max,omitempty"`
Location DeliveryPointLocation `json:"location"`
Fulfillment bool `json:"fulfillment"`
NearestStation string `json:"nearest_station,omitempty"`
NearestMetroStation string `json:"nearest_metro_station,omitempty"`
OfficeImageList []DeliveryPointOfficeImage `json:"office_image_list,omitempty"`
WorkTimeExceptions []DeliveryPointWorkTimeExceptions `json:"work_time_exceptions,omitempty"`
}
type DeliveryPointsRequest struct {
// PostalCode Почтовый индекс города, для которого необходим список офисов
PostalCode int `url:"postal_code,omitempty"`
// CityCode Код населенного пункта СДЭК (метод "Список населенных пунктов")
CityCode int `url:"city_code,omitempty"`
// Type Тип офиса, может принимать значения: «PVZ» - склады, «POSTAMAT» - постаматы, «ALL» - все.
Type string `url:"type,omitempty"`
// CountryCode Код страны в формате ISO_3166-1_alpha-2 (см. “Общероссийский классификатор стран мира”)
CountryCode string `url:"country_code,omitempty"`
// RegionCode Код региона по базе СДЭК
RegionCode int `url:"region_code,omitempty"`
// HaveCashless Наличие терминала оплаты
HaveCashless bool `url:"have_cashless,omitempty"`
// HaveCash Есть прием наличных
HaveCash bool `url:"have_cash,omitempty"`
// AllowedCod Разрешен наложенный платеж
AllowedCod bool `url:"allowed_cod,omitempty"`
// IsDressingRoom Наличие примерочной
IsDressingRoom bool `url:"is_dressing_room,omitempty"`
// WeightMax Максимальный вес в кг, который может принять офис (значения больше 0 - передаются офисы, которые принимают этот вес; 0 - офисы с нулевым весом не передаются; значение не указано - все офисы)
WeightMax bool `url:"weight_max,omitempty"`
// WeightMin Минимальный вес в кг, который принимает офис (при переданном значении будут выводиться офисы с минимальным весом до указанного значения)
WeightMin bool `url:"weight_min,omitempty"`
// Lang Локализация офиса. По умолчанию "rus"
Lang string `url:"lang,omitempty"`
// TakeOnly Является ли офис только пунктом выдачи
TakeOnly bool `url:"take_only,omitempty"`
// IsHandout Является пунктом выдачи, может принимать значения
IsHandout bool `url:"is_handout,omitempty"`
// IsReception Есть ли в офисе приём заказов
IsReception bool `url:"is_reception,omitempty"`
// FiasGuid Код города ФИАС UUID
FiasGuid string `url:"fias_guid,omitempty"`
}
func (c *clientImpl) DeliveryPoints(ctx context.Context, input *DeliveryPointsRequest) (*DeliveryPointsResponse, error) {
req, err := http.NewRequestWithContext(
ctx,
http.MethodGet,
c.buildUri("/v2/deliverypoints", input),
nil,
)
if err != nil {
return nil, err
}
accessToken, err := c.getAccessToken(ctx)
if err != nil {
return nil, err
}
req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", accessToken))
return jsonReq[DeliveryPointsResponse](req)
}