class Invoiced::Util

Public Class Methods

auth_header(api_key) click to toggle source
# File lib/invoiced/util.rb, line 4
def auth_header(api_key)
    "Basic " + Base64.strict_encode64(api_key + ":")
end
build_objects(_class, objects) click to toggle source
# File lib/invoiced/util.rb, line 13
def build_objects(_class, objects)
    objects.map {
        |object| convert_to_object(_class, object)
    }
end
convert_to_object(_class, values) click to toggle source
# File lib/invoiced/util.rb, line 19
def convert_to_object(_class, values)
    object_class = _class.class

    # check for PaymentSource special case where class must be forced to Card or BankAccount
    unless values[:object].nil?
        if values[:object] == 'card'
            object_class = Invoiced::Card
        elsif values[:object] == 'bank_account'
            object_class = Invoiced::BankAccount
        end
    end

    object = object_class.new(_class.client, values[:id], values)

    object.set_endpoint_base(_class.endpoint_base())
end
uri_encode(params) click to toggle source
# File lib/invoiced/util.rb, line 8
def uri_encode(params)
    flatten_params(params).
        map { |k,v| "#{k}=#{url_encode(v)}" }.join('&')
end

Private Class Methods

flatten_params(params, parent_key=nil) click to toggle source
# File lib/invoiced/util.rb, line 42
def flatten_params(params, parent_key=nil)
    result = []
    params.each do |key, value|
        calculated_key = parent_key ? "#{parent_key}[#{url_encode(key)}]" : url_encode(key)
        if value.is_a?(Hash)
            result += flatten_params(value, calculated_key)
        elsif value.is_a?(Array)
            result += flatten_params_array(value, calculated_key)
        else
            result << [calculated_key, value]
        end
    end
    result
end
flatten_params_array(value, calculated_key) click to toggle source
# File lib/invoiced/util.rb, line 57
def flatten_params_array(value, calculated_key)
    result = []
    value.each do |elem|
        if elem.is_a?(Hash)
            result += flatten_params(elem, "#{calculated_key}[]")
        elsif elem.is_a?(Array)
            result += flatten_params_array(elem, calculated_key)
        else
            result << ["#{calculated_key}[]", elem]
        end
    end
    result
end
url_encode(params) click to toggle source
# File lib/invoiced/util.rb, line 38
def url_encode(params)
    URI.encode_www_form_component(params)
end