Completed
Push — master ( 53bee2...ad5da8 )
by
unknown
04:44
created

CustomAudience::getSelf()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 22
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 22
rs 9.2
c 0
b 0
f 0
cc 2
eloc 16
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
      'status' => 'list<string>',
152
    );
153
    $enums = array(
154
    );
155
156
    $request = new ApiRequest(
157
      $this->api,
158
      $this->data['id'],
159
      RequestInterface::METHOD_GET,
160
      '/ads',
161
      new Ad(),
162
      'EDGE',
163
      Ad::getFieldsEnum()->getValues(),
164
      new TypeChecker($param_types, $enums)
165
    );
166
    $request->addParams($params);
167
    $request->addFields($fields);
168
    return $pending ? $request : $request->execute();
169
  }
170
171
  public function getPrefills(array $fields = array(), array $params = array(), $pending = false) {
172
    $this->assureId();
173
174
    $param_types = array(
175
    );
176
    $enums = array(
177
    );
178
179
    $request = new ApiRequest(
180
      $this->api,
181
      $this->data['id'],
182
      RequestInterface::METHOD_GET,
183
      '/prefills',
184
      new CustomAudiencePrefillState(),
185
      'EDGE',
186
      CustomAudiencePrefillState::getFieldsEnum()->getValues(),
187
      new TypeChecker($param_types, $enums)
188
    );
189
    $request->addParams($params);
190
    $request->addFields($fields);
191
    return $pending ? $request : $request->execute();
192
  }
193
194
  public function getSessions(array $fields = array(), array $params = array(), $pending = false) {
195
    $this->assureId();
196
197
    $param_types = array(
198
      'session_id' => 'unsigned int',
199
    );
200
    $enums = array(
201
    );
202
203
    $request = new ApiRequest(
204
      $this->api,
205
      $this->data['id'],
206
      RequestInterface::METHOD_GET,
207
      '/sessions',
208
      new CustomAudienceSession(),
209
      'EDGE',
210
      CustomAudienceSession::getFieldsEnum()->getValues(),
211
      new TypeChecker($param_types, $enums)
212
    );
213
    $request->addParams($params);
214
    $request->addFields($fields);
215
    return $pending ? $request : $request->execute();
216
  }
217
218
  public function deleteUsers(array $fields = array(), array $params = array(), $pending = false) {
219
    $this->assureId();
220
221
    $param_types = array(
222
      'namespace' => 'string',
223
      'payload' => 'Object',
224
      'session' => 'Object',
225
    );
226
    $enums = array(
227
    );
228
229
    $request = new ApiRequest(
230
      $this->api,
231
      $this->data['id'],
232
      RequestInterface::METHOD_DELETE,
233
      '/users',
234
      new AbstractCrudObject(),
235
      'EDGE',
236
      array(),
237
      new TypeChecker($param_types, $enums)
238
    );
239
    $request->addParams($params);
240
    $request->addFields($fields);
241
    return $pending ? $request : $request->execute();
242
  }
243
244
  public function createUser(array $fields = array(), array $params = array(), $pending = false) {
245
    $this->assureId();
246
247
    $param_types = array(
248
      'namespace' => 'string',
249
      'payload' => 'Object',
250
      'session' => 'Object',
251
    );
252
    $enums = array(
253
    );
254
255
    $request = new ApiRequest(
256
      $this->api,
257
      $this->data['id'],
258
      RequestInterface::METHOD_POST,
259
      '/users',
260
      new User(),
261
      'EDGE',
262
      User::getFieldsEnum()->getValues(),
263
      new TypeChecker($param_types, $enums)
264
    );
265
    $request->addParams($params);
266
    $request->addFields($fields);
267
    return $pending ? $request : $request->execute();
268
  }
269
270
  public function deleteSelf(array $fields = array(), array $params = array(), $pending = false) {
271
    $this->assureId();
272
273
    $param_types = array(
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
      'claim_objective' => 'claim_objective_enum',
321
      'content_type' => 'content_type_enum',
322
      'description' => 'string',
323
      'event_source_group' => 'string',
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
      'claim_objective_enum' => CustomAudienceClaimObjectiveValues::getInstance()->getValues(),
333
      'content_type_enum' => CustomAudienceContentTypeValues::getInstance()->getValues(),
334
    );
335
336
    $request = new ApiRequest(
337
      $this->api,
338
      $this->data['id'],
339
      RequestInterface::METHOD_POST,
340
      '/',
341
      new CustomAudience(),
342
      'NODE',
343
      CustomAudience::getFieldsEnum()->getValues(),
344
      new TypeChecker($param_types, $enums)
345
    );
346
    $request->addParams($params);
347
    $request->addFields($fields);
348
    return $pending ? $request : $request->execute();
349
  }
350
351
  /**
352
   * @deprecated use createUser instead
353
   */
354
  public function addUsers(
355
    array $users,
356
    $type,
357
    array $app_ids = array(),
358
    $is_hashed = false,
359
    $pending = false) {
360
361
    $params = $this->formatParams($users, $type, $app_ids, $is_hashed);
362
    return $this->createUser(array(), $params, $pending);
363
  }
364
365
  /**
366
   * @deprecated use deleteUsers instead
367
   */
368
  public function removeUsers(
369
    array $users,
370
    $type,
371
    array $app_ids = array(),
372
    $is_hashed = false,
373
    $pending = false) {
374
375
    $params = $this->formatParams($users, $type, $app_ids, $is_hashed);
376
    return $this->deleteUsers(array(), $params, $pending);
377
  }
378
379
  /**
380
   * Take users and format them correctly for the request
381
   *
382
   * @param array $users
383
   * @param string $type
384
   * @param array $app_ids
385
   * @param bool $is_hashed
386
   * @return array
387
   */
388
  protected function formatParams(
389
    array $users,
390
    $type,
391
    array $app_ids = array(),
392
    $is_hashed = false) {
393
394
    if ($type == CustomAudienceTypes::EMAIL
395
      || $type == CustomAudienceTypes::PHONE) {
396
      foreach ($users as &$user) {
397
        if ($type == CustomAudienceTypes::EMAIL) {
398
          $normalizer = new EmailNormalizer();
399
          $user = $normalizer->normalize(CustomAudienceTypes::EMAIL, $user);
400
        }
401
        if (!$is_hashed) {
402
          $hash_normalizer = new HashNormalizer();
403
          $user = $hash_normalizer->normalize(
404
            CustomAudienceTypes::EMAIL, $user);
405
        }
406
      }
407
    }
408
409
    $payload = array(
410
      'schema' => $type,
411
      'data' => $users,
412
    );
413
414
    if ($type === CustomAudienceTypes::ID) {
415
      if (empty($app_ids)) {
416
        throw new \InvalidArgumentException(
417
          "Custom audiences with type ".CustomAudienceTypes::ID." require"
418
          ."at least one app_id");
419
      }
420
421
      $payload['app_ids'] = $app_ids;
422
    }
423
424
    return array('payload' => $payload);
425
  }
426
}
427