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