Example #1
0
def get_user_devices(username):
    user = get_user_by_field("user", username)
    if (user != None):
        refresh_access_token(user)
        user = get_user_by_field("user", username)
        uri = "https://api.spotify.com/v1/me/player/devices"
        auth = "Bearer " + user["spotify"]["access_token"] + ""
        headers = {
            "Accept": "application/json",
            "Content-Type": "application/json",
            "Authorization": auth
        }
        response = requests.get(uri, headers=headers)
        data = json.loads(response.text)
        return data
    return None
Example #2
0
def set_user_code(code, state):
    user = get_user_by_field("spotify.state", state)
    if (user != None):
        log.warning("set_user_code")
        uri = "https://accounts.spotify.com/api/token"
        payload = {
            "grant_type": "authorization_code",
            "code": code,
            "redirect_uri": redirect_uri
        }
        headers = {
            "Authorization": auth,
            'Content-Type': 'application/x-www-form-urlencoded'
        }
        log.warning(redirect_uri)
        response = requests.post(uri, data=payload, headers=headers)
        log.warning(response)
        data = json.loads(response.text)
        log.warning(data)
        spotify_dict = {
            "user": user["spotify"]["user"],
            "state": state,
            "access_token": data["access_token"],
            "refresh_token": data["refresh_token"]
        }
        add_user_field(user["user"], "spotify", spotify_dict)
        devices = get_user_devices(user["user"])
        add_user_field(user["user"], "spotify.devices", devices)
        return "Spotify authentication successful, click <a href=http://" + redirect_uri + "/connect/spotify/devices/" + user[
            "spotify"][
                "user"] + ">here</a> to get a list of your available devices."
    return 'Authorization request not set'
Example #3
0
def post_tweet(username, parameters):
    user = get_user_by_field("user", username)
    if (user["twitter"]["user"] == parameters["TwitterUsername"]):
        auth = tweepy.OAuthHandler(consumer_token, consumer_secret)
        auth.set_access_token(user["twitter"]["access_token"],
                              user["twitter"]["access_token_secret"])
        api = tweepy.API(auth)
        api.update_status(parameters["Tweet"])
    else:
        log.warning("Usuarios no coinciden")
    return ''
Example #4
0
def set_user_credentials(uri, state):
    user = get_user_by_field("gmail.state", state)
    if (user != None):
        flow.fetch_token(authorization_response=uri)
        credentials = flow.credentials
        gmail_dict = {
            "state": state,
            "user": user["gmail"]["user"],
            "token": credentials.token,
            "refresh_token": credentials.refresh_token,
            "token_uri": credentials.token_uri,
            "scopes": credentials.scopes
        }
        add_user_field(user["user"], "gmail", gmail_dict)
        return "Gmail authentication successful"
    return 'CSRF Warning! State not equal in request and response.'
Example #5
0
def set_user_token(oauth_token, oauth_verifier):
    user=get_user_by_field("twitter.oauth_token",oauth_token)
    if (user!=None):
        auth = tweepy.OAuthHandler(consumer_token, consumer_secret)
        auth.request_token = { 'oauth_token' : oauth_token,
                                'oauth_token_secret' : oauth_verifier }
        try:
            auth.get_access_token(oauth_verifier)
            add_user_field(user["user"], "twitter.access_token", auth.access_token)
            add_user_field(user["user"], "twitter.access_token_secret", auth.access_token_secret)
            log.warning(auth.access_token)
            log.warning(auth.access_token_secret)
            return "Twitter authentication successful"
        except tweepy.TweepError:
            log.warning(tweepy.TweepError)
            return 'Error! Failed to get access token.'
    return 'Error! Failed to get access token, request token not found'
Example #6
0
def play(username, parameters):
    user = get_user_by_field("user", username)
    if (user != None):
        devices = get_user_devices(user["user"])
        add_user_field(user["user"], "spotify.devices", devices)
        if (devices["devices"][0]["name"] == parameters["MusicPlayerName"]):
            uri = "https://api.spotify.com/v1/me/player/play?device_id=" + devices[
                "devices"][0]["id"]
            auth = "Bearer " + user["spotify"]["access_token"] + ""
            song = getSong(parameters["Song"], parameters["Artist"],
                           parameters["Album"],
                           user["spotify"]["access_token"])
            payload = {"uris": [song]}
            headers = {
                "Accept": "application/json",
                "Content-Type": "application/json",
                "Authorization": auth
            }
            response = requests.put(uri, data=payload, headers=headers)
            log.warning(response.text)
        else:
            log.warning("Usuarios no coinciden")
    return ''
Example #7
0
def send_message(username, parameters):
    user = get_user_by_field("user", username)
    if (user["gmail"]["user"] == parameters["EmailAddress"]):
        log.warning(user)
        log.warning(client_secret)
        log.warning(client_id)
        credentials = google.oauth2.credentials.Credentials(
            user["gmail"]["token"], user["gmail"]["refresh_token"], None,
            user["gmail"]["token_uri"], client_id, client_secret,
            user["gmail"]["scopes"])
        gmail = build('gmail', 'v1', credentials=credentials)
        message = MIMEText(parameters["EmailMessage"])
        message['to'] = parameters["RecipientAddress"]
        message['from'] = parameters["EmailAddress"]
        message['subject'] = parameters["EmailSubject"]
        message = message.as_string()
        message = base64.urlsafe_b64encode(
            message.encode('UTF-8')).decode('ascii')
        m = {'raw': message}
        message = (gmail.users().messages().send(userId="me",
                                                 body=m).execute())
    else:
        log.warning("Usuarios no coinciden")
    return ''