Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import requests
- from django.conf import settings
- from vk.exceptions import (TokenNotProvided, CodeNotProvided, InvalidResponse, TokenExpiredException)
- class VkApiInterface:
- api_url = settings.VK_API_URL
- v = settings.VK_API_VERSION
- client_id = settings.VK_APP_ID
- client_secret = settings.VK_SECRET_KEY
- access_token_url = settings.VK_ACCESS_TOKEN_URL
- def __init__(self, user_model):
- self.user = user_model
- self.token = user_model.vkauth.vk_token
- @classmethod
- def verify_user_auth(cls, code, redirect_uri):
- if not code:
- raise CodeNotProvided()
- response = requests.get(cls.access_token_url, {
- 'client_id': cls.client_id,
- 'client_secret': cls.client_secret,
- 'redirect_uri': redirect_uri,
- 'v': cls.v,
- 'code': code
- })
- if response.status_code == 200:
- result = response.json()
- if 'access_token' not in result:
- raise TokenNotProvided()
- return {
- 'access_token': result['access_token'],
- 'expires_in': result['expires_in'],
- 'user_id': result['user_id']
- }
- else:
- raise InvalidResponse()
- def _perform_request(self, method_name, payload):
- payload.update({
- 'v': self.v,
- 'access_token': self.token
- })
- response = requests.get("{}/{}".format(self.api_url, method_name), payload)
- if response.status_code == 200:
- result = response.json()
- if 'error' in result:
- raise TokenExpiredException(message=result['error'])
- if 'response' not in result:
- raise InvalidResponse()
- return result['response']
- else:
- raise InvalidResponse()
- def get_friends(self, count=5000, order='random', fields=''):
- result = self._perform_request('friends.get', {
- 'user_id': self.user.username,
- 'count': count,
- 'order': order,
- 'fields': fields
- })
- return result
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement