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