lib/vkontakte_api/client.rb in vkontakte_api-1.0.4 vs lib/vkontakte_api/client.rb in vkontakte_api-1.1
- old
+ new
@@ -1,33 +1,77 @@
module VkontakteApi
# A class representing a connection to VK. It holds the access token.
class Client
include Resolver
+ # Access rights and their respective number representation.
+ SCOPE = {
+ :notify => 1,
+ :friends => 2,
+ :photos => 4,
+ :audio => 8,
+ :video => 16,
+ :offers => 32,
+ :questions => 64,
+ :pages => 128,
+ :status => 1024,
+ :notes => 2048,
+ :messages => 4096,
+ :wall => 8192,
+ :ads => 32768,
+ :docs => 131072,
+ :groups => 262144,
+ :notifications => 524288,
+ :stats => 1048576
+ }
+
# An access token needed by authorized requests.
# @return [String]
attr_reader :token
# Current user id.
# @return [Integer]
attr_reader :user_id
+ # Token expiration time
+ # @return [Time]
+ attr_reader :expires_at
# A new API client.
# If given an `OAuth2::AccessToken` instance, it extracts and keeps
- # the token string and the user id; otherwise it just stores the given token.
+ # the token string, the user id and the expiration time;
+ # otherwise it just stores the given token.
# @param [String, OAuth2::AccessToken] token An access token.
def initialize(token = nil)
if token.respond_to?(:token) && token.respond_to?(:params)
# token is an OAuth2::AccessToken
- @token = token.token
- @user_id = token.params['user_id']
+ @token = token.token
+ @user_id = token.params['user_id']
+ @expires_at = Time.at(token.expires_at) unless token.expires_at.nil?
else
# token is a String or nil
@token = token
end
end
# Is a `VkontakteApi::Client` instance authorized.
def authorized?
!@token.nil?
+ end
+
+ # Did the token already expire.
+ def expired?
+ @expires_at && @expires_at < Time.now
+ end
+
+ # Access rights of this token.
+ # @return [Array] An array of symbols representing the access rights.
+ def scope
+ SCOPE.reject do |access_scope, mask|
+ (settings & mask).zero?
+ end.keys
+ end
+
+ private
+ def settings
+ @settings ||= self.get_user_settings
end
end
end