Beispiel #1
0
class Imgur(Source):
    def __init__(self, data_file, client_id, client_secret):
        Source.__init__(self, data_file)
        self.consumer = Consumer(client_id, client_secret)
        self.access_token = None

    def setUp(self):
        try:
            refresh_token = self._read_from_file('imgur')
        except (IOError, ValueError, KeyError):
            refresh_token = None
        if not refresh_token:
            print self.consumer.authorize(AUTH_URL, 'pin')
            refresh_token = self.consumer.get_request_token(
                TOKEN_URL, 'pin', pin=raw_input('Please enter the pin: '))
            self._write_to_file('imgur', refresh_token)
        self.access_token = self.consumer.get_access_token(
            TOKEN_URL, refresh_token)

    def get_message(self, album_name):
        albums = self.consumer.api_request_get(ALBUMS_URL,
                                               self.access_token)['data']
        album_id = None
        for album in albums:
            if album['title'] == album_name:
                album_id = album['id']
        images = self.consumer.api_request_get(
            ALBUM_URL + album_id, self.access_token)['data']['images']
        links = [image['link'] for image in images]
        return random.sample(links, 1)[0]
Beispiel #2
0
class Google(Source):
    def __init__(self, data_file, client_id, client_secret, from_address,
                 header, footer):
        Source.__init__(self, data_file)
        self.consumer = Consumer(client_id, client_secret)
        self.from_address = from_address
        self.header = header
        self.footer = footer
        self.access_token = None

    def setUp(self):
        try:
            refresh_token = self._read_from_file('google')
        except (IOError, ValueError, KeyError):
            refresh_token = None
        if not refresh_token:
            print self.consumer.authorize(
                AUTH_URL,
                'code',
                redirect_uri='urn:ietf:wg:oauth:2.0:oob',
                scope='%20'.join([
                    'https://mail.google.com/',
                    'https://www.googleapis.com/auth/gmail.modify',
                    'https://www.googleapis.com/auth/gmail.compose'
                ]),
                login_hint=self.from_address)
            refresh_token = self.consumer.get_request_token(
                TOKEN_URL,
                'authorization_code',
                code=raw_input(
                    'Please enter the code provided by the website: '),
                redirect_uri='urn:ietf:wg:oauth:2.0:oob')
            self._write_to_file('google', refresh_token)
        self.access_token = self.consumer.get_access_token(
            TOKEN_URL, refresh_token)

    def send_message(self, message, to_address):
        msg = MIMEText(self.header + message + self.footer)
        msg['To'] = to_address
        msg['From'] = self.from_address
        raw = base64.urlsafe_b64encode(msg.as_string())
        return self.consumer.api_request_post(SEND_URL,
                                              self.access_token,
                                              raw=raw)