Documentation ¶
Index ¶
- Constants
- Variables
- type ClientOption
- func OptionDisableCookie(yes bool) ClientOption
- func OptionDisablekeepAlive(yes bool) ClientOption
- func OptionEnableAcceptEncodingGzip(yes bool) ClientOption
- func OptionForceAttemptHTTP2(yes bool) ClientOption
- func OptionInsecureSkipVerify(yes bool) ClientOption
- func OptionSetClientHTTP(client *http.Client) ClientOption
- func OptionSetXUserID(userID int) ClientOption
- func OptionsSetHTTPTransport(tr http.RoundTripper) ClientOption
- type ClientV3
- func (c *ClientV3) Close()
- func (c *ClientV3) Do(req *http.Request) (*http.Response, error)
- func (c ClientV3) DoCtxRequestAPI(ctx context.Context, method, endpoint string, search QueryParams, ...) (*http.Response, error)
- func (c ClientV3) DoRequestAPI(method, endpoint string, search QueryParams, body io.Reader) (*http.Response, error)
- func (c *ClientV3) SetOptions(opts ...ClientOption)
- func (c *ClientV3) SetToken(token string)
- func (c *ClientV3) UploadFile(filename string, fileReader io.Reader) (*http.Response, error)
- type DateOnly
- type Meta
- type Pagination
- type QueryBuildingFunc
- type QueryParams
- type Response
Constants ¶
const ISO8601 = `2006-01-02T15:04:05-07:00`
ISO8601 - формат даты для api
Variables ¶
var ( DefaultTransport = &http.Transport{ Proxy: http.ProxyFromEnvironment, MaxIdleConns: cpus, MaxConnsPerHost: cpus, MaxIdleConnsPerHost: cpus, } DefaultClient = &http.Client{ Transport: DefaultTransport, Timeout: time.Minute, } // DefaultHeaders - заголовок по умолчанию - версия go. Используется при инициализации клиента в NewClient. DefaultHeaders = http.Header{"User-Agent": {runtime.Version()}} )
DefaultClient - клиент по умаолчанию для API.
var ErrUnknownCompressionMethod = errors.New("unknown compression method")
ErrUnknownCompressionMethod - неизвестное значение в заголовке "Content-Encoding" не является фатальной ошибкой, должна возвращаться вместе с http.Response.Body, чтобы пользователь мог реализовать свой метод обработки сжатого сообщения
Functions ¶
This section is empty.
Types ¶
type ClientOption ¶
type ClientOption func(*ClientV3)
ClientOption - функция применения настроект
func OptionDisableCookie ¶ added in v3.4.0
func OptionDisableCookie(yes bool) ClientOption
func OptionDisablekeepAlive ¶ added in v3.4.0
func OptionDisablekeepAlive(yes bool) ClientOption
func OptionEnableAcceptEncodingGzip ¶
func OptionEnableAcceptEncodingGzip(yes bool) ClientOption
OptionEnableAcceptEncodingGzip - доабвить заголов Accept-Encoding=gzip к запросу т.е. объекм трафика на хуках может быть большим, то удобно запрашивать сжатый ответ
func OptionForceAttemptHTTP2 ¶ added in v3.4.0
func OptionForceAttemptHTTP2(yes bool) ClientOption
func OptionInsecureSkipVerify ¶
func OptionInsecureSkipVerify(yes bool) ClientOption
OptionInsecureSkipVerify - переключение флага bool в http.Client.Transport.TLSClientConfig.InsecureSkipVerify - отключать или нет проверку сертификтов Если домен использует самоподписанные сертифика, то удобно включать на время отладки и разработки
func OptionSetClientHTTP ¶
func OptionSetClientHTTP(client *http.Client) ClientOption
OptionSetClientHTTP - установить свой экземпляр httpClient
func OptionSetXUserID ¶
func OptionSetXUserID(userID int) ClientOption
OptionSetXUserID - добавить заголовок "X-User-Id" - запросы будут выполнятся от имени указанного пользователя. Если передано значение <= 0, то заголовок будет удален
func OptionsSetHTTPTransport ¶
func OptionsSetHTTPTransport(tr http.RoundTripper) ClientOption
OptionsSetHTTPTransport - установить своб настройку http.Transport
type ClientV3 ¶
type ClientV3 struct {
// contains filtered or unexported fields
}
ClientV3 - клиент
func NewClient ¶
func NewClient(domain, token string, opts ...ClientOption) (c *ClientV3)
NewClient - обертка над http.Client для удобной работы с API v3
func (*ClientV3) Do ¶
Do - http.Do + установка обязательных заголовков + декомпрессия ответа, если ответ сжат
func (ClientV3) DoCtxRequestAPI ¶
func (c ClientV3) DoCtxRequestAPI(ctx context.Context, method, endpoint string, search QueryParams, body io.Reader) (*http.Response, error)
DoRequestAPI - т.к. в v3 параметры запроса для GET (json маршализируется и будет иметь вид: "*?{params}=")
func (ClientV3) DoRequestAPI ¶
func (c ClientV3) DoRequestAPI(method, endpoint string, search QueryParams, body io.Reader) (*http.Response, error)
DoRequestAPI - т.к. в v3 параметры запроса для GET (json маршализируется и будет иметь вид: "*?{params}=")
func (*ClientV3) SetOptions ¶
func (c *ClientV3) SetOptions(opts ...ClientOption)
SetOptions - применить опции
type DateOnly ¶ added in v3.4.0
type DateOnly struct { ContentType string `json:"contentType"` Day int `json:"day"` Month int `json:"month"` Year int `json:"year"` }
func NewDateOnly ¶ added in v3.4.0
type Meta ¶
type Meta struct { Errors []struct { Fields any `json:"field"` Message any `json:"message"` } `json:"errors"` Status int `json:"status"` Pagination Pagination `json:"pagination"` }
Meta - metainfo
type Pagination ¶
type Pagination struct { Count int64 `json:"count"` Limit int64 `json:"limit"` CurrentPage int64 `json:"currentPage"` HasMoreNext bool `json:"hasMoreNext"` HasMorePrev bool `json:"hasMorePrev"` }
Pagination - пагинация
func (Pagination) MarshalJSON ¶
func (p Pagination) MarshalJSON() ([]byte, error)
MarshalJSON - json.Marshaler TODO: вообще обратный маршалинг на практике не нужен, поэтому нужно доделать позже
func (*Pagination) UnmarshalJSON ¶
func (p *Pagination) UnmarshalJSON(b []byte) (err error)
UnmarshalJSON - json.Unmarshaler
type QueryBuildingFunc ¶
type QueryBuildingFunc func(QueryParams)
QueryBuildingFunc - функция посттроения тела запроса (обычно json для post запроса)
func SetEntityArray ¶
func SetEntityArray(field string, ents ...QueryBuildingFunc) QueryBuildingFunc
SetEntityArray - добавление массива сущностей в поле (например список аудиторов)
func SetEntityField ¶
func SetEntityField(fieldName string, contentType string, value any) (qbf QueryBuildingFunc)
SetEntityField - добавить поле с сущностью
func SetRawField ¶
func SetRawField(field string, value any) QueryBuildingFunc
SetRawField - добавить поле с простым типом значения (string, int, etc.)
type QueryParams ¶
QueryParams - параметры запроса
func BuildQueryParams ¶
func BuildQueryParams(opts ...QueryBuildingFunc) (qp QueryParams)
BuildQueryParams - сборка объекта для запроса
func CreateEnity ¶
func CreateEnity(contentType string, value any) (qp QueryParams)
CreateEnity - создать базовую сущность в формате "Мегаплана" ! могут быть не описаны крайние или редкоиспользуемые типы
func (QueryParams) PrettyPrintJSON ¶
func (qp QueryParams) PrettyPrintJSON(w io.Writer) error
PrettyPrintJSON - SetIndent для читабельного вывода
func (QueryParams) QueryEscape ¶
func (qp QueryParams) QueryEscape() string
QueryEscape - urlencode для запроса в строке параметрво
func (QueryParams) ToJSON ¶
func (qp QueryParams) ToJSON() ([]byte, error)
ToJSON - маршализация параметров в JSON
type Response ¶
type Response[T any] struct { Meta Meta `json:"meta"` // metainfo ответа Data T `json:"data"` // поле для декодирования присвоенной структуры }
Response - ответ API
func ParseResponse ¶
ParseResponse - utility-функция для упрощения чтения ответа API