class OneApi::OneApiClient
Attributes
raise_exceptions[RW]
If true – an exception will be thrown on error, otherwise, you have to check the is_success
and exception methods on resulting objects.
Public Class Methods
new(username, password, base_url=nil)
click to toggle source
# File lib/oneapi-ruby/client.rb, line 17 def initialize(username, password, base_url=nil) @username = username @password = password if base_url @base_url = base_url else @base_url = 'https://oneapi.infobip.com' end if @base_url[-1, 1] != '/' @base_url += '/' end @oneapi_authentication = nil @raise_exceptions = true end
Public Instance Methods
convert_from_json(classs, json, is_error)
click to toggle source
# File lib/oneapi-ruby/client.rb, line 151 def convert_from_json(classs, json, is_error) result = Conversions.from_json(classs, json, is_error) if @raise_exceptions and !result.is_success raise "#{result.exception.message_id}: #{result.exception.text} [#{result.exception.variables}]" end result end
execute_GET(url, params=nil)
click to toggle source
# File lib/oneapi-ruby/client.rb, line 89 def execute_GET(url, params=nil) execute_request('GET', url, params) end
execute_POST(url, params=nil)
click to toggle source
# File lib/oneapi-ruby/client.rb, line 93 def execute_POST(url, params=nil) execute_request('POST', url, params) end
execute_request(http_method, url, params)
click to toggle source
# File lib/oneapi-ruby/client.rb, line 97 def execute_request(http_method, url, params) rest_url = get_rest_url(url) uri = URI(rest_url) if Utils.empty(params) params = {} end if http_method == 'GET' request = Net::HTTP::Get.new("#{uri.request_uri}?#{urlencode(params)}") elsif http_method == 'POST' request = Net::HTTP::Post.new(uri.request_uri) request.set_form_data(params) end http = Net::HTTP.new(uri.host, uri.port) use_ssl = rest_url.start_with? "https" if use_ssl http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE end prepare_headers(request) response = http.request(request) puts "response = #{response.body}" return is_success(response), response.body end
fill_oneapi_authentication(json, is_success)
click to toggle source
# File lib/oneapi-ruby/client.rb, line 140 def fill_oneapi_authentication(json, is_success) @oneapi_authentication = convert_from_json(OneApiAuthentication, json, !is_success) @oneapi_authentication.username = @username @oneapi_authentication.password = @password @oneapi_authentication.authenticated = @oneapi_authentication.ibsso_token ? @oneapi_authentication.ibsso_token.length > 0 : false @oneapi_authentication end
get_or_create_client_correlator(client_correlator=nil)
click to toggle source
# File lib/oneapi-ruby/client.rb, line 46 def get_or_create_client_correlator(client_correlator=nil) if client_correlator return client_correlator end return Utils.get_random_alphanumeric_string() end
get_rest_url(rest_path)
click to toggle source
# File lib/oneapi-ruby/client.rb, line 128 def get_rest_url(rest_path) if not rest_path return @base_url end if rest_path[0, 1] == '/' return @base_url + rest_path[1, rest_path.length] end @base_url + rest_path end
is_success(response)
click to toggle source
# File lib/oneapi-ruby/client.rb, line 64 def is_success(response) http_code = response.code.to_i is_success = 200 <= http_code && http_code < 300 is_success end
login()
click to toggle source
# File lib/oneapi-ruby/client.rb, line 35 def login() params = { 'username' => @username, 'password' => @password, } is_success, result = execute_POST('/1/customerProfile/login', params) return fill_oneapi_authentication(result, is_success) end
prepare_headers(request)
click to toggle source
# File lib/oneapi-ruby/client.rb, line 54 def prepare_headers(request) request["User-Agent"] = "OneApi-ruby-#{OneApi::VERSION}" if @oneapi_authentication and @oneapi_authentication.ibsso_token request['Authorization'] = "IBSSO #{@oneapi_authentication.ibsso_token}" else auth_string = Base64.encode64("#{@username}:#{@password}").strip request['Authorization'] = "Basic #{auth_string}" end end
urlencode(params)
click to toggle source
# File lib/oneapi-ruby/client.rb, line 71 def urlencode(params) if Utils.empty(params) return '' end if params.instance_of? String return URI.encode(params) end result = '' params.each_key do |key| if ! Utils.empty(result) result += '&' end result += URI.encode(key.to_s) + '=' + URI.encode(params[key].to_s) end return result end