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]
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)