diff options
Diffstat (limited to 'pandora/models/ad.py')
-rw-r--r-- | pandora/models/ad.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/pandora/models/ad.py b/pandora/models/ad.py new file mode 100644 index 0000000..d5bcd89 --- /dev/null +++ b/pandora/models/ad.py | |||
@@ -0,0 +1,36 @@ | |||
1 | from ..errors import ParameterMissing | ||
2 | from ._base import Field | ||
3 | from .playlist import PlaylistModel, AudioField | ||
4 | |||
5 | |||
6 | class AdItem(PlaylistModel): | ||
7 | |||
8 | title = Field("title") | ||
9 | company_name = Field("companyName") | ||
10 | tracking_tokens = Field("adTrackingTokens") | ||
11 | audio_url = AudioField("audioUrl") | ||
12 | image_url = Field("imageUrl") | ||
13 | click_through_url = Field("clickThroughUrl") | ||
14 | station_id = None | ||
15 | ad_token = None | ||
16 | |||
17 | @property | ||
18 | def is_ad(self): | ||
19 | return True | ||
20 | |||
21 | def register_ad(self, station_id=None): | ||
22 | if not station_id: | ||
23 | station_id = self.station_id | ||
24 | if self.tracking_tokens: | ||
25 | self._api_client.register_ad(station_id, self.tracking_tokens) | ||
26 | else: | ||
27 | raise ParameterMissing('No ad tracking tokens provided for ' | ||
28 | 'registration.') | ||
29 | |||
30 | def prepare_playback(self): | ||
31 | try: | ||
32 | self.register_ad(self.station_id) | ||
33 | except ParameterMissing as exc: | ||
34 | if self.tracking_tokens: | ||
35 | raise exc | ||
36 | return super(AdItem, self).prepare_playback() | ||