Создать пакет на Go для работы с API http/json
Документация по API имеется.
Требуется реализовать 3 вызова из этого API (не все что описано в документации)
Обратите внимание, документация приведена для языка PHP,
примеры в документации приведены на языке PHP.
Необходимо реализовать
Все нужные структуры данных для передачи параметров и получения результатов,
Подпись запроса приватным ключом.
Отправку запросов по http, получение ответов,
Обработку (парзинг) ответов,
Формат передаваемых и принимаемых данных - JSON
Дополнительные требования к обработке параметров - необходимо в дополнение к распарзенному ответу возвращать полную информацию о собственно выполненном http-запросе
Пример
func (adaptor *Adaptor)FuncName(params RequestParamType) (ResponseParamType, RawResponse) {
}
Здесь RequestParamType, ResponseParamType - это отправляемые и получаемые по http данные.
А RawResponse это данные в сыром (не распарзенном) виде
type RawResponse struct {
Err error
Sent bool // установить в false если возврат из функции произошел ДО выполнения http-запроса (например, не удалось подготовить параметры), установить в true если возврат из функции произошел после http-вызова, независимо от того была ошибка или нет
Request struct {
Url string
Body []byte
Method string // POST, GET
}
Response struct {
StatusCode int
Body []byte
}
}
Использовать страндартные встроенные в Go библиотеки для работы с http, json
Использовать библиотеку логирования
zap package - go.uber.org/zap - Go Packages
логировать НЕ в Sugger
Пример:
type Adaptor struct {
log *zap.Logger
}
func (adaptor *Adaptor)FunctionName(requestParam RequestParamType) (ResponseParamType, RawResponse) {
l:= adaptor.log.Named("FunctionName")
l = l.With(zap.Object("requestParam", requestParam))
....
if err != nil {
l.Error("Can not parse response", zap.Error(err))
}
}
Реальные тесты на боевом сервере проводить не нужно
Сроки завершения работ
к вечеру понедельника 13 июня 2022 года