Advertisement
Guest User

Untitled

a guest
Jan 18th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.15 KB | None | 0 0
  1. import requests
  2.  
  3. from django.conf import settings
  4.  
  5. from vk.exceptions import (TokenNotProvided, CodeNotProvided, InvalidResponse, TokenExpiredException)
  6.  
  7.  
  8. class VkApiInterface:
  9.     api_url = settings.VK_API_URL
  10.     v = settings.VK_API_VERSION
  11.     client_id = settings.VK_APP_ID
  12.     client_secret = settings.VK_SECRET_KEY
  13.     access_token_url = settings.VK_ACCESS_TOKEN_URL
  14.  
  15.     def __init__(self, user_model):
  16.         self.user = user_model
  17.         self.token = user_model.vkauth.vk_token
  18.  
  19.     @classmethod
  20.     def verify_user_auth(cls, code, redirect_uri):
  21.         if not code:
  22.             raise CodeNotProvided()
  23.         response = requests.get(cls.access_token_url, {
  24.             'client_id': cls.client_id,
  25.             'client_secret': cls.client_secret,
  26.             'redirect_uri': redirect_uri,
  27.             'v': cls.v,
  28.             'code': code
  29.         })
  30.         if response.status_code == 200:
  31.             result = response.json()
  32.             if 'access_token' not in result:
  33.                 raise TokenNotProvided()
  34.             return {
  35.                 'access_token': result['access_token'],
  36.                 'expires_in': result['expires_in'],
  37.                 'user_id': result['user_id']
  38.             }
  39.         else:
  40.             raise InvalidResponse()
  41.  
  42.     def _perform_request(self, method_name, payload):
  43.         payload.update({
  44.             'v': self.v,
  45.             'access_token': self.token
  46.         })
  47.         response = requests.get("{}/{}".format(self.api_url, method_name), payload)
  48.         if response.status_code == 200:
  49.             result = response.json()
  50.             if 'error' in result:
  51.                 raise TokenExpiredException(message=result['error'])
  52.             if 'response' not in result:
  53.                 raise InvalidResponse()
  54.             return result['response']
  55.         else:
  56.             raise InvalidResponse()
  57.  
  58.     def get_friends(self, count=5000, order='random', fields=''):
  59.         result = self._perform_request('friends.get', {
  60.             'user_id': self.user.username,
  61.             'count': count,
  62.             'order': order,
  63.             'fields': fields
  64.         })
  65.         return result
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement