lists.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package anaconda
  2. import (
  3. "net/url"
  4. "strconv"
  5. "strings"
  6. )
  7. // CreateList implements /lists/create.json
  8. func (a TwitterApi) CreateList(name, description string, v url.Values) (list List, err error) {
  9. v = cleanValues(v)
  10. v.Set("name", name)
  11. v.Set("description", description)
  12. response_ch := make(chan response)
  13. a.queryQueue <- query{a.baseUrl + "/lists/create.json", v, &list, _POST, response_ch}
  14. return list, (<-response_ch).err
  15. }
  16. // AddUserToList implements /lists/members/create.json
  17. func (a TwitterApi) AddUserToList(screenName string, listID int64, v url.Values) (users []User, err error) {
  18. v = cleanValues(v)
  19. v.Set("list_id", strconv.FormatInt(listID, 10))
  20. v.Set("screen_name", screenName)
  21. var addUserToListResponse AddUserToListResponse
  22. response_ch := make(chan response)
  23. a.queryQueue <- query{a.baseUrl + "/lists/members/create.json", v, &addUserToListResponse, _POST, response_ch}
  24. return addUserToListResponse.Users, (<-response_ch).err
  25. }
  26. // AddMultipleUsersToList implements /lists/members/create_all.json
  27. func (a TwitterApi) AddMultipleUsersToList(screenNames []string, listID int64, v url.Values) (list List, err error) {
  28. v = cleanValues(v)
  29. v.Set("list_id", strconv.FormatInt(listID, 10))
  30. v.Set("screen_name", strings.Join(screenNames, ","))
  31. response_ch := make(chan response)
  32. a.queryQueue <- query{a.baseUrl + "/lists/members/create_all.json", v, &list, _POST, response_ch}
  33. r := <-response_ch
  34. return list, r.err
  35. }
  36. // GetListsOwnedBy implements /lists/ownerships.json
  37. // screen_name, count, and cursor are all optional values
  38. func (a TwitterApi) GetListsOwnedBy(userID int64, v url.Values) (lists []List, err error) {
  39. v = cleanValues(v)
  40. v.Set("user_id", strconv.FormatInt(userID, 10))
  41. var listResponse ListResponse
  42. response_ch := make(chan response)
  43. a.queryQueue <- query{a.baseUrl + "/lists/ownerships.json", v, &listResponse, _GET, response_ch}
  44. return listResponse.Lists, (<-response_ch).err
  45. }
  46. func (a TwitterApi) GetListTweets(listID int64, includeRTs bool, v url.Values) (tweets []Tweet, err error) {
  47. v = cleanValues(v)
  48. v.Set("list_id", strconv.FormatInt(listID, 10))
  49. v.Set("include_rts", strconv.FormatBool(includeRTs))
  50. response_ch := make(chan response)
  51. a.queryQueue <- query{a.baseUrl + "/lists/statuses.json", v, &tweets, _GET, response_ch}
  52. return tweets, (<-response_ch).err
  53. }
  54. // GetList implements /lists/show.json
  55. func (a TwitterApi) GetList(listID int64, v url.Values) (list List, err error) {
  56. v = cleanValues(v)
  57. v.Set("list_id", strconv.FormatInt(listID, 10))
  58. response_ch := make(chan response)
  59. a.queryQueue <- query{a.baseUrl + "/lists/show.json", v, &list, _GET, response_ch}
  60. return list, (<-response_ch).err
  61. }
  62. func (a TwitterApi) GetListTweetsBySlug(slug string, ownerScreenName string, includeRTs bool, v url.Values) (tweets []Tweet, err error) {
  63. v = cleanValues(v)
  64. v.Set("slug", slug)
  65. v.Set("owner_screen_name", ownerScreenName)
  66. v.Set("include_rts", strconv.FormatBool(includeRTs))
  67. response_ch := make(chan response)
  68. a.queryQueue <- query{a.baseUrl + "/lists/statuses.json", v, &tweets, _GET, response_ch}
  69. return tweets, (<-response_ch).err
  70. }