amocrm/amoClients/amo.go

118 lines
3.7 KiB
Go
Raw Normal View History

2024-04-04 18:02:10 +00:00
package amoClients
import (
"amocrm/models/amo"
2024-04-04 18:32:56 +00:00
"encoding/json"
"errors"
"fmt"
2024-04-04 18:02:10 +00:00
"github.com/gofiber/fiber/v2"
"go.uber.org/zap"
)
type Amo struct {
urlUserList string
urlCreateWebHook string
urlDeleteWebHook string
urlGetListSteps string
urlGetListFields string
urlGetListTags string
fiberClient *fiber.Client
logger *zap.Logger
}
type AmoDeps struct {
UrlUserList string
UrlCreateWebHook string
UrlDeleteWebHook string
UrlGetListSteps string
UrlGetListFields string
UrlGetListTags string
FiberClient *fiber.Client
Logger *zap.Logger
}
func NewAmoClient(deps AmoDeps) *Amo {
if deps.FiberClient == nil {
deps.FiberClient = fiber.AcquireClient()
}
return &Amo{
urlUserList: deps.UrlUserList,
urlCreateWebHook: deps.UrlCreateWebHook,
urlDeleteWebHook: deps.UrlDeleteWebHook,
urlGetListSteps: deps.UrlGetListSteps,
urlGetListFields: deps.UrlGetListFields,
urlGetListTags: deps.UrlGetListTags,
fiberClient: deps.FiberClient,
logger: deps.Logger,
}
}
2024-04-04 18:32:56 +00:00
// todo тут наверное ще ключ апи нужно передавать надо будет поразмыслить
2024-04-04 18:02:10 +00:00
// https://www.amocrm.ru/developers/content/crm_platform/users-api#users-list
2024-04-04 18:32:56 +00:00
func (a *Amo) GetUserList(req amo.RequestGetListUsers) (*amo.ResponseGetListUsers, error) {
url := fmt.Sprintf("%s?page=%d&limit=%d&with=%s", a.urlUserList, req.Page, req.Limit, req.With)
2024-04-04 18:02:10 +00:00
2024-04-04 18:32:56 +00:00
resp := a.fiberClient.Get(url)
statusCode, response, errs := resp.Bytes()
if errs != nil {
a.logger.Error("error GetUserList:", zap.Error(errs[0]))
return nil, errs[0]
}
if statusCode != fiber.StatusOK {
switch statusCode {
case fiber.StatusForbidden:
err := errors.New("error GetUserList StatusForbidden - 403")
a.logger.Error("error GetUserList:", zap.Error(err))
return nil, err
case fiber.StatusUnauthorized:
err := errors.New("error GetUserList StatusUnauthorized - 401")
a.logger.Error("error GetUserList:", zap.Error(err))
return nil, err
default:
err := errors.New(fmt.Sprintf("error GetUserList statusCode- %d", statusCode))
a.logger.Error("error GetUserList:", zap.Error(err))
return nil, err
}
}
var userListResponse amo.ResponseGetListUsers
err := json.Unmarshal(response, &userListResponse)
if err != nil {
a.logger.Error("error marshal ResponseGetListUsers:", zap.Error(err))
return nil, err
}
return &userListResponse, nil
2024-04-04 18:02:10 +00:00
}
// https://www.amocrm.ru/developers/content/oauth/step-by-step
func (a *Amo) CreateWebHook() {
}
// https://www.amocrm.ru/developers/content/oauth/step-by-step#%D0%A5%D1%83%D0%BA-%D0%BE%D0%B1-%D0%BE%D1%82%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B8-%D0%B8%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D1%86%D0%B8%D0%B8
func (a *Amo) DeleteWebHook() {
}
// https://www.amocrm.ru/developers/content/crm_platform/leads_pipelines#%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA-%D1%81%D1%82%D0%B0%D1%82%D1%83%D1%81%D0%BE%D0%B2-%D0%B2%D0%BE%D1%80%D0%BE%D0%BD%D0%BA%D0%B8-%D1%81%D0%B4%D0%B5%D0%BB%D0%BE%D0%BA
// GET /api/v4/leads/pipelines/{pipeline_id}/statuses
func (a *Amo) GetListSteps() (amo.ResponseGetListSteps, error) {
return amo.ResponseGetListSteps{}, nil
}
// https://www.amocrm.ru/developers/content/crm_platform/custom-fields#%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA-%D0%BF%D0%BE%D0%BB%D0%B5%D0%B9-%D1%81%D1%83%D1%89%D0%BD%D0%BE%D1%81%D1%82%D0%B8
func (a *Amo) GetListFields() (amo.ResponseGetListFields, error) {
return amo.ResponseGetListFields{}, nil
}
// https://www.amocrm.ru/developers/content/crm_platform/tags-api#%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA-%D1%82%D0%B5%D0%B3%D0%BE%D0%B2-%D0%B4%D0%BB%D1%8F-%D1%81%D1%83%D1%89%D0%BD%D0%BE%D1%81%D1%82%D0%B8
func (a *Amo) GetListTags() (amo.ResponseGetListTags, error) {
return amo.ResponseGetListTags{}, nil
}