Completed
Push — master ( 212bcc...86d4f9 )
by
unknown
15:01
created

CustomAudience::updateSelf()   B

Complexity

Conditions 2
Paths 2

Size

Total Lines 34
Code Lines 28

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
c 2
b 0
f 0
dl 0
loc 34
rs 8.8571
cc 2
eloc 28
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\CustomAudienceClaimObjectiveValues;
33
use FacebookAds\Object\Values\CustomAudienceContentTypeValues;
34
use FacebookAds\Object\Values\CustomAudienceFieldsValues;
35
use FacebookAds\Object\Values\CustomAudienceSubtypeValues;
36
use FacebookAds\Object\Values\CustomAudienceTypes;
37
use FacebookAds\Object\CustomAudienceNormalizers\EmailNormalizer;
38
use FacebookAds\Object\CustomAudienceNormalizers\HashNormalizer;
39
40
/**
41
 * This class is auto-genereated.
42
 *
43
 * For any issues or feature requests related to this class, please let us know
44
 * on github and we'll fix in our codegen framework. We'll not be able to accept
45
 * pull request for this class.
46
 *
47
 */
48
49
class CustomAudience extends AbstractCrudObject {
50
51
  protected function getEndpoint() {
52
    return 'customaudiences';
53
  }
54
55
  /**
56
   * @return CustomAudienceFields
57
   */
58
  public static function getFieldsEnum() {
59
    return CustomAudienceFields::getInstance();
60
  }
61
62
  protected static function getReferencedEnums() {
63
    $ref_enums = array();
64
    $ref_enums['ClaimObjective'] = CustomAudienceClaimObjectiveValues::getInstance()->getValues();
65
    $ref_enums['ContentType'] = CustomAudienceContentTypeValues::getInstance()->getValues();
66
    $ref_enums['Subtype'] = CustomAudienceSubtypeValues::getInstance()->getValues();
67
    $ref_enums['Fields'] = CustomAudienceFieldsValues::getInstance()->getValues();
68
    return $ref_enums;
69
  }
70
71
72
  public function deleteAdAccounts(array $fields = array(), array $params = array(), $pending = false) {
73
    $this->assureId();
74
75
    $param_types = array(
76
      'adaccounts' => 'list<string>',
77
    );
78
    $enums = array(
79
    );
80
81
    $request = new ApiRequest(
82
      $this->api,
83
      $this->data['id'],
84
      RequestInterface::METHOD_DELETE,
85
      '/adaccounts',
86
      new AbstractCrudObject(),
87
      'EDGE',
88
      array(),
89
      new TypeChecker($param_types, $enums)
90
    );
91
    $request->addParams($params);
92
    $request->addFields($fields);
93
    return $pending ? $request : $request->execute();
94
  }
95
96
  public function getAdAccounts(array $fields = array(), array $params = array(), $pending = false) {
97
    $this->assureId();
98
99
    $param_types = array(
100
      'permissions' => 'string',
101
    );
102
    $enums = array(
103
    );
104
105
    $request = new ApiRequest(
106
      $this->api,
107
      $this->data['id'],
108
      RequestInterface::METHOD_GET,
109
      '/adaccounts',
110
      new AdAccount(),
111
      'EDGE',
112
      AdAccount::getFieldsEnum()->getValues(),
113
      new TypeChecker($param_types, $enums)
114
    );
115
    $request->addParams($params);
116
    $request->addFields($fields);
117
    return $pending ? $request : $request->execute();
118
  }
119
120
  public function createAdAccount(array $fields = array(), array $params = array(), $pending = false) {
121
    $this->assureId();
122
123
    $param_types = array(
124
      'adaccounts' => 'list<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 AdAccount(),
137
      'EDGE',
138
      AdAccount::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
      'payload' => 'Object',
222
      'session' => 'Object',
223
    );
224
    $enums = array(
225
    );
226
227
    $request = new ApiRequest(
228
      $this->api,
229
      $this->data['id'],
230
      RequestInterface::METHOD_DELETE,
231
      '/users',
232
      new AbstractCrudObject(),
233
      'EDGE',
234
      array(),
235
      new TypeChecker($param_types, $enums)
236
    );
237
    $request->addParams($params);
238
    $request->addFields($fields);
239
    return $pending ? $request : $request->execute();
240
  }
241
242
  public function createUser(array $fields = array(), array $params = array(), $pending = false) {
243
    $this->assureId();
244
245
    $param_types = array(
246
      'payload' => 'Object',
247
      'session' => 'Object',
248
    );
249
    $enums = array(
250
    );
251
252
    $request = new ApiRequest(
253
      $this->api,
254
      $this->data['id'],
255
      RequestInterface::METHOD_POST,
256
      '/users',
257
      new User(),
258
      'EDGE',
259
      User::getFieldsEnum()->getValues(),
260
      new TypeChecker($param_types, $enums)
261
    );
262
    $request->addParams($params);
263
    $request->addFields($fields);
264
    return $pending ? $request : $request->execute();
265
  }
266
267
  public function deleteSelf(array $fields = array(), array $params = array(), $pending = false) {
268
    $this->assureId();
269
270
    $param_types = array(
271
    );
272
    $enums = array(
273
    );
274
275
    $request = new ApiRequest(
276
      $this->api,
277
      $this->data['id'],
278
      RequestInterface::METHOD_DELETE,
279
      '/',
280
      new AbstractCrudObject(),
281
      'NODE',
282
      array(),
283
      new TypeChecker($param_types, $enums)
284
    );
285
    $request->addParams($params);
286
    $request->addFields($fields);
287
    return $pending ? $request : $request->execute();
288
  }
289
290
  public function getSelf(array $fields = array(), array $params = array(), $pending = false) {
291
    $this->assureId();
292
293
    $param_types = array(
294
    );
295
    $enums = array(
296
    );
297
298
    $request = new ApiRequest(
299
      $this->api,
300
      $this->data['id'],
301
      RequestInterface::METHOD_GET,
302
      '/',
303
      new CustomAudience(),
304
      'NODE',
305
      CustomAudience::getFieldsEnum()->getValues(),
306
      new TypeChecker($param_types, $enums)
307
    );
308
    $request->addParams($params);
309
    $request->addFields($fields);
310
    return $pending ? $request : $request->execute();
311
  }
312
313
  public function updateSelf(array $fields = array(), array $params = array(), $pending = false) {
314
    $this->assureId();
315
316
    $param_types = array(
317
      'claim_objective' => 'claim_objective_enum',
318
      'content_type' => 'content_type_enum',
319
      'description' => 'string',
320
      'event_source_group' => 'string',
321
      'lookalike_spec' => 'string',
322
      'name' => 'string',
323
      'opt_out_link' => 'string',
324
      'product_set_id' => 'string',
325
      'retention_days' => 'unsigned int',
326
      'rule' => 'string',
327
    );
328
    $enums = array(
329
      'claim_objective_enum' => CustomAudienceClaimObjectiveValues::getInstance()->getValues(),
330
      'content_type_enum' => CustomAudienceContentTypeValues::getInstance()->getValues(),
331
    );
332
333
    $request = new ApiRequest(
334
      $this->api,
335
      $this->data['id'],
336
      RequestInterface::METHOD_POST,
337
      '/',
338
      new CustomAudience(),
339
      'NODE',
340
      CustomAudience::getFieldsEnum()->getValues(),
341
      new TypeChecker($param_types, $enums)
342
    );
343
    $request->addParams($params);
344
    $request->addFields($fields);
345
    return $pending ? $request : $request->execute();
346
  }
347
348
  /**
349
   * @deprecated use createUser instead
350
   */
351
  public function addUsers(
352
    array $users,
353
    $type,
354
    array $app_ids = array(),
355
    $is_hashed = false,
356
    $pending = false) {
357
358
    $params = $this->formatParams($users, $type, $app_ids, $is_hashed);
359
    return $this->createUser(array(), $params, $pending);
360
  }
361
362
  /**
363
   * @deprecated use deleteUsers instead
364
   */
365
  public function removeUsers(
366
    array $users,
367
    $type,
368
    array $app_ids = array(),
369
    $is_hashed = false,
370
    $pending = false) {
371
372
    $params = $this->formatParams($users, $type, $app_ids, $is_hashed);
373
    return $this->deleteUsers(array(), $params, $pending);
374
  }
375
376
  /**
377
   * Take users and format them correctly for the request
378
   *
379
   * @param array $users
380
   * @param string $type
381
   * @param array $app_ids
382
   * @param bool $is_hashed
383
   * @return array
384
   */
385
  protected function formatParams(
386
    array $users,
387
    $type,
388
    array $app_ids = array(),
389
    $is_hashed = false) {
390
391
    if ($type == CustomAudienceTypes::EMAIL
392
      || $type == CustomAudienceTypes::PHONE) {
393
      foreach ($users as &$user) {
394
        if ($type == CustomAudienceTypes::EMAIL) {
395
          $normalizer = new EmailNormalizer();
396
          $user = $normalizer->normalize(CustomAudienceTypes::EMAIL, $user);
397
        }
398
        if (!$is_hashed) {
399
          $hash_normalizer = new HashNormalizer();
400
          $user = $hash_normalizer->normalize(
401
            CustomAudienceTypes::EMAIL, $user);
402
        }
403
      }
404
    }
405
406
    $payload = array(
407
      'schema' => $type,
408
      'data' => $users,
409
    );
410
411
    if ($type === CustomAudienceTypes::ID) {
412
      if (empty($app_ids)) {
413
        throw new \InvalidArgumentException(
414
          "Custom audiences with type ".CustomAudienceTypes::ID." require"
415
          ."at least one app_id");
416
      }
417
418
      $payload['app_ids'] = $app_ids;
419
    }
420
421
    return array('payload' => $payload);
422
  }
423
}
424