GetCrawlerUser gets the crawler API user data for the current authenticated user
(accessToken string)
| 600 | |
| 601 | // GetCrawlerUser gets the crawler API user data for the current authenticated user |
| 602 | func (c *Client) GetCrawlerUser(accessToken string) (*DashboardCrawlerUserData, error) { |
| 603 | req, err := http.NewRequest(http.MethodGet, c.APIURL+"/1/crawler/user", nil) |
| 604 | if err != nil { |
| 605 | return nil, err |
| 606 | } |
| 607 | |
| 608 | c.setAPIHeaders(req, accessToken) |
| 609 | |
| 610 | resp, err := c.client.Do(req) |
| 611 | if err != nil { |
| 612 | return nil, err |
| 613 | } |
| 614 | defer resp.Body.Close() |
| 615 | |
| 616 | if resp.StatusCode != http.StatusOK { |
| 617 | var errResp DashboardCrawlerErrorResponse |
| 618 | if err := json.NewDecoder(resp.Body).Decode(&errResp); err != nil { |
| 619 | return nil, fmt.Errorf("failed to parse crawler response: %w", err) |
| 620 | } |
| 621 | |
| 622 | if len(errResp.Errors) == 0 { |
| 623 | return nil, fmt.Errorf("failed to get crawler user data: unknown crawler error") |
| 624 | } |
| 625 | |
| 626 | crawlerError := errResp.Errors[0] |
| 627 | |
| 628 | message := crawlerError.Title |
| 629 | if crawlerError.Detail != nil && *crawlerError.Detail != "" { |
| 630 | message = *crawlerError.Detail |
| 631 | } |
| 632 | |
| 633 | return nil, fmt.Errorf("failed to get crawler user data: %s", message) |
| 634 | } |
| 635 | |
| 636 | var userResp DashboardCrawlerUserResponse |
| 637 | if err := json.NewDecoder(resp.Body).Decode(&userResp); err != nil { |
| 638 | return nil, fmt.Errorf("failed to parse crawler response: %w", err) |
| 639 | } |
| 640 | |
| 641 | return &userResp.Data, nil |
| 642 | } |
| 643 | |
| 644 | func (c *Client) setAPIHeaders(req *http.Request, accessToken string) { |
| 645 | req.Header.Set("Authorization", "Bearer "+accessToken) |