amo/contacts.go
2024-05-31 22:19:41 +05:00

66 lines
1.2 KiB
Go

package amo
import "surdeus.su/core/amo/contacts"
import "surdeus.su/core/ss/urlenc"
import "errors"
import "surdeus.su/core/amo/api"
import "fmt"
//import "log"
func (client *Client) GetContact(
contactID int,
opts ...urlenc.Builder,
) (*contacts.Contact, error) {
deal := new(contacts.Contact)
res := fmt.Sprintf(
"/api/v4/contacts/%d?%s",
contactID,
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
}
func (client *Client) UpdateContact(contact *contacts.Contact) error {
return client.updateEntity(
"/api/v4/contacts",
contact.ID,
contact,
)
}