class XingApi::Client

Constants

OAUTH_ATTRIBUTES

Attributes

default_options[RW]
request_token_hash[RW]

Public Class Methods

configure() { |instance| ... } click to toggle source
# File lib/xing_api/client.rb, line 12
def configure
  instance = new
  yield instance
  self.default_options = instance.send(:to_hash)
end
new(options = {}) click to toggle source
# File lib/xing_api/client.rb, line 19
def initialize(options = {})
  options = (self.class.default_options ||= {}).merge(options)
  OAUTH_ATTRIBUTES.each do |attribute|
    send "#{attribute}=", options[attribute]
  end
end

Public Instance Methods

get_access_token(verifier, options = {}) click to toggle source
# File lib/xing_api/client.rb, line 46
def get_access_token(verifier, options = {})
  ensure_attributes_are_set! %w(consumer_key consumer_secret)
  options = request_token_hash.merge(options) if request_token_hash

  access_token = rebuild_request_token(options).get_access_token(oauth_verifier: verifier)
  self.oauth_token = access_token.token
  self.oauth_token_secret = access_token.secret
  {
    access_token: access_token.token,
    access_token_secret: access_token.secret
  }
end
get_request_token(oauth_callback = 'oob') click to toggle source
# File lib/xing_api/client.rb, line 35
def get_request_token(oauth_callback = 'oob')
  ensure_attributes_are_set! %w(consumer_key consumer_secret)

  request_token = request_token(oauth_callback)
  self.request_token_hash = {
    request_token: request_token.token,
    request_token_secret: request_token.secret,
    authorize_url: request_token.authorize_url
  }
end
request(http_verb, url, options = {}) click to toggle source
# File lib/xing_api/client.rb, line 26
def request(http_verb, url, options = {})
  full_url = url + hash_to_params(options)
  handle(access_token.request(http_verb, full_url))
end
request_with_body(http_verb, url, body_hash = {}) click to toggle source
# File lib/xing_api/client.rb, line 31
def request_with_body(http_verb, url, body_hash = {})
  handle(access_token.request(http_verb, url, body_hash.to_json, 'Content-Type' => 'application/json'))
end

Private Instance Methods

access_token() click to toggle source
# File lib/xing_api/client.rb, line 90
def access_token
  OAuth::AccessToken.new(consumer, oauth_token, oauth_token_secret)
end
consumer() click to toggle source
# File lib/xing_api/client.rb, line 86
def consumer
  OAuth::Consumer.new(consumer_key, consumer_secret, xing_oauth_options)
end
ensure_attributes_are_set!(attribute_names) click to toggle source
# File lib/xing_api/client.rb, line 111
def ensure_attributes_are_set!(attribute_names)
  Array(attribute_names).each do |attribute_name|
    raise "#{attribute_name} is missing" unless send(attribute_name)
  end
end
hash_to_params(hash) click to toggle source
# File lib/xing_api/client.rb, line 106
def hash_to_params(hash)
  return '' if hash.empty?
  '?' + hash.map { |k, v| "#{k}=#{CGI.escape(v.to_s)}" }.join('&')
end
rebuild_request_token(options) click to toggle source
# File lib/xing_api/client.rb, line 67
def rebuild_request_token(options)
  request_token = options[:request_token] || raise('request_token missing')
  request_token_secret = options[:request_token_secret] || raise('request_token_secret missing')
  OAuth::RequestToken.new(consumer, request_token, request_token_secret)
end
request_token(oauth_callback) click to toggle source
# File lib/xing_api/client.rb, line 82
def request_token(oauth_callback)
  @request_token ||= consumer.get_request_token(oauth_callback: oauth_callback)
end
to_hash() click to toggle source
# File lib/xing_api/client.rb, line 73
def to_hash
  {
    consumer_key:       consumer_key,
    consumer_secret:    consumer_secret,
    oauth_token:        oauth_token,
    oauth_token_secret: oauth_token_secret
  }
end
xing_oauth_options() click to toggle source
# File lib/xing_api/client.rb, line 94
def xing_oauth_options
  {
    site:               ENV['XING_API_SITE'] || 'https://api.xing.com',
    request_token_path: '/v1/request_token',
    authorize_path:     '/v1/authorize',
    access_token_path:  '/v1/access_token',
    signature_method:   'PLAINTEXT',
    oauth_version:      '1.0',
    scheme:             'query_string'
  }
end