amo/contacts.go

65 lines
1.1 KiB
Go
Raw Normal View History

2024-05-30 11:43:10 +03:00
package amo
import "surdeus.su/core/amo/contacts"
import "surdeus.su/core/ss/urlenc"
import "errors"
import "surdeus.su/core/amo/api"
2024-05-30 11:43:10 +03:00
import "fmt"
func (client *Client) GetContact(
2024-05-31 14:32:18 +03:00
contactID int,
2024-05-30 11:43:10 +03:00
opts ...urlenc.Builder,
) (*contacts.Contact, error) {
deal := new(contacts.Contact)
res := fmt.Sprintf(
"/api/v4/contacts/%d?%s",
2024-05-31 14:32:18 +03:00
contactID,
2024-05-30 11:43:10 +03:00
urlenc.Join(opts...).Encode(),
)
err := client.API.Get(res, deal)
if err != nil {
return nil, err
}
return deal, nil
}
// Get list of contacts.
func (client *Client) GetContacts(
opts ...urlenc.Builder,
) ([]contacts.Contact, error) {
res := fmt.Sprintf(
"/api/v4/contacts?%s",
urlenc.Join(opts...).Encode(),
)
ret := []contacts.Contact{}
for {
var cts contacts.Contacts
err := client.API.Get(res, &cts)
if err != nil {
if errors.Is(err, api.ErrNoContent) {
break
}
return nil, err
}
ret = append(ret, cts.Embedded.Contacts...)
if cts.Links.Next.Href == "" {
break
}
res = cts.Links.Next.Href
}
return ret, nil
}
2024-05-30 11:43:10 +03:00
func (client *Client) UpdateContact(contact *contacts.Contact) error {
return client.updateEntity(
"/api/v4/contacts",
2024-05-31 14:32:18 +03:00
contact.ID,
2024-05-30 11:43:10 +03:00
contact,
)
}