Class: PayOS::Utils::Formater

Inherits:
Object
  • Object
show all
Defined in:
lib/payOS/utils/formater.rb

Class Method Summary collapse

Class Method Details

.convert_data_to_query_str(object) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/payOS/utils/formater.rb', line 34

def self.convert_data_to_query_str(object)
  object.map do |key, value|
    camel_key = snake_to_camel(key)
    formatted_value = case value
                      when Array
                        JSON.generate(value.map { |val| sort_obj_data_by_key(val) })
                      when nil, "undefined", "null"
                        ""
                      else
                        value.to_s
                      end

    "#{camel_key}=#{formatted_value}"
  end
        .join("&")
end

.format_params(params) ⇒ Object



6
7
8
9
10
11
12
13
# File 'lib/payOS/utils/formater.rb', line 6

def self.format_params(params)
  params.sort_by { |key, _| key.to_s }.map do |key, value|
    formatted_key = key.to_s.split("_").map.with_index do |word, i|
      i.zero? ? word : word.capitalize
    end.join
    [formatted_key, value]
  end.to_h
end

.params_to_string(params) ⇒ Object



15
16
17
# File 'lib/payOS/utils/formater.rb', line 15

def self.params_to_string(params)
  params.reject { |k, _| k == "signature" }.sort_by { |key, _| key.to_s }.map { |k, v| "#{k}=#{v}" }.join("&")
end

.snake_to_camel(str) ⇒ Object



24
25
26
# File 'lib/payOS/utils/formater.rb', line 24

def self.snake_to_camel(str)
  str.to_s.split("_").map.with_index { |word, i| i.zero? ? word : word.capitalize }.join
end

.sort_obj_data_by_key(object) ⇒ Object



28
29
30
31
32
# File 'lib/payOS/utils/formater.rb', line 28

def self.sort_obj_data_by_key(object)
  object.transform_keys { |key| snake_to_camel(key) }
        .sort
        .to_h
end

.webhook_data_to_string(data) ⇒ Object



19
20
21
22
# File 'lib/payOS/utils/formater.rb', line 19

def self.webhook_data_to_string(data)
  sorted_data_by_key = sort_obj_data_by_key(data)
  convert_data_to_query_str(sorted_data_by_key)
end