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)
Beispiel #2
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)