class Vkontakte::API
Attributes
access_token[R]
api_version[R]
lang[RW]
proxy[R]
timeout[R]
Public Class Methods
new( access_token = nil, proxy: nil, api_version: Vkontakte::API_VERSION, lang: 'ru', timeout: 60 )
click to toggle source
# File lib/vkontakte/api.rb, line 12 def initialize( access_token = nil, proxy: nil, api_version: Vkontakte::API_VERSION, lang: 'ru', timeout: 60 ) @access_token = access_token @proxy = proxy @api_version = api_version @lang = lang @timeout = timeout end
Public Instance Methods
method_missing(method, *params)
click to toggle source
# File lib/vkontakte/api.rb, line 26 def method_missing(method, *params) method_name = method.to_s.split('_').join('.') response = execute(method_name, *params) if response['error'] error_code = response['error']['error_code'] error_msg = response['error']['error_msg'] raise Vkontakte::API::Error.new(method_name, error_code, error_msg, params) end response['response'] end
Private Instance Methods
execute(method_name, params = {})
click to toggle source
# File lib/vkontakte/api.rb, line 40 def execute(method_name, params = {}) params.merge!(access_token: @access_token, lang: @lang, v: @api_version, https: '1') url = "https://api.vk.com/method/#{method_name}" response = make_request(url, params) JSON.parse(response.body) end
make_request(url, params)
click to toggle source
# File lib/vkontakte/api.rb, line 50 def make_request(url, params) uri = URI(url) use_ssl = uri.scheme == 'https' request = Net::HTTP::Post.new(uri) request.form_data = params if @proxy if @proxy.http? Net::HTTP.start( uri.hostname, uri.port, @proxy.addr, @proxy.port, use_ssl: use_ssl, read_timeout: timeout, open_timeout: timeout ) do |http| http.request(request) end elsif @proxy.socks? Net::HTTP.SOCKSProxy(@proxy.addr, @proxy.port).start(uri.hostname, uri.port, use_ssl: use_ssl) do |http| http.request(request) end end else Net::HTTP.start( uri.hostname, uri.port, use_ssl: use_ssl, read_timeout: timeout, open_timeout: timeout ) do |http| http.request(request) end end end