https://web.archive.org/web/20120407214017/https://dev.twitter.com/docs/api/1/get/statuses/friends
(c *fiber.Ctx)
| 594 | |
| 595 | // https://web.archive.org/web/20120407214017/https://dev.twitter.com/docs/api/1/get/statuses/friends |
| 596 | func GetStatusesFollows(c *fiber.Ctx) error { |
| 597 | // auth |
| 598 | _, pds, _, oauthToken, err := GetAuthFromReq(c) |
| 599 | if err != nil { |
| 600 | return MissingAuth(c, err) |
| 601 | } |
| 602 | |
| 603 | // lets go get our user data |
| 604 | |
| 605 | actor := c.FormValue("user_id") |
| 606 | if actor == "" { |
| 607 | actor = c.FormValue("screen_name") |
| 608 | if actor == "" { |
| 609 | return ReturnError(c, "No user was specified", 195, 403) |
| 610 | } |
| 611 | } else { |
| 612 | id, err := strconv.ParseInt(actor, 10, 64) |
| 613 | if err != nil { |
| 614 | return ReturnError(c, "Invalid ID format", 195, 403) |
| 615 | } |
| 616 | actorPtr, err := bridge.TwitterIDToBlueSky(&id) |
| 617 | if err != nil { |
| 618 | return ReturnError(c, "ID not found.", 144, fiber.StatusNotFound) |
| 619 | } |
| 620 | if actorPtr == nil { |
| 621 | return ReturnError(c, "ID not found.", 144, fiber.StatusNotFound) |
| 622 | } |
| 623 | actor = *actorPtr |
| 624 | } |
| 625 | |
| 626 | // fetch follows |
| 627 | followers, err := blueskyapi.GetFollows(*pds, *oauthToken, "", actor) |
| 628 | if err != nil { |
| 629 | fmt.Println("Error:", err) |
| 630 | return HandleBlueskyError(c, err.Error(), "app.bsky.graph.getFollows", GetStatusesFollows) |
| 631 | } |
| 632 | |
| 633 | // convert users into twitter format |
| 634 | // This right now doesn't act on pagination, i'll figure that out later |
| 635 | var actorsToLookUp []string |
| 636 | for _, user := range followers.Followers { |
| 637 | actorsToLookUp = append(actorsToLookUp, user.DID) |
| 638 | } |
| 639 | |
| 640 | twitterUsers, err := blueskyapi.GetUsersInfo(*pds, *oauthToken, actorsToLookUp, false) |
| 641 | if err != nil { |
| 642 | fmt.Println("Error:", err) |
| 643 | return HandleBlueskyError(c, err.Error(), "app.bsky.actor.getProfiles", GetStatusesFollows) |
| 644 | } |
| 645 | |
| 646 | // Convert []*bridge.TwitterUser to []bridge.TwitterUser |
| 647 | var twitterUsersConverted []bridge.TwitterUser |
| 648 | for _, user := range twitterUsers { |
| 649 | twitterUsersConverted = append(twitterUsersConverted, *user) |
| 650 | } |
| 651 | |
| 652 | return EncodeAndSend(c, bridge.TwitterUsers{ |
| 653 | Users: twitterUsersConverted, |
nothing calls this directly
no test coverage detected