added getting current user client method
This commit is contained in:
parent
79dadbd93b
commit
25a43006d3
@ -1,5 +1,7 @@
|
||||
package models
|
||||
|
||||
import "time"
|
||||
|
||||
type ResponseGetListUsers struct {
|
||||
Result []User `json:"result"`
|
||||
Total int `json:"total"`
|
||||
@ -42,3 +44,25 @@ type User struct {
|
||||
UFDistrict *string `json:"UF_DISTRICT"`
|
||||
UFPhoneInner string `json:"UF_PHONE_INNER"`
|
||||
}
|
||||
|
||||
type ResponseGetCurrentUser struct {
|
||||
Result CurrentUser `json:"result"`
|
||||
}
|
||||
|
||||
type CurrentUser struct {
|
||||
ID string `json:"ID"`
|
||||
XMLID string `json:"XML_ID"`
|
||||
Active bool `json:"ACTIVE"`
|
||||
Name string `json:"NAME"`
|
||||
LastName string `json:"LAST_NAME"`
|
||||
Email string `json:"EMAIL"`
|
||||
LastLogin time.Time `json:"LAST_LOGIN"`
|
||||
DateRegister time.Time `json:"DATE_REGISTER"`
|
||||
IsOnline string `json:"IS_ONLINE"`
|
||||
TimestampX string `json:"TIMESTAMP_X"`
|
||||
LastActivityDate string `json:"LAST_ACTIVITY_DATE"`
|
||||
PersonalGender string `json:"PERSONAL_GENDER"`
|
||||
PersonalBirthday string `json:"PERSONAL_BIRTHDAY"`
|
||||
UFEmploymentDate string `json:"UF_EMPLOYMENT_DATE"`
|
||||
UFDepartment []int `json:"UF_DEPARTMENT"`
|
||||
}
|
||||
|
||||
@ -45,12 +45,12 @@ func NewBitrixClient(deps BitrixDeps) *Bitrix {
|
||||
}
|
||||
|
||||
// https://dev.1c-bitrix.ru/rest_help/users/user_search.php
|
||||
func (b *Bitrix) GetUserList(accesToken string, domain string) (*models.ResponseGetListUsers, error) {
|
||||
func (b *Bitrix) GetUserList(accessToken string, domain string) (*models.ResponseGetListUsers, error) {
|
||||
for {
|
||||
if b.rateLimiter.Check() {
|
||||
uri := fmt.Sprintf("https://%s/rest/user.search", domain)
|
||||
agent := b.fiberClient.Post(uri)
|
||||
agent.Set("Authorization", "Bearer "+accesToken)
|
||||
agent.Set("Authorization", "Bearer "+accessToken)
|
||||
statusCode, resBody, errs := agent.Bytes()
|
||||
if len(errs) > 0 {
|
||||
for _, err := range errs {
|
||||
@ -119,12 +119,12 @@ func (b *Bitrix) CreateWebHook(req models.WebHookRequest, domain string) (*model
|
||||
}
|
||||
}
|
||||
|
||||
func (b *Bitrix) GetListSteps(accesToken string, domain string) (*models.StepsResponse, error) {
|
||||
func (b *Bitrix) GetListSteps(accessToken string, domain string) (*models.StepsResponse, error) {
|
||||
for {
|
||||
if b.rateLimiter.Check() {
|
||||
uri := fmt.Sprintf("https://%s/rest/crm.status.list", domain)
|
||||
agent := b.fiberClient.Post(uri)
|
||||
agent.Set("Authorization", "Bearer "+accesToken)
|
||||
agent.Set("Authorization", "Bearer "+accessToken)
|
||||
requestBody := map[string]interface{}{
|
||||
"filter": map[string]string{
|
||||
"ENTITY_ID": "STATUS",
|
||||
@ -161,12 +161,12 @@ func (b *Bitrix) GetListSteps(accesToken string, domain string) (*models.StepsRe
|
||||
}
|
||||
}
|
||||
|
||||
func (b *Bitrix) GetListPipelines(entityTypeID models.IntegerEntityType, accesToken string, domain string) (*models.CategoryResponse, error) {
|
||||
func (b *Bitrix) GetListPipelines(entityTypeID models.IntegerEntityType, accessToken string, domain string) (*models.CategoryResponse, error) {
|
||||
for {
|
||||
if b.rateLimiter.Check() {
|
||||
uri := fmt.Sprintf("https://%s/rest/crm.category.list", domain)
|
||||
agent := b.fiberClient.Post(uri)
|
||||
agent.Set("Authorization", "Bearer "+accesToken)
|
||||
agent.Set("Authorization", "Bearer "+accessToken)
|
||||
agent.Set("Content-Type", "application/json")
|
||||
requestBody := map[string]interface{}{
|
||||
"entityTypeId": entityTypeID,
|
||||
@ -199,7 +199,7 @@ func (b *Bitrix) GetListPipelines(entityTypeID models.IntegerEntityType, accesTo
|
||||
}
|
||||
}
|
||||
|
||||
func (b *Bitrix) GetListFields(fieldType models.FieldsType, accessToken string, domain string) (interface{}, error) {
|
||||
func (b *Bitrix) GetListFields(fieldType models.FieldsType, accessToken string, domain string) (*models.FieldsResponse, error) {
|
||||
for {
|
||||
if b.rateLimiter.Check() {
|
||||
switch fieldType {
|
||||
@ -234,7 +234,7 @@ func (b *Bitrix) GetListFields(fieldType models.FieldsType, accessToken string,
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return listFields, nil
|
||||
return &listFields, nil
|
||||
|
||||
case models.FieldTypeLead:
|
||||
fullURL := fmt.Sprintf("https://%s/rest/crm.lead.userfield.list", domain)
|
||||
@ -267,7 +267,7 @@ func (b *Bitrix) GetListFields(fieldType models.FieldsType, accessToken string,
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return listFields, nil
|
||||
return &listFields, nil
|
||||
|
||||
case models.FieldTypeContact:
|
||||
fullURL := fmt.Sprintf("https://%s/rest/crm.contact.userfield.list", domain)
|
||||
@ -300,7 +300,7 @@ func (b *Bitrix) GetListFields(fieldType models.FieldsType, accessToken string,
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return listFields, nil
|
||||
return &listFields, nil
|
||||
case models.FieldTypeDeal:
|
||||
fullURL := fmt.Sprintf("https://%s/rest/crm.deal.userfield.list", domain)
|
||||
agent := b.fiberClient.Post(fullURL)
|
||||
@ -332,7 +332,7 @@ func (b *Bitrix) GetListFields(fieldType models.FieldsType, accessToken string,
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return listFields, nil
|
||||
return &listFields, nil
|
||||
}
|
||||
}
|
||||
time.Sleep(b.rateLimiter.Interval)
|
||||
@ -342,3 +342,37 @@ func (b *Bitrix) GetListFields(fieldType models.FieldsType, accessToken string,
|
||||
func (b *Bitrix) GetListTags() {
|
||||
|
||||
}
|
||||
|
||||
func (b *Bitrix) GetCurrentUser(accessToken string, domain string) (*models.ResponseGetCurrentUser, error) {
|
||||
for {
|
||||
if b.rateLimiter.Check() {
|
||||
uri := fmt.Sprintf("https://%s/rest/user.current", domain)
|
||||
agent := b.fiberClient.Post(uri)
|
||||
agent.Set("Authorization", "Bearer "+accessToken)
|
||||
|
||||
statusCode, resBody, errs := agent.Bytes()
|
||||
if len(errs) > 0 {
|
||||
for _, err := range errs {
|
||||
b.logger.Error("error sending request in GetCurrentUser", zap.Error(err))
|
||||
}
|
||||
return nil, fmt.Errorf("request GetCurrentUser failed: %v", errs[0])
|
||||
}
|
||||
|
||||
if statusCode != fiber.StatusOK {
|
||||
errorMessage := fmt.Sprintf("error GetCurrentUser statusCode - %d, respBody - %s", statusCode, string(resBody))
|
||||
b.logger.Error(errorMessage, zap.Int("status", statusCode))
|
||||
return nil, fmt.Errorf(errorMessage)
|
||||
}
|
||||
|
||||
var result models.ResponseGetCurrentUser
|
||||
err := json.Unmarshal(resBody, &result)
|
||||
if err != nil {
|
||||
b.logger.Error("error unmarshal CurrentUser", zap.Error(err))
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &result, nil
|
||||
}
|
||||
time.Sleep(b.rateLimiter.Interval)
|
||||
}
|
||||
}
|
||||
|
||||
@ -22,7 +22,7 @@ func TestGetListFields(t *testing.T) {
|
||||
RateLimiter: lim,
|
||||
})
|
||||
|
||||
result, err := b.GetListSteps("9213f0660000071b00717f92000000010000070cbbcdb7c07c2a5e9668d3f7b04c4f8f", "b24-ld76ub.bitrix24.ru")
|
||||
result, err := b.GetCurrentUser("9213f0660000071b00717f92000000010000070cbbcdb7c07c2a5e9668d3f7b04c4f8f", "b24-ld76ub.bitrix24.ru")
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user