1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- package amo
- import "surdeus.su/core/amo/api"
- import "surdeus.su/core/amo/leads"
- import "surdeus.su/core/ss/urlenc"
- import "errors"
- import "fmt"
- //import "log"
- // Get list of leads.
- func (client *Client) GetLeads(
- opts ...urlenc.Builder,
- ) ([]Lead, NextFunc[[]Lead], error) {
- res := fmt.Sprintf(
- "/api/v4/leads?%s",
- urlenc.Join(opts...).Encode(),
- )
- return client.GetLeadsByURL(res)
- }
- func (client *Client) GetLeadsByURL(
- u string,
- ) ([]Lead, NextFunc[[]Lead], error) {
- var fn NextFunc[[]Lead]
- lds := leads.Leads{}
- err := client.API.Get(u, &lds)
- if err != nil {
- // Check for empty.
- if errors.Is(err, api.ErrNoContent) {
- return nil, nil, nil
- }
- // Some other error.
- return nil, nil, err
- }
- nextHref := lds.Links.Next.Href
- if nextHref != "" {
- fn = MakeNextFunc(
- nextHref,
- client.GetLeadsByURL,
- )
- }
- return lds.Embedded.Leads, fn, nil
- }
- // Get lead with the specified ID.
- func (client *Client) GetLead(
- leadID int,
- opts ...urlenc.Builder,
- ) (*leads.Lead, error) {
- deal := new(leads.Lead)
- resource := fmt.Sprintf(
- "/api/v4/leads/%d?%s",
- leadID,
- urlenc.Join(opts...).Encode(),
- )
- err := client.API.Get(resource, deal)
- return deal, err
- }
- func (client *Client) UpdateLead(
- lead *leads.Lead,
- ) error {
- return client.updateEntity("/api/v4/leads", lead.ID, lead)
- }
|