amo/companies.go

82 lines
1.4 KiB
Go

package amo
import "surdeus.su/core/ss/urlenc"
import "surdeus.su/core/amo/companies"
import "surdeus.su/core/amo/api"
import "errors"
import "fmt"
func (client *Client) GetCompany(
companyID int,
opts ...urlenc.Builder,
) (*companies.Company, error) {
deal := new(companies.Company)
resource := fmt.Sprintf(
"/api/v4/companies/%d?%s",
companyID,
urlenc.Join(opts...),
)
err := client.API.Get(resource, deal)
if err != nil {
return nil, err
}
return deal, nil
}
// Get list of leads.
func (client *Client) GetCompanies(
opts ...urlenc.Builder,
) ([]companies.Company, error) {
res := fmt.Sprintf(
"/api/v4/companies?%s",
urlenc.Join(opts...).Encode(),
)
ret := []companies.Company{}
for {
var coms companies.Companies
err := client.API.Get(res, &coms)
if err != nil {
if errors.Is(err, api.ErrNoContent) {
break
}
return nil, err
}
ret = append(ret, coms.Embedded.Companies...)
if coms.Links.Next.Href == "" {
break
}
res = coms.Links.Next.Href
}
return ret, nil
}
func (client *Client) UpdateCompany(
company *companies.Company,
) error {
return client.updateEntity(
"/api/v4/companies",
company.ID,
company,
)
}
func (client *Client) UpdateCompanies(
cs []companies.Company,
) error {
//ret := []companies.Company{}
err := client.API.Patch(
"/api/v4/companies",
cs,
nil,
)
if err != nil {
return err
}
return nil
}