Module: Omise::Util

Defined in:
lib/omise/util.rb

Class Method Summary collapse

Class Method Details

.generate_param(object) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/omise/util.rb', line 51

def generate_param(object)
  if object.is_a?(Hash)
    return generate_query(object)
  end

  if object.is_a?(Array)
    return object.map { |o| generate_param(o) }.join("/")
  end

  if object.is_a?(NilClass) || object.is_a?(TrueClass) || object.is_a?(FalseClass)
    return object
  end

  object.to_s
end

.generate_query(object, namespace = nil) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/omise/util.rb', line 29

def generate_query(object, namespace = nil)
  if object.is_a?(Hash)
    return object.map do |key, value|
      unless (value.is_a?(Hash) || value.is_a?(Array)) && value.empty?
        generate_query(value, namespace ? "#{namespace}[#{key}]" : key)
      end
    end.compact.sort! * "&"
  end

  if object.is_a?(Array)
    prefix = "#{namespace}[]"

    if object.empty?
      return generate_query(nil, prefix)
    else
      return object.map { |value| generate_query(value, prefix) }.join("&")
    end
  end

  "#{CGI.escape(generate_param(namespace))}=#{CGI.escape(generate_param(object).to_s)}"
end

.load_response(response) ⇒ Object



19
20
21
22
23
24
25
26
27
# File 'lib/omise/util.rb', line 19

def load_response(response)
  object = JSON.load(response)

  if object["object"] == "error"
    raise Omise::Error, object
  end

  object
end

.typecast(object) ⇒ Object



8
9
10
11
12
13
14
15
16
17
# File 'lib/omise/util.rb', line 8

def typecast(object)
  klass = begin
    klass_name = object["object"].split("_").map(&:capitalize).join("")
    Omise.const_get(klass_name)
  rescue NameError
    OmiseObject
  end

  klass.new(object)
end