class Sitejabber::ApiResource

Constants

MUTEX

Public Class Methods

new() click to toggle source
# File lib/sitejabber/api_resource.rb, line 5
def initialize; end

Public Instance Methods

request(path, verb: "get", params: {}) click to toggle source
# File lib/sitejabber/api_resource.rb, line 7
def request path, verb: "get", params: {}, options: {}
  MUTEX.synchronize do
    begin
      _renew_token if Auth::Token.expired?

      _call_api path, verb, params, options
    rescue AuthenticationError => ae
      if [ 203, 204, 206, 207 ].include? ae.error_info[ "errorCode" ]
        # Invalid token/session, try again
        _renew_token
        _call_api path, verb, params, options
      else
        raise ae
      end
    end
  end
end

Private Instance Methods

_call_api(path, verb, params, options) click to toggle source
# File lib/sitejabber/api_resource.rb, line 27
def _call_api path, verb, params, options
  opts = options.dup
  opts[ :headers ] ||= {}
  opts[ :headers ].merge! "user_token" => Auth::Token.get

  request = Request.new path, options: opts, params: params, verb: verb

  Api.request request
end
_renew_token() click to toggle source
# File lib/sitejabber/api_resource.rb, line 37
def _renew_token
  response = Authenticator.new.request_token

  Auth::Token.set response[ "token" ], response[ "expire" ]
end