1: <?php
2: namespace Ctct\Services;
3:
4: use Ctct\Util\RestClient;
5: use Ctct\Util\Config;
6: use Ctct\Components\Contacts\ContactList;
7: use Ctct\Components\Contacts\Contact;
8: use Ctct\Components\ResultSet;
9:
10: 11: 12: 13: 14: 15:
16: class ListService extends BaseService
17: {
18: 19: 20: 21: 22: 23:
24: public function getLists($accessToken, array $params = array())
25: {
26: $baseUrl = Config::get('endpoints.base_url') . Config::get('endpoints.lists');
27: $url = $this->buildUrl($baseUrl, $params);
28: $response = parent::getRestClient()->get($url, parent::getHeaders($accessToken));
29:
30: $lists = array();
31: foreach (json_decode($response->body, true) as $contact) {
32: $lists[] = ContactList::create($contact);
33: }
34: return $lists;
35: }
36:
37: 38: 39: 40: 41: 42:
43: public function addList($accessToken, ContactList $list)
44: {
45: $baseUrl = Config::get('endpoints.base_url') . Config::get('endpoints.lists');
46: $url = $this->buildUrl($baseUrl);
47: $response = parent::getRestClient()->post($url, parent::getHeaders($accessToken), $list->toJson());
48: return ContactList::create(json_decode($response->body, true));
49: }
50:
51: 52: 53: 54: 55: 56:
57: public function updateList($accessToken, ContactList $list)
58: {
59: $baseUrl = Config::get('endpoints.base_url') . sprintf(Config::get('endpoints.list'), $list->id);
60: $url = $this->buildUrl($baseUrl);
61: $response = parent::getRestClient()->put($url, parent::getHeaders($accessToken), $list->toJson());
62: return ContactList::create(json_decode($response->body, true));
63: }
64:
65: 66: 67: 68: 69: 70:
71: public function getList($accessToken, $list_id)
72: {
73: $baseUrl = Config::get('endpoints.base_url') . sprintf(Config::get('endpoints.list'), $list_id);
74: $url = $this->buildUrl($baseUrl);
75: $response = parent::getRestClient()->get($url, parent::getHeaders($accessToken));
76: return ContactList::create(json_decode($response->body, true));
77: }
78:
79: 80: 81: 82: 83: 84: 85:
86: public function getContactsFromList($accessToken, $list_id, $params = null)
87: {
88: $baseUrl = Config::get('endpoints.base_url') . sprintf(Config::get('endpoints.list_contacts'), $list_id);
89: $url = $this->buildUrl($baseUrl, $params);
90:
91: $response = parent::getRestClient()->get($url, parent::getHeaders($accessToken));
92: $body = json_decode($response->body, true);
93: $contacts = array();
94: foreach ($body['results'] as $contact) {
95: $contacts[] = Contact::create($contact);
96: }
97: return new ResultSet($contacts, $body['meta']);
98: }
99: }
100: