Failed Conditions
Push — master ( 81ead6...837ea5 )
by
unknown
13:08
created

CustomAudience::createAdAccount()   B

Complexity

Conditions 2
Paths 2

Size

Total Lines 26
Code Lines 20

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 26
rs 8.8571
cc 2
eloc 20
nc 2
nop 3
1
<?php
2
/**
3
 * Copyright (c) 2015-present, Facebook, Inc. All rights reserved.
4
 *
5
 * You are hereby granted a non-exclusive, worldwide, royalty-free license to
6
 * use, copy, modify, and distribute this software in source code or binary
7
 * form for use in connection with the web services and APIs provided by
8
 * Facebook.
9
 *
10
 * As with any software that integrates with the Facebook platform, your use
11
 * of this software is subject to the Facebook Developer Principles and
12
 * Policies [http://developers.facebook.com/policy/]. This copyright notice
13
 * shall be included in all copies or substantial portions of the software.
14
 *
15
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21
 * DEALINGS IN THE SOFTWARE.
22
 *
23
 */
24
25
namespace FacebookAds\Object;
26
27
use FacebookAds\ApiRequest;
28
use FacebookAds\Cursor;
29
use FacebookAds\Http\RequestInterface;
30
use FacebookAds\TypeChecker;
31
use FacebookAds\Object\Fields\CustomAudienceFields;
32
use FacebookAds\Object\Values\CustomAudienceContentTypeValues;
33
use FacebookAds\Object\Values\CustomAudienceFieldsValues;
34
use FacebookAds\Object\Values\CustomAudienceSubtypeValues;
35
use FacebookAds\Object\Values\CustomAudienceTypes;
36
use FacebookAds\Object\CustomAudienceNormalizers\EmailNormalizer;
37
use FacebookAds\Object\CustomAudienceNormalizers\HashNormalizer;
38
39
/**
40
 * This class is auto-genereated.
41
 *
42
 * For any issues or feature requests related to this class, please let us know
43
 * on github and we'll fix in our codegen framework. We'll not be able to accept
44
 * pull request for this class.
45
 *
46
 */
47
48
class CustomAudience extends AbstractCrudObject {
49
50
  protected function getEndpoint() {
51
    return 'customaudiences';
52
  }
53
54
  /**
55
   * @return CustomAudienceFields
56
   */
57
  public static function getFieldsEnum() {
58
    return CustomAudienceFields::getInstance();
59
  }
60
61
  protected static function getReferencedEnums() {
62
    $ref_enums = array();
63
    $ref_enums['ContentType'] = CustomAudienceContentTypeValues::getInstance()->getValues();
64
    $ref_enums['Subtype'] = CustomAudienceSubtypeValues::getInstance()->getValues();
65
    $ref_enums['Fields'] = CustomAudienceFieldsValues::getInstance()->getValues();
66
    return $ref_enums;
67
  }
68
69
70
  public function deleteAdAccounts(array $fields = array(), array $params = array(), $pending = false) {
71
    $this->assureId();
72
73
    $param_types = array(
74
      'adaccounts' => 'list<string>',
75
      'id' => 'string',
76
    );
77
    $enums = array(
78
    );
79
80
    $request = new ApiRequest(
81
      $this->api,
82
      $this->data['id'],
83
      RequestInterface::METHOD_DELETE,
84
      '/adaccounts',
85
      new CustomAudienceAdAccount(),
86
      'EDGE',
87
      CustomAudienceAdAccount::getFieldsEnum()->getValues(),
88
      new TypeChecker($param_types, $enums)
89
    );
90
    $request->addParams($params);
91
    $request->addFields($fields);
92
    return $pending ? $request : $request->execute();
93
  }
94
95
  public function getAdAccounts(array $fields = array(), array $params = array(), $pending = false) {
96
    $this->assureId();
97
98
    $param_types = array(
99
      'permissions' => 'string',
100
    );
101
    $enums = array(
102
    );
103
104
    $request = new ApiRequest(
105
      $this->api,
106
      $this->data['id'],
107
      RequestInterface::METHOD_GET,
108
      '/adaccounts',
109
      new CustomAudienceAdAccount(),
110
      'EDGE',
111
      CustomAudienceAdAccount::getFieldsEnum()->getValues(),
112
      new TypeChecker($param_types, $enums)
113
    );
114
    $request->addParams($params);
115
    $request->addFields($fields);
116
    return $pending ? $request : $request->execute();
117
  }
118
119
  public function createAdAccount(array $fields = array(), array $params = array(), $pending = false) {
120
    $this->assureId();
121
122
    $param_types = array(
123
      'adaccounts' => 'list<string>',
124
      'id' => 'string',
125
      'permissions' => 'string',
126
      'replace' => 'bool',
127
    );
128
    $enums = array(
129
    );
130
131
    $request = new ApiRequest(
132
      $this->api,
133
      $this->data['id'],
134
      RequestInterface::METHOD_POST,
135
      '/adaccounts',
136
      new CustomAudienceAdAccount(),
137
      'EDGE',
138
      CustomAudienceAdAccount::getFieldsEnum()->getValues(),
139
      new TypeChecker($param_types, $enums)
140
    );
141
    $request->addParams($params);
142
    $request->addFields($fields);
143
    return $pending ? $request : $request->execute();
144
  }
145
146
  public function getAds(array $fields = array(), array $params = array(), $pending = false) {
147
    $this->assureId();
148
149
    $param_types = array(
150
      'effective_status' => 'list<string>',
151
    );
152
    $enums = array(
153
    );
154
155
    $request = new ApiRequest(
156
      $this->api,
157
      $this->data['id'],
158
      RequestInterface::METHOD_GET,
159
      '/ads',
160
      new Ad(),
161
      'EDGE',
162
      Ad::getFieldsEnum()->getValues(),
163
      new TypeChecker($param_types, $enums)
164
    );
165
    $request->addParams($params);
166
    $request->addFields($fields);
167
    return $pending ? $request : $request->execute();
168
  }
169
170
  public function getPrefills(array $fields = array(), array $params = array(), $pending = false) {
171
    $this->assureId();
172
173
    $param_types = array(
174
    );
175
    $enums = array(
176
    );
177
178
    $request = new ApiRequest(
179
      $this->api,
180
      $this->data['id'],
181
      RequestInterface::METHOD_GET,
182
      '/prefills',
183
      new CustomAudiencePrefillState(),
184
      'EDGE',
185
      CustomAudiencePrefillState::getFieldsEnum()->getValues(),
186
      new TypeChecker($param_types, $enums)
187
    );
188
    $request->addParams($params);
189
    $request->addFields($fields);
190
    return $pending ? $request : $request->execute();
191
  }
192
193
  public function getSessions(array $fields = array(), array $params = array(), $pending = false) {
194
    $this->assureId();
195
196
    $param_types = array(
197
      'session_id' => 'unsigned int',
198
    );
199
    $enums = array(
200
    );
201
202
    $request = new ApiRequest(
203
      $this->api,
204
      $this->data['id'],
205
      RequestInterface::METHOD_GET,
206
      '/sessions',
207
      new CustomAudienceSession(),
208
      'EDGE',
209
      CustomAudienceSession::getFieldsEnum()->getValues(),
210
      new TypeChecker($param_types, $enums)
211
    );
212
    $request->addParams($params);
213
    $request->addFields($fields);
214
    return $pending ? $request : $request->execute();
215
  }
216
217
  public function deleteUsers(array $fields = array(), array $params = array(), $pending = false) {
218
    $this->assureId();
219
220
    $param_types = array(
221
      'id' => 'string',
222
      'payload' => 'Object',
223
      'session' => 'Object',
224
    );
225
    $enums = array(
226
    );
227
228
    $request = new ApiRequest(
229
      $this->api,
230
      $this->data['id'],
231
      RequestInterface::METHOD_DELETE,
232
      '/users',
233
      new AbstractCrudObject(),
234
      'EDGE',
235
      array(),
236
      new TypeChecker($param_types, $enums)
237
    );
238
    $request->addParams($params);
239
    $request->addFields($fields);
240
    return $pending ? $request : $request->execute();
241
  }
242
243
  public function createUser(array $fields = array(), array $params = array(), $pending = false) {
244
    $this->assureId();
245
246
    $param_types = array(
247
      'id' => 'string',
248
      'payload' => 'Object',
249
      'session' => 'Object',
250
    );
251
    $enums = array(
252
    );
253
254
    $request = new ApiRequest(
255
      $this->api,
256
      $this->data['id'],
257
      RequestInterface::METHOD_POST,
258
      '/users',
259
      new AbstractCrudObject(),
260
      'EDGE',
261
      array(),
262
      new TypeChecker($param_types, $enums)
263
    );
264
    $request->addParams($params);
265
    $request->addFields($fields);
266
    return $pending ? $request : $request->execute();
267
  }
268
269
  public function deleteSelf(array $fields = array(), array $params = array(), $pending = false) {
270
    $this->assureId();
271
272
    $param_types = array(
273
      'id' => 'int',
274
    );
275
    $enums = array(
276
    );
277
278
    $request = new ApiRequest(
279
      $this->api,
280
      $this->data['id'],
281
      RequestInterface::METHOD_DELETE,
282
      '/',
283
      new AbstractCrudObject(),
284
      'NODE',
285
      array(),
286
      new TypeChecker($param_types, $enums)
287
    );
288
    $request->addParams($params);
289
    $request->addFields($fields);
290
    return $pending ? $request : $request->execute();
291
  }
292
293
  public function getSelf(array $fields = array(), array $params = array(), $pending = false) {
294
    $this->assureId();
295
296
    $param_types = array(
297
    );
298
    $enums = array(
299
    );
300
301
    $request = new ApiRequest(
302
      $this->api,
303
      $this->data['id'],
304
      RequestInterface::METHOD_GET,
305
      '/',
306
      new CustomAudience(),
307
      'NODE',
308
      CustomAudience::getFieldsEnum()->getValues(),
309
      new TypeChecker($param_types, $enums)
310
    );
311
    $request->addParams($params);
312
    $request->addFields($fields);
313
    return $pending ? $request : $request->execute();
314
  }
315
316
  public function updateSelf(array $fields = array(), array $params = array(), $pending = false) {
317
    $this->assureId();
318
319
    $param_types = array(
320
      'content_type' => 'content_type_enum',
321
      'description' => 'string',
322
      'exclusions' => 'list<Object>',
323
      'inclusions' => 'list<Object>',
324
      'lookalike_spec' => 'string',
325
      'name' => 'string',
326
      'opt_out_link' => 'string',
327
      'product_set_id' => 'string',
328
      'retention_days' => 'unsigned int',
329
      'rule' => 'string',
330
    );
331
    $enums = array(
332
      'content_type_enum' => CustomAudienceContentTypeValues::getInstance()->getValues(),
333
    );
334
335
    $request = new ApiRequest(
336
      $this->api,
337
      $this->data['id'],
338
      RequestInterface::METHOD_POST,
339
      '/',
340
      new AbstractCrudObject(),
341
      'NODE',
342
      array(),
343
      new TypeChecker($param_types, $enums)
344
    );
345
    $request->addParams($params);
346
    $request->addFields($fields);
347
    return $pending ? $request : $request->execute();
348
  }
349
350
  /**
351
   * @deprecated use createUser instead
352
   */
353
  public function addUsers(
354
    array $users,
355
    $type,
356
    array $app_ids = array(),
357
    $is_hashed = false,
358
    $pending = false) {
359
360
    $params = $this->formatParams($users, $type, $app_ids, $is_hashed);
361
    return $this->createUser(array(), $params, $pending);
362
  }
363
364
  /**
365
   * @deprecated use deleteUsers instead
366
   */
367
  public function removeUsers(
368
    array $users,
369
    $type,
370
    array $app_ids = array(),
371
    $is_hashed = false,
372
    $pending = false) {
373
374
    $params = $this->formatParams($users, $type, $app_ids, $is_hashed);
375
    return $this->deleteUsers(array(), $params, $pending);
376
  }
377
378
  /**
379
   * Take users and format them correctly for the request
380
   *
381
   * @param array $users
382
   * @param string $type
383
   * @param array $app_ids
384
   * @param bool $is_hashed
385
   * @return array
386
   */
387
  protected function formatParams(
388
    array $users,
389
    $type,
390
    array $app_ids = array(),
391
    $is_hashed = false) {
392
393
    if ($type == CustomAudienceTypes::EMAIL
394
      || $type == CustomAudienceTypes::PHONE) {
395
      foreach ($users as &$user) {
396
        if ($type == CustomAudienceTypes::EMAIL) {
397
          $normalizer = new EmailNormalizer();
398
          $user = $normalizer->normalize(CustomAudienceTypes::EMAIL, $user);
399
        }
400
        if (!$is_hashed) {
401
          $hash_normalizer = new HashNormalizer();
402
          $user = $hash_normalizer->normalize(
403
            CustomAudienceTypes::EMAIL, $user);
404
        }
405
      }
406
    }
407
408
    $payload = array(
409
      'schema' => $type,
410
      'data' => $users,
411
    );
412
413
    if ($type === CustomAudienceTypes::ID) {
414
      if (empty($app_ids)) {
415
        throw new \InvalidArgumentException(
416
          "Custom audiences with type ".CustomAudienceTypes::ID." require"
417
          ."at least one app_id");
418
      }
419
420
      $payload['app_ids'] = $app_ids;
421
    }
422
423
    return array('payload' => $payload);
424
  }
425
}
426