|
8 | 8 | from twitter_ads.enum import TRANSFORM |
9 | 9 | from twitter_ads.http import Request |
10 | 10 | from twitter_ads.resource import resource_property, Resource, Persistence, Analytics |
11 | | -from twitter_ads.utils import Deprecated |
| 11 | +from twitter_ads.utils import Deprecated, FlattenParams |
12 | 12 |
|
13 | 13 |
|
14 | 14 | class PromotedAccount(Analytics, Resource, Persistence): |
@@ -60,16 +60,13 @@ def save(self): |
60 | 60 | return self.from_response(response.body['data'][0]) |
61 | 61 |
|
62 | 62 | @classmethod |
63 | | - def attach(klass, account, line_item_id=None, tweet_ids=None): |
| 63 | + @FlattenParams |
| 64 | + def attach(klass, account, **kwargs): |
64 | 65 | """ |
65 | 66 | Associate one or more Tweets with the specified line item. |
66 | 67 | """ |
67 | | - params = {} |
68 | | - params['line_item_id'] = line_item_id |
69 | | - params['tweet_ids'] = ",".join(map(str, tweet_ids)) |
70 | | - |
71 | 68 | resource = klass.RESOURCE_COLLECTION.format(account_id=account.id) |
72 | | - request = Request(account.client, 'post', resource, params=params) |
| 69 | + request = Request(account.client, 'post', resource, params=kwargs) |
73 | 70 | return Cursor(klass, request, init_with=[account]) |
74 | 71 |
|
75 | 72 |
|
@@ -482,24 +479,21 @@ def all(klass): |
482 | 479 | raise AttributeError("'CardsFetch' object has no attribute 'all'") |
483 | 480 |
|
484 | 481 | @classmethod |
485 | | - def load(klass, account, card_uris=None, card_id=None, with_deleted=None): |
| 482 | + @FlattenParams |
| 483 | + def load(klass, account, **kwargs): |
486 | 484 | # check whether both are specified or neither are specified |
487 | | - if all([card_uris, card_id]) or not any([card_uris, card_id]): |
| 485 | + if all([kwargs.get('card_uris'), kwargs.get('card_id')]) or \ |
| 486 | + not any([kwargs.get('card_uris'), kwargs.get('card_id')]): |
488 | 487 | raise ValueError('card_uris and card_id are exclusive parameters. ' + |
489 | 488 | 'Please supply one or the other, but not both.') |
490 | | - params = {} |
491 | | - if with_deleted: |
492 | | - params['with_deleted'] = 'true' |
493 | 489 |
|
494 | | - if card_uris: |
495 | | - params['card_uris'] = ','.join(map(str, card_uris)) |
| 490 | + if kwargs.get('card_uris'): |
496 | 491 | resource = klass.FETCH_URI.format(account_id=account.id) |
497 | | - request = Request(account.client, 'get', resource, params=params) |
| 492 | + request = Request(account.client, 'get', resource, params=kwargs) |
498 | 493 | return Cursor(klass, request, init_with=[account]) |
499 | 494 | else: |
500 | | - params['card_id'] = card_id |
501 | | - resource = klass.FETCH_ID.format(account_id=account.id, id=card_id) |
502 | | - response = Request(account.client, 'get', resource, params=params).perform() |
| 495 | + resource = klass.FETCH_ID.format(account_id=account.id, id=kwargs.get('card_id')) |
| 496 | + response = Request(account.client, 'get', resource, params=kwargs).perform() |
503 | 497 | return klass(account).from_response(response.body['data']) |
504 | 498 |
|
505 | 499 | def reload(self): |
@@ -575,13 +569,10 @@ class TweetPreview(Resource): |
575 | 569 | RESOURCE_COLLECTION = '/' + API_VERSION + '/accounts/{account_id}/tweet_previews' |
576 | 570 |
|
577 | 571 | @classmethod |
578 | | - def load(klass, account, tweet_ids=None, tweet_type=None): |
579 | | - params = {} |
580 | | - |
581 | | - params['tweet_ids'] = ','.join(map(str, tweet_ids)) |
582 | | - params['tweet_type'] = tweet_type |
| 572 | + @FlattenParams |
| 573 | + def load(klass, account, **kwargs): |
583 | 574 | resource = klass.RESOURCE_COLLECTION.format(account_id=account.id) |
584 | | - request = Request(account.client, 'get', resource, params=params) |
| 575 | + request = Request(account.client, 'get', resource, params=kwargs) |
585 | 576 | return Cursor(klass, request, init_with=[account]) |
586 | 577 |
|
587 | 578 |
|
|
0 commit comments