class Odnoklassniki::Client

Public Class Methods

new(attrs= {}) click to toggle source
# File lib/odnoklassniki/client.rb, line 6
def initialize(attrs= {})
  attrs = Odnoklassniki.options.merge(attrs)
  Config::VALID_OPTIONS_KEYS.each do |key|
    instance_variable_set("@#{key}".to_sym, attrs[key])
  end
  @refreshed = false
end

Public Instance Methods

get(method, params={}, &block) click to toggle source
# File lib/odnoklassniki/client.rb, line 14
def get(method, params={}, &block)
  request_method(:get, method, params, block)
end
post(method, params={}, &block) click to toggle source
# File lib/odnoklassniki/client.rb, line 18
def post(method, params={}, &block)
  request_method(:post, method, params, block)
end
refresh_token!() click to toggle source
# File lib/odnoklassniki/client.rb, line 22
def refresh_token!
  @refreshed = true
  data = request.post('/oauth/token.do', refresh_credentials)
  @request = nil
  @access_token = data['access_token']
end

Private Instance Methods

credentials() click to toggle source
# File lib/odnoklassniki/client.rb, line 68
def credentials
  {
    access_token:    @access_token,
    client_secret:   @client_secret,
    application_key: @application_key
  }
end
fallback(params) click to toggle source
# File lib/odnoklassniki/client.rb, line 31
def fallback(params)
  [params.delete(:method), params]
end
method_path(method) click to toggle source
# File lib/odnoklassniki/client.rb, line 35
def method_path(method)
  if method.start_with?('api')
    "/#{method}"
  elsif method.start_with?('/api')
    method
  elsif method.start_with?('/')
    "/api#{method}"
  else
    "/api/#{method}"
  end.gsub('.', '/')
end
refresh_credentials() click to toggle source
# File lib/odnoklassniki/client.rb, line 47
def refresh_credentials
  {
    refresh_token: @access_token,
    grant_type:    'refresh_token',
    client_id:     @client_id,
    client_secret: @client_secret
  }
end
request() click to toggle source
# File lib/odnoklassniki/client.rb, line 63
def request
  refresh_token! unless @refreshed
  @request ||= Request.new(credentials)
end
request_method(http_method, method, params, block) click to toggle source
# File lib/odnoklassniki/client.rb, line 56
def request_method(http_method, method, params, block)
  method, params = fallback(method) if method.is_a?(Hash)
  response = request.send(http_method, method_path(method), params)
  response = block.call response if block
  response
end