Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
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)
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
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)
Ejemplo n.º 8
0
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)
Ejemplo n.º 9
0
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)
Ejemplo n.º 10
0
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)
Ejemplo n.º 11
0
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)
Ejemplo n.º 12
0
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)
Ejemplo n.º 13
0
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)
Ejemplo n.º 14
0
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)
Ejemplo n.º 15
0
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)
Ejemplo n.º 16
0
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)
Ejemplo n.º 17
0
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)
Ejemplo n.º 18
0
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)
Ejemplo n.º 19
0
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)
Ejemplo n.º 20
0
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)
Ejemplo n.º 21
0
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)
Ejemplo n.º 22
0
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)
Ejemplo n.º 23
0
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)
Ejemplo n.º 24
0
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)
Ejemplo n.º 25
0
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)
Ejemplo n.º 26
0
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)
Ejemplo n.º 27
0
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)
Ejemplo n.º 28
0
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)
Ejemplo n.º 29
0
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)
Ejemplo n.º 30
0
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)