class Announcements(Item): """ List of announcements Required scope - "announcements" """ URL = Item.prepare_url('announcements') SINGLE_URL = Item.prepare_url('announcements/%(id)s') def get(self, **kwargs): """ res = client.Announcements.get() res = client.Announcements.get(limit=1, offset=2) """ kwargs['url'] = self.URL return self.transport.set_method('GET').set_pagination( **kwargs).request(**kwargs) def getOne(self, _id, **kwargs): """ Here _id is an announcement id res = client.Announcements.getOne(2) """ kwargs['url'] = self.SINGLE_URL kwargs['id'] = self.sanitize_id(_id) return self.transport.set_method('GET').request(**kwargs)
class Referrals(Item): """ List of referrals Required scope - "referrals" """ URL = Item.prepare_url('referrals') SINGLE_URL = Item.prepare_url('referrals/%(id)s') FILTERING = {'date_start': Item.check_date, 'date_end': Item.check_date} def get(self, **kwargs): """ res = client.Referrals.get() res = client.Referrals.get(limit=2) """ kwargs['url'] = self.URL kwargs['allowed_filtering'] = self.FILTERING return self.transport.set_method('GET').set_pagination(**kwargs).\ set_filtering(**kwargs).request(**kwargs) def getOne(self, _id, **kwargs): """ res = client.Referrals.getOne(_id=2) res = client.Referrals.getOne(2) """ kwargs['url'] = self.SINGLE_URL kwargs['id'] = self.sanitize_id(_id) return self.transport.set_method('GET').request(**kwargs)
class CampaignCategories(Item): """ List of campaigns categories Required scope - "public_data" """ ORDERING = ('name', ) URL = Item.prepare_url('categories') SINGLE_URL = Item.prepare_url('categories/%(id)s') def get(self, **kwargs): """ res = client.CampaignCategories.get() res = client.CampaignCategories.get(limit=2, offset=1) """ kwargs['url'] = self.URL kwargs['allowed_ordering'] = self.ORDERING return self.transport.set_method('GET').set_pagination(**kwargs).\ set_ordering(**kwargs).request(**kwargs) def getOne(self, _id, **kwargs): """ res = client.CampaignCategories.getOne(_id=2) res = client.CampaignCategories.getOne(2) """ kwargs['url'] = self.SINGLE_URL kwargs['id'] = self.sanitize_id(_id) return self.transport.set_method('GET').request(**kwargs)
class MoneyTransfers(Item): """ List of webmaster money transfers Required scope - "webmaster_money_transfers" """ URL = Item.prepare_url('webmaster_money_transfers') SINGLE_URL = Item.prepare_url('webmaster_money_transfer/%(id)s') def get(self, **kwargs): """ res = client.MoneyTransfers.get() res = client.MoneyTransfers.get(limit=2) """ kwargs['url'] = self.URL return self.transport.set_method('GET').\ set_pagination(**kwargs).set_filtering(**kwargs).\ set_ordering(**kwargs).request(**kwargs) def getOne(self, _id, **kwargs): """ res = client.MoneyTransfers.getOne(_id=2) res = client.MoneyTransfers.getOne(2) """ kwargs['url'] = self.SINGLE_URL kwargs['id'] = self.sanitize_id(_id) return self.transport.set_method('GET').request(**kwargs)
class Payments(Item): """ List of webmaster payments Required scope - "payments" """ URL = Item.prepare_url('payments') SINGLE_URL = Item.prepare_url('payments/%(id)s') def get(self, **kwargs): """ res = client.Payments.get() res = client.Payments.get(limit=2) """ kwargs['url'] = self.URL return self.transport.set_method('GET').set_pagination(**kwargs).request(**kwargs) def getOne(self, _id, **kwargs): """ res = client.Payments.getOne(_id=2) res = client.Payments.getOne(2) """ kwargs['url'] = self.SINGLE_URL kwargs['id'] = self.sanitize_id(_id) return self.transport.set_method('GET').request(**kwargs)
class SystemLanguages(Item): """ List of system languages Required scope - "public_data" """ URL = Item.prepare_url('languages') SINGLE_URL = Item.prepare_url('languages/%(code)s') def get(self, **kwargs): """ res = client.SystemLanguages.get() res = client.SystemLanguages.get(limit=2, offset=1) """ kwargs['url'] = self.URL return self.transport.set_method('GET').set_pagination( **kwargs).request(**kwargs) def getOne(self, code='ru'): """ res = client.SystemLanguages.getOne(code='ru') """ return self.transport.set_method('GET').request(url=self.SINGLE_URL, code=code)
class ProductCampaigns(Item): """ List of campaigns that have products Required scope - "products_for_website" """ URL = Item.prepare_url('products/advcampaigns/website/%(id)s') SINGLE_URL = Item.prepare_url( 'products/advcampaigns/%(c_id)s/website/%(id)s') ORDERING = ('name',) def get(self, _id, **kwargs): """ Here _id is website id. res = client.ProductCampaigns.get(22) res = client.ProductCampaigns.get(22, limit=1, order_by=-name) """ kwargs['url'] = self.URL kwargs['id'] = self.sanitize_id(_id) kwargs['allowed_ordering'] = self.ORDERING return self.transport.set_method('GET').set_pagination(**kwargs). \ set_ordering(**kwargs).request(**kwargs) def getOne(self, _id, c_id, **kwargs): """ Here _id is website id and c_id is campaign id res = client.ProductCampaigns.getOne(22, 6) """ kwargs['url'] = self.SINGLE_URL kwargs['id'] = self.sanitize_id(_id) kwargs['c_id'] = self.sanitize_id(c_id) return self.transport.set_method('GET').request(**kwargs)
class Campaigns(Item): """ List of advertising campaigns Required scope - "advcampaigns" """ URL = Item.prepare_url('advcampaigns') SINGLE_URL = Item.prepare_url('advcampaigns/%(id)s') def get(self, **kwargs): """ res = client.Campaigns.get() res = client.Campaigns.get(limit=2) """ kwargs['url'] = self.URL return self.transport.set_method('GET').set_pagination( **kwargs).request(**kwargs) def getOne(self, _id, **kwargs): """ Here _id is an a campaign id res = client.Campaigns.getOne(2) """ kwargs['url'] = self.SINGLE_URL kwargs['id'] = self.sanitize_id(_id) return self.transport.set_method('GET').request(**kwargs)
class ProductVendors(Item): """ List of products vendors Required scope - "public_data" """ URL = Item.prepare_url('products/vendors') SINGLE_URL = Item.prepare_url('products/vendors/%(id)s') ORDERING = ('name',) def get(self, **kwargs): """ res = client.ProductVendors.get() res = client.ProductVendors.get(limit=1, order_by=-name) """ kwargs['url'] = self.URL kwargs['allowed_ordering'] = self.ORDERING return self.transport.set_method('GET').set_pagination(**kwargs). \ set_ordering(**kwargs).request(**kwargs) def getOne(self, _id, **kwargs): """ Here _id is category id. res = client.ProductVendors.getOne(2) """ kwargs['url'] = self.SINGLE_URL kwargs['id'] = self.sanitize_id(_id) return self.transport.set_method('GET').request(**kwargs)
class CampaignsForWebsite(Item): """ List of advertising campaigns for a website Required scope - "advcampaigns_for_website" """ URL = Item.prepare_url('advcampaigns/website/%(id)s') SINGLE_URL = Item.prepare_url('advcampaigns/%(c_id)s/website/%(id)s') def get(self, _id, **kwargs): """ Here _id is a website id res = client.CampaignsForWebsite.get(22) res = client.CampaignsForWebsite.get(limit=2) """ kwargs['url'] = self.URL kwargs['id'] = self.sanitize_id(_id) return self.transport.set_method('GET').set_pagination( **kwargs).request(**kwargs) def getOne(self, _id, c_id, **kwargs): """ Here _id is a website id and c_id is a campaign id res = client.CampaignsForWebsite.getOne(6, 22) """ kwargs['url'] = self.SINGLE_URL kwargs['id'] = self.sanitize_id(_id) kwargs['c_id'] = self.sanitize_id(c_id) return self.transport.set_method('GET').request(**kwargs)
class AdvertiserServices(Item): """ List of advertiser services Required scope - "public_data" """ URL = Item.prepare_url('adservices') SINGLE_URL = Item.prepare_url('adservices/%(id)s') KIND_URL = Item.prepare_url('adservices/kind/%(kind)s') KIND_SINGLE_URL = Item.prepare_url('adservices/%(id)s/kind/%(kind)s') def get(self, **kwargs): """ res = client.AdvertiserServices.get() res = client.AdvertiserServices.get(limit=2, offset=1) """ kwargs['url'] = self.URL return self.transport.set_method('GET').set_pagination( **kwargs).request(**kwargs) def getOne(self, _id, **kwargs): """ res = client.AdvertiserServices.getOne(_id=2) res = client.AdvertiserServices.getOne(1) """ kwargs['id'] = self.sanitize_id(_id) kwargs['url'] = self.SINGLE_URL return self.transport.set_method('GET').request(**kwargs) def getForKind(self, kind=None, **kwargs): """ Returns advertiser services for website types res = client.AdvertiserServices.getForKind(kind='website') res = client.AdvertiserServices.getForKind('website') """ kwargs['kind'] = self.sanitize_non_blank_value(kind, 'kind') kwargs['url'] = self.KIND_URL return self.transport.set_method('GET').set_pagination( **kwargs).request(**kwargs) def getForKindOne(self, _id, kind, **kwargs): """ Returns advertiser service for website types res = client.AdvertiserServices.getForKindOne(_id=2, kind='website') res = client.AdvertiserServices.getForKindOne(2, 'website') """ kwargs['kind'] = self.sanitize_non_blank_value(kind, 'kind') kwargs['id'] = self.sanitize_id(_id) kwargs['url'] = self.KIND_SINGLE_URL return self.transport.set_method('GET').request(**kwargs)
class StatisticSubIds(StatisticBase): """ Statistics by sub-ids Required scope - "statistics" """ SUB_ID_NUMBERS = range(0, 5) ORDERING = ('actions', 'clicks', 'cr', 'ecpc', 'leads', 'payment_sum', 'payment_sum_approved', 'payment_sum_declined', 'payment_sum_open', 'sales') FILTERING = { 'date_start': Item.check_date, 'date_end': Item.check_date, 'website': int, 'campaign': int, } URL = Item.prepare_url('statistics/sub_ids%s') def sanitize_sub_id_number(self, number): if number not in self.SUB_ID_NUMBERS: raise ValueError("Invalid subid number. '%s': %s" % (number, self.SUB_ID_NUMBERS)) def prepare_filtering(self, sub_id_number): params = copy(self.FILTERING) subid_params = dict([ ('subid%s' % (val or ''), StatisticBase.check_sub_id) for val in self.SUB_ID_NUMBERS if val != sub_id_number ]) params.update(subid_params) return params def prepare_ordering(self, sub_id_number): sub_id_name = 'subid%s' % (sub_id_number or '') return self.ORDERING + (sub_id_name, ) def get(self, sub_id_number=0, **kwargs): """ Here sub_id_number is subid number. It is allowed from 0 to 5 excluding. It just will send request to sub_ids, sub_ids1, sub_ids2, sub_ids3, sub_ids4 urls correspondingly. res = client.StatisticSubIds.get() res = client.StatisticSubIds.get(date_start='01.01.2013') res = client.StatisticSubIds.get(subid="ADS778") res = client.StatisticSubIds.get(subid1="ADS778", sub_id_number=2) res = client.StatisticSubIds.get(limit=2) """ self.sanitize_sub_id_number(sub_id_number) kwargs['url'] = self.URL % (sub_id_number or '') kwargs['allowed_filtering'] = self.prepare_filtering(sub_id_number) kwargs['allowed_ordering'] = self.prepare_ordering(sub_id_number) return self.transport.set_method('GET').set_pagination(**kwargs).\ set_filtering(**kwargs).set_ordering(**kwargs).request(**kwargs)
class PaymentsManage(Item): """ Manage payments Required scope - "manage_websites" """ CREATE_URL = Item.prepare_url('payments/request/%(code)s') CONFIRM_URL = Item.prepare_url('payments/confirm/%(id)s') DELETE_URL = Item.prepare_url('payments/delete/%(id)s') def create(self, _code, **kwargs): """ Create a payment request. _code is a code of currency res = client.PaymentsManage.create('USD') """ kwargs['url'] = self.CREATE_URL kwargs['code'] = self.sanitize_currency(_code) return self.transport.set_method('POST').request(**kwargs) def confirm(self, _id, **kwargs): """ Confirm a payment request. _id is a payment id. res = client.PaymentsManage.confirm(71) """ kwargs['url'] = self.CONFIRM_URL kwargs['id'] = self.sanitize_id(_id) return self.transport.set_method('POST').request(**kwargs) def delete(self, _id, **kwargs): """ Delete a payment request. _id is a payment id. res = client.PaymentsManage.delete(71) """ kwargs['url'] = self.DELETE_URL kwargs['id'] = self.sanitize_id(_id) return self.transport.set_method('POST').request(**kwargs)
class CouponsForWebsite(CouponsBase): """ List of the website coupons Required scope - "coupons_for_website" """ URL = Item.prepare_url('coupons/website/%(id)s') SINGLE_URL = Item.prepare_url('coupons/%(c_id)s/website/%(id)s') def get(self, _id, **kwargs): """ Here id is a websites id res = client.CouponsForWebsite.get(_id=2) res = client.CouponsForWebsite.get(2) res = client.CouponsForWebsite.get(2, order_by=date_start) res = client.CouponsForWebsite.get(2, campaign=1, category=2) If you want to filter by many values of the same key: on example - campaign=1, campaign=2: use campaign=[1, 2] res = client.CouponsForWebsite.get(2, campaign=[1, 2], category=2) """ kwargs['url'] = self.URL kwargs['id'] = self.sanitize_id(_id) kwargs['allowed_ordering'] = self.ORDERING kwargs['allowed_filtering'] = self.FILTERING return self.transport.set_method('GET').set_pagination(**kwargs).\ set_ordering(**kwargs).set_filtering(**kwargs).request(**kwargs) def getOne(self, _id, c_id, **kwargs): """ Here id is a websites id and c_id is a coupon id res = client.CouponsForWebsite.getOne(_id=2, c_id=1) res = client.CouponsForWebsite.getOne(2, 1) """ kwargs['url'] = self.SINGLE_URL kwargs['id'] = self.sanitize_id(_id) kwargs['c_id'] = self.sanitize_id(c_id) return self.transport.set_method('GET').request(**kwargs)
class Products(Item): """ List of products Required scope - "products_for_website" """ URL = Item.prepare_url('products/website/%(id)s') SINGLE_URL = Item.prepare_url('products/%(p_id)s/website/%(id)s') ORDERING = ('price', 'category', 'vendor', 'campaign', 'date_updated') FILTERING = { 'keyword': Item.to_unicode, 'price_from': int, 'price_to': int, 'campaign': int, 'category': int, 'vendor': int } def get(self, _id, **kwargs): """ Here _id is website id. res = client.Products.get(22) res = client.Products.get(22, limit=1) res = client.Products.get(22, limit=1, order_by=-price) res = client.Products.get(22, price_from=1000) """ kwargs['url'] = self.URL kwargs['id'] = self.sanitize_id(_id) kwargs['allowed_ordering'] = self.ORDERING kwargs['allowed_filtering'] = self.FILTERING return self.transport.set_method('GET').set_pagination(**kwargs).\ set_filtering(**kwargs).set_ordering(**kwargs).request(**kwargs) def getOne(self, _id, p_id, **kwargs): """ Here _id is website id and p_id is product id res = client.ProductCampaigns.getOne(22, 2) """ kwargs['url'] = self.SINGLE_URL kwargs['id'] = self.sanitize_id(_id) kwargs['p_id'] = self.sanitize_id(p_id) return self.transport.set_method('GET').request(**kwargs)
class Coupons(CouponsBase): """ List of coupons Required scope - "coupons" """ URL = Item.prepare_url('coupons') SINGLE_URL = Item.prepare_url('coupons/%(id)s') def get(self, **kwargs): """ res = client.Coupons.get() res = client.Coupons.get(order_by=date_start) res = client.Coupons.get(order_by=-date_end) res = client.Coupons.get(campaign=1, category=2) If you want to filter by many values of the same key: on example - campaign=1, campaign=2: use campaign=[1, 2] res = client.Coupons.get(campaign=[1, 2], category=2) """ kwargs['url'] = self.URL kwargs['allowed_ordering'] = self.ORDERING kwargs['allowed_filtering'] = self.FILTERING return self.transport.set_method('GET').set_pagination(**kwargs).\ set_ordering(**kwargs).set_filtering(**kwargs).request(**kwargs) def getOne(self, _id, **kwargs): """ res = client.Coupons.getOne(_id=2) res = client.Coupons.getOne(2) """ kwargs['url'] = self.SINGLE_URL kwargs['id'] = self.sanitize_id(_id) return self.transport.set_method('GET').request(**kwargs)
class MoneyTransfersManage(Item): """ Manage webmaster money transfers Required scope - "manage_webmaster_money_transfers" """ CREATE_FIELDS = { 'comment': lambda x: Item.sanitize_string_value(x, 'comment'), 'recipient': lambda x: Item.sanitize_string_value(x, 'recipient'), 'currency': lambda x: Item.sanitize_currency(x, 'currency'), 'sum': lambda x: Item.sanitize_float_value(x, 'sum') } CREATE_URL = Item.prepare_url('webmaster_money_transfer/create') @staticmethod def sanitize_fields(fields, **kwargs): data = deepcopy(kwargs) for field in fields: data[field] = fields[field](data.get(field)) return dict([(key, value) for (key, value) in data.items() if value]) def create(self, **kwargs): """ Create a webmaster money transfers res = client.MoneyTransfersManage.create( sender='webmaster', recipient='recipient', sum=200, currency='USD', comment='comment') """ data = self.sanitize_fields(self.CREATE_FIELDS, **kwargs) kwargs['url'] = self.CREATE_URL return self.transport.set_method('POST').\ set_data(data).request(**kwargs)
class CampaignsManage(Item): """ Manage an advertising campaign Required scope - "manage_advcampaigns" """ CONNECT_URL = Item.prepare_url('advcampaigns/%(c_id)s/attach/%(w_id)s') DISCONNECT_URL = Item.prepare_url('advcampaigns/%(c_id)s/detach/%(w_id)s') def _request(self, c_id, w_id, **kwargs): kwargs['c_id'] = self.sanitize_id(c_id) kwargs['w_id'] = self.sanitize_id(w_id) return self.transport.set_method('POST').request(**kwargs) def connect(self, c_id, w_id, **kwargs): """ Connect an advertising campaign for a website Here w_id is a website id and c_id is a campaign id res = client.CampaignsManage.connect(6, 22) res = client.CampaignsManage.connect(c_id=6, w_id=22) """ kwargs['url'] = self.CONNECT_URL return self._request(c_id, w_id, **kwargs) def disconnect(self, c_id, w_id, **kwargs): """ Disconnect an advertising campaign from a website Here w_id is a website id and c_id is a campaign id res = client.CampaignsManage.disconnect(6, 22) res = client.CampaignsManage.disconnect(c_id=6, w_id=22) """ kwargs['url'] = self.DISCONNECT_URL return self._request(c_id, w_id, **kwargs)
class Websites(Item): """ List of websites Required scope - "websites" """ URL = Item.prepare_url('websites') SINGLE_URL = Item.prepare_url('websites/%(id)s') STATUS_FILTERING = ('new', 'pending', 'active', 'suspended', 'declined') CAMPAIGN_STATUS_FILTERING = ('pending', 'active', 'declined', 'disabled') FILTERING = { 'status': lambda x: x if x in Websites.STATUS_FILTERING else None, 'campaign_status': (lambda x: x if x in Websites.CAMPAIGN_STATUS_FILTERING else None), } def get(self, **kwargs): """ res = client.Websites.get() res = client.Websites.get(status='new', campaign_status='active') """ kwargs['url'] = self.URL kwargs['allowed_filtering'] = self.FILTERING return self.transport.set_method('GET').set_pagination(**kwargs).\ set_filtering(**kwargs).request(**kwargs) def getOne(self, _id, **kwargs): """ res = client.Websites.getOne(_id=2) res = client.Websites.getOne2(2) """ kwargs['url'] = self.SINGLE_URL kwargs['id'] = self.sanitize_id(_id) return self.transport.set_method('GET').request(**kwargs)
class AnnouncementsManage(Item): """ manage of announcements Required scope - "manage_announcements" """ DELETE_URL = Item.prepare_url('announcements/delete/%(id)s/') def delete(self, _id, **kwargs): """ Here _id is an announcement id res = client.AnnouncementsManage.delete(12) """ kwargs['url'] = self.DELETE_URL kwargs['id'] = self.sanitize_id(_id) return self.transport.set_method('POST').request(**kwargs)
class SystemCurrencies(Item): """ List of system currencies Required scope - "public_data" """ URL = Item.prepare_url('currencies') def get(self, **kwargs): """ res = client.SystemCurrencies.get() res = client.SystemCurrencies.get(limit=2, offset=1) """ kwargs['url'] = self.URL return self.transport.set_method('GET').set_pagination( **kwargs).request(**kwargs)
class StatisticActions(StatisticBase): """ Statistics by actions Required scope - "statistics" """ ORDERING = ('action', 'banner', 'banner_id', 'campaign', 'cart', 'click_date', 'conv_time', 'datetime', 'payment', 'status', 'subid', 'subid1', 'subid2', 'subid3', 'subid4', 'website') FILTERING = { 'date_start': Item.check_date, 'date_end': Item.check_date, 'closing_date_start': Item.check_date, 'closing_date_end': Item.check_date, 'status_updated_start': Item.check_long_date, 'status_updated_end': Item.check_long_date, 'website': int, 'campaign': int, 'subid': StatisticBase.check_sub_id, 'subid1': StatisticBase.check_sub_id, 'subid2': StatisticBase.check_sub_id, 'subid3': StatisticBase.check_sub_id, 'subid4': StatisticBase.check_sub_id, 'source': StatisticBase.check_sources, 'status': StatisticBase.check_status, 'keyword': Item.to_unicode, 'action': Item.to_unicode, 'action_type': StatisticBase.check_actions_type, 'action_id': int } URL = Item.prepare_url('statistics/actions') def get(self, **kwargs): """ res = client.StatisticActions.get() res = client.StatisticActions.get(website=1, campaign=1) res = client.StatisticActions.get(subid="ADS778") res = client.StatisticActions.get(limit=2) res = client.StatisticActions.get(date_start='01.01.2013') """ return super(StatisticActions, self).get(self.URL, **kwargs)
class StatisticDays(StatisticBase): """ Statistics by days Required scope - "statistics" """ URL = Item.prepare_url('statistics/dates') def get(self, **kwargs): """ res = client.StatisticDays.get() res = client.StatisticDays.get(website=1, campaign=1) res = client.StatisticDays.get(sub_id="ADS778") res = client.StatisticDays.get(limit=2) res = client.StatisticDays.get(date_start='01.01.2013') """ return super(StatisticDays, self).get(self.URL, **kwargs)
class WebsiteRegions(Item): """ List of websites regions Required scope - "public_data" """ URL = Item.prepare_url('websites/regions') def get(self, **kwargs): """ res = client.WebsiteRegions.get() res = client.WebsiteRegions.get(limit=2, offset=1) res = client.WebsiteRegions.get(limit=2, offset=1, language='ru') """ kwargs['url'] = self.URL return self.transport.set_method('GET').set_pagination( **kwargs).request(**kwargs)
class Balance(Item): """ Get balance information Required scope - "private_data_balance" """ def __call__(self, **kwargs): return self.get(**kwargs) URL = Item.prepare_url('me/balance') def get(self, **kwargs): """ res = client.Balance.get() """ kwargs['url'] = self.URL return self.transport.set_method('GET').set_method("GET").request(**kwargs)
class Me(Item): """ Get private information Required scope - "private_data"|"private_data_email"|"private_data_phone" """ def __call__(self, **kwargs): return self.get(**kwargs) URL = Item.prepare_url('me') def get(self, **kwargs): """ res = client.Me.get() res = client.Me.get(language='ru') """ kwargs['url'] = self.URL return self.transport.set_method("GET").request(**kwargs)
class StatisticKeywords(StatisticBase): """ Statistics by keywords Required scope - "statistics" """ ORDERING = ( 'actions', 'clicks', 'cr', 'ecpc', 'keyword', 'leads', 'payment_sum', 'payment_sum_approved', 'payment_sum_declined', 'payment_sum_open', 'sales', 'source', ) FILTERING = { 'date_start': Item.check_date, 'date_end': Item.check_date, 'website': int, 'campaign': int, 'source': (lambda x: x if x in StatisticBase.SOURCES else None), } URL = Item.prepare_url('statistics/keywords') def get(self, **kwargs): """ res = client.StatisticKeywords.get() res = client.StatisticKeywords.get(date_start='01.01.2013') res = client.StatisticKeywords.get(limit=2) """ return super(StatisticKeywords, self).get(self.URL, **kwargs)
class Banners(Item): """ List of banners Required scope - "banners" """ URL = Item.prepare_url('banners/%(id)s') def get(self, _id, **kwargs): """ Here _id is an id of advertising campaign res = client.Banners.get(_id=2) res = client.Banners.get(2) res = client.Banners.get(2, limit=2) """ kwargs['url'] = self.URL kwargs['id'] = self.sanitize_id(_id) return self.transport.set_method('GET').set_pagination( **kwargs).request(**kwargs)
class BannersForWebsite(Item): """ List of banners for the website Required scope - "banners_for_website" """ URL = Item.prepare_url('banners/%(id)s/website/%(w_id)s') def get(self, _id, w_id, **kwargs): """ Here _id is an id of advertising campaign and w_id is a id of website res = client.BannersForWebsite.get(_id=2, w_id=3) res = client.BannersForWebsite.get(2, 3) res = client.BannersForWebsite.get(2, 3, limit=5) """ kwargs['url'] = self.URL kwargs['id'] = self.sanitize_id(_id) kwargs['w_id'] = self.sanitize_id(w_id) return self.transport.set_method('GET').set_pagination( **kwargs).request(**kwargs)
class WebsitesManage(Item): """ Manage websites Required scope - "manage_websites" """ CREATE_URL = Item.prepare_url('website/create') UPDATE_URL = Item.prepare_url('website/update/%(id)s') VERIFY_URL = Item.prepare_url('website/verify/%(id)s') DELETE_URL = Item.prepare_url('website/delete/%(id)s') CREATE_FIELDS = { 'name': lambda x: Item.sanitize_string_value(x, 'name', max_length=200), 'kind': lambda x: Item.sanitize_string_value(x, 'kind', max_length=20), 'language': lambda x: Item.sanitize_string_value(x, 'language', max_length=2), 'adservice': lambda x: Item.sanitize_integer_value(x, 'adservice', blank=True), 'site_url': lambda x: Item.sanitize_string_value(x, 'site_url', max_length=255), 'description': lambda x: Item.sanitize_string_value( x, 'description', max_length=20000, min_length=100), 'categories': lambda x: Item.sanitize_integer_array(x, 'categories'), 'regions': lambda x: Item.sanitize_string_array(x, 'regions', max_length=2), 'atnd_visits': lambda x: Item.sanitize_integer_value(x, 'atnd_visits', blank=False), 'atnd_hits': lambda x: Item.sanitize_integer_value(x, 'atnd_hits', blank=False) } UPDATE_FIELDS = { 'name': lambda x: Item.sanitize_string_value( x, 'name', max_length=200, blank=True), 'language': lambda x: Item.sanitize_string_value( x, 'language', max_length=2, blank=True), 'adservice': lambda x: Item.sanitize_integer_value(x, 'adservice', blank=True), 'site_url': lambda x: Item.sanitize_string_value( x, 'site_url', max_length=255, blank=True), 'description': lambda x: Item.sanitize_string_value( x, 'description', max_length=20000, min_length=100, blank=True), 'categories': lambda x: Item.sanitize_integer_array(x, 'categories', blank=True), 'regions': lambda x: Item.sanitize_string_array( x, 'regions', max_length=2, blank=True), 'atnd_visits': lambda x: Item.sanitize_integer_value(x, 'atnd_visits', blank=True), 'atnd_hits': lambda x: Item.sanitize_integer_value(x, 'atnd_hits', blank=True) } @staticmethod def sanitize_fields(fields, **kwargs): data = deepcopy(kwargs) for field in fields: data[field] = fields[field](data.get(field)) return dict([(key, value) for (key, value) in data.items() if value]) def create(self, **kwargs): """ res = client.WebsitesManage.create(name='test', ....) """ data = self.sanitize_fields(self.CREATE_FIELDS, **kwargs) kwargs['url'] = self.CREATE_URL kwargs.pop('language', None) return self.transport.set_method('POST').set_data(data).request( **kwargs) def update(self, _id, **kwargs): """ Here _id is a website id. res = client.WebsitesManage.update(22, name='test', ....) """ data = self.sanitize_fields(self.UPDATE_FIELDS, **kwargs) kwargs['url'] = self.UPDATE_URL kwargs['id'] = self.sanitize_id(_id) kwargs.pop('language', None) return self.transport.set_method('POST').set_data(data).request( **kwargs) def verify(self, _id): """ Here _id is a website id. res = client.WebsitesManage.verify(40) """ data = {'url': self.VERIFY_URL, 'id': self.sanitize_id(_id)} return self.transport.set_method('POST').request(**data) def delete(self, _id): """ Here _id is a website id. res = client.WebsitesManage.delete(40) """ data = {'url': self.DELETE_URL, 'id': self.sanitize_id(_id)} return self.transport.set_method('POST').request(**data)