예제 #1
0
 def __init__(self):
     proxies = getproxies()
     if len(proxies) == 0:
         http_provider = onedrivesdk.HttpProvider()
     else:
         from onedrivesdk.helpers.http_provider_with_proxy import HttpProviderWithProxy
         http_provider = HttpProviderWithProxy(proxies, verify_ssl=True)
     auth_provider = onedrivesdk.AuthProvider(http_provider=http_provider,
                                              client_id=self.APP_CLIENT_ID,
                                              session_type=od_api_session.OneDriveAPISession,
                                              scopes=self.APP_SCOPES)
     self.client = onedrivesdk.OneDriveClient(self.APP_BASE_URL, auth_provider, http_provider)
예제 #2
0
    def get_profile(self):
        """
        Discover the OneDrive for Business resource URI
        reference: https://github.com/OneDrive/onedrive-api-docs/blob/master/auth/aad_oauth.md
        util link: https://github.com/OneDrive/onedrive-api-docs
        """
        # more detailed: ?$expand=children
        url = self.APP_ENDPOINT + '_api/v1.0/me/files/root'
        headers = {
            'Authorization': 'Bearer ' + self.auth_provider.access_token
        }
        proxies = getproxies()
        if len(proxies) == 0:
            proxies = None
        response = requests.get(url,
                                headers=headers,
                                proxies=proxies,
                                verify=True)
        data = response.json()
        if response.status_code != requests.codes.ok:
            raise ValueError('Failed to read user profile:' +
                             data['error']['message'])
        data['account_type'] = self.ACCOUNT_TYPE
        url = self.ACCESS_TOKEN_URL

        content = {
            'grant_type': 'authorization_code',
            'code': self.code,
            'redirect_uri': self.REDIRECT_URL,
            'scope': self.SCOPES,
            'client_id': self.APP_ID,
            'client_secret': self.APP_SECRET
        }

        response = requests.post(url, content)
        resp = response.json()
        token = resp['access_token']
        data['refresh_token'] = token

        url = self.BASE_URL + 'me/'
        headers = {'Authorization': 'Bearer ' + token}

        response = requests.get(url, headers=headers)
        resp = response.json()

        data['name'] = resp['displayName']
        data['first_name'] = resp['givenName']
        data['last_name'] = resp['surname']
        data['emails'] = resp['mail']

        # End user information
        return account_profile.OneDriveAccountBusiness(data)
예제 #3
0
    def __init__(self, endpoint=None):
        proxies = getproxies()
        if len(proxies) == 0:
            self.http_provider = onedrivesdk.HttpProvider()
        else:
            from onedrivesdk.helpers.http_provider_with_proxy import HttpProviderWithProxy
            self.http_provider = HttpProviderWithProxy(proxies, verify_ssl=True)

        self.auth_provider = onedrivesdk.AuthProvider(self.http_provider,
                                                 self.APP_CLIENT_ID_BUSINESS,
                                                 session_type=od_api_session.OneDriveAPISession,
                                                 auth_server_url=self.APP_AUTH_SERVER_URL_BUSINESS,
                                                 auth_token_url=self.APP_TOKEN_URL_BUSINESS)

        if (endpoint is not None):
            self.client = onedrivesdk.OneDriveClient(endpoint + '_api/v2.0/', self.auth_provider, self.http_provider)
예제 #4
0
 def get_profile(self, user_id='me'):
     """
     Fetch basic profile of the specified user (Live ID).
     :param str user_id: (Optional) ID of the target user.
     :return od_models.account_profile.OneDriveUserProfile:
         An OneDriveUserProfile object that od_models the user info.
     """
     url = 'https://apis.live.net/v5.0/' + user_id
     headers = {'Authorization': 'Bearer ' + self.client.auth_provider.access_token}
     proxies = getproxies()
     if len(proxies) == 0:
         proxies = None
     response = requests.get(url, headers=headers, proxies=proxies, verify=True)
     if response.status_code != requests.codes.ok:
         raise ValueError('Failed to read user profile.')
     data = response.json()
     data['account_type'] = self.ACCOUNT_TYPE
     return account_profile.OneDriveAccountPersonal(data)
예제 #5
0
    def get_profile(self):
        """
        Discover the OneDrive for Business resource URI
        reference: https://github.com/OneDrive/onedrive-api-docs/blob/master/auth/aad_oauth.md
        util link: https://github.com/OneDrive/onedrive-api-docs
        """
        url = self.APP_ENDPOINT + '_api/v1.0/me/files/root' #more detailed: ?$expand=children
        headers = {'Authorization': 'Bearer ' + self.auth_provider.access_token}
        proxies = getproxies()
        if len(proxies) == 0:
            proxies = None
        #print('get from: curl --header "' + str(headers) + '" '  + str(url))
        response = requests.get(url, headers=headers, proxies=proxies, verify=True)
        data = response.json()
        if response.status_code != requests.codes.ok:
            raise ValueError('Failed to read user profile:' + data['error']['message'])
        data['account_type'] = self.ACCOUNT_TYPE

        #Get user informations
        print('Need authenticate again to get personal information')

        app_id = '0e170d2c-0ac5-4a4f-9099-c6bb0fb52d0c'
        app_secret = 'xdGsBCTOiCHxBWJcKyK2WpA'
        base_url = 'https://graph.microsoft.com/v1.0/'
        access_token_url = 'https://login.microsoftonline.com/common/oauth2/v2.0/token'
        authorize_url = 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize'
        redirect_url = 'https://onedrivesite.mario-apra.tk/'

        auth_url = authorize_url + '?client_id=' + app_id + '&response_type=code&redirect_uri=https%3A%2F%2Fonedrivesite.mario-apra.tk%2F&scope=User.Read'



        translator = od_i18n.Translator(('od_pref', ), locale_str=str(locale.getlocale()[0]))

        click.echo(translator['od_pref.authenticate_account.paste_url_note'])
        click.echo('\n' + click.style(auth_url, underline=True) + '\n')
        click.echo(translator['od_pref.authenticate_account.paste_url_instruction'].format(
            redirect_url=click.style(redirect_url, bold=True)))
        url = click.prompt(translator['od_pref.authenticate_account.paste_url_prompt'], type=str)
        code = extract_qs_param(url, 'code')
        click.echo()

        url = access_token_url

        content = {
            'grant_type': 'authorization_code',
            'code': code,
            'redirect_uri': redirect_url,
            'scope': 'User.Read',
            'client_id': app_id,
            'client_secret': app_secret
            }

        response = requests.post(url, content)
        resp = response.json()

        token = resp['access_token']
        data['refresh_token'] = token

        url = base_url + 'me/'
        headers = {'Authorization': 'Bearer ' + token}

        response = requests.get(url, headers=headers)
        resp = response.json()

        data['name'] = resp['displayName']
        data['first_name'] = resp['givenName']
        data['last_name'] = resp['surname']
        data['emails'] = resp['mail']
        
        #End user informations

        return account_profile.OneDriveAccountBusiness(data)