lib/vkontakte/app/base.rb in vkontakte-0.0.2 vs lib/vkontakte/app/base.rb in vkontakte-0.0.3
- old
+ new
@@ -2,110 +2,109 @@
module Vkontakte
module App
class Base
include ::HTTParty
-
- base_uri "https://api.vkontakte.ru"
+
+ base_uri "https://api.vk.com"
format Vkontakte.config.format
debug_output Vkontakte.config.logger
-
+
attr_accessor :auth
-
+
def initialize(app_id = nil, app_secret = nil)
@config = {
- :app_id => (app_id || Vkontakte.config.app_id),
+ :app_id => (app_id || Vkontakte.config.app_id),
:app_secret => (app_secret || Vkontakte.config.app_secret)
}
end
-
- # http://vkontakte.ru/developers.php?oid=-1&p=%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F
+
+ # http://vk.com/developers.php?oid=-1&p=%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F
# Site auth:
- # https://api.vkontakte.ru/oauth/access_token?
+ # https://oauth.vk.com/access_token?
# client_id=APP_ID&
# client_secret=APP_SECRET&
# code=7a6fa4dff77a228eeda56603b8f53806c883f011c40b72630bb50df056f6479e52a
#
# Server auth:
- # https://api.vkontakte.ru/oauth/access_token?
- # client_id=' + APP_ID + '&client_secret=' + APP_SECRET + '&grant_type=client_credentials'
+ # https://oauth.vk.com/access_token?client_id=' + APP_ID + '&client_secret=' + APP_SECRET + '&grant_type=client_credentials'
#
# Response:
# {"access_token":"533bacf01e11f55b536a565b57531ac114461ae8736d6506a3", "expires_in":43200, "user_id":6492}
#
- def authorize(code = nil, options = {})
- options = {
- :client_id => @config[:app_id],
+ def authorize(code = nil, params = {})
+ params = {
+ :client_id => @config[:app_id],
:client_secret => @config[:app_secret],
:code => code
- }.merge(options)
-
+ }.merge(params)
+
# Server auth
- if options[:code].blank?
- options.delete(:code)
- options[:grant_type] = 'client_credentials'
+ if params[:code].blank?
+ params.delete(:code)
+ params[:grant_type] = 'client_credentials'
end
-
- @auth = get("/oauth/access_token", options)
+
+ @auth = get("/access_token", {:query => params, :base_uri => "https://oauth.vk.com"})
end
-
+
# Check if app is authorized
#
def authorized?
auth && auth['access_token']
end
-
- # Выполнение запросов к API
- # https://api.vkontakte.ru/method/METHOD_NAME?PARAMETERS&access_token=ACCESS_TOKEN
+
+ # Выполнение запросов к API
+ # https://api.vk.com/method/METHOD_NAME?PARAMETERS&access_token=ACCESS_TOKEN
# METHOD_NAME – название метода из списка функций API,
# PARAMETERS – параметры соответствующего метода API,
- # ACCESS_TOKEN – ключ доступа, полученный в результате успешной авторизации приложения.
+ # ACCESS_TOKEN – ключ доступа, полученный в результате успешной авторизации приложения.
# Example:
- # https://api.vkontakte.ru/method/getProfiles?uid=66748&access_token=533bacf01e11f55b536a565b57531ac114461ae8736d6506a3
+ # https://api.vk.com/method/getProfiles?uid=66748&access_token=533bacf01e11f55b536a565b57531ac114461ae8736d6506a3
#
- # More info: http://vkontakte.ru/developers.php?oid=-1&p=%D0%92%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2_%D0%BA_API
+ # More info: http://vk.com/developers.php?oid=-1&p=%D0%92%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2_%D0%BA_API
#
def call(method_name, params = {})
params[:access_token] ||= @auth['access_token'] if authorized?
-
+
unless params[:access_token].blank?
- get("/method/#{method_name}", params)
+ get("/method/#{method_name}", {:query => params, :base_uri => "https://api.vk.com"})
else
raise VkException.new(method_name, {
- :error => 'access_token is blank',
+ :error => 'access_token is blank',
:error_description => 'You need first authorize app before call API methods.'
})
end
end
-
+
protected
-
+
def get(method_name, options = {})
- response = self.class.get(method_name, :query => options)
-
+ response = self.class.get(method_name, options)
+
if response['error']
raise VkException.new(method_name, response)
else
return response
end
end
end
-
+
# Errors
# {"error":"invalid_grant","error_description":"Code is expired."}
# {"error":{"error_code":5,"error_msg":"User authorization failed: invalid application type","request_params":[{"key":"oauth","value":"1"},{"key":"method","value":"getProfiles"},{"key":"uid","value":"66748"},{"key":"access_token","value":"533bacf01e11f55b536a565b57531ac114461ae8736d6506a3"}]}}
#
class VkException < Exception
def initialize(method_name, options)
error_hash = options.symbolize_keys
@message = "Error in #{method_name}: "
-
+
if error_hash[:error].is_a?(Hash)
@message += error_hash[:error].inspect
else
@message += [error_hash[:error], error_hash[:error_description]].join('-')
end
-
+
super @message
end
end
end
end