class Ocs::Request

Attributes

client[R]
name[R]
options[R]

Public Class Methods

new(name:, options: {}, client:) click to toggle source
# File lib/ocs/request.rb, line 5
def initialize(name:, options: {}, client:)
  @name    = name
  @options = options
  @client  = client
end

Public Instance Methods

send() click to toggle source
# File lib/ocs/request.rb, line 11
def send
  Response.new(connection.get(path, escaped_parameters, headers))
end

Private Instance Methods

api_key() click to toggle source
# File lib/ocs/request.rb, line 17
def api_key
  client.api_key
end
connection() click to toggle source
# File lib/ocs/request.rb, line 21
def connection
  client.connection
end
escape(string) click to toggle source
# File lib/ocs/request.rb, line 25
def escape(string)
  URI.escape(string)
end
escaped_parameters() click to toggle source
# File lib/ocs/request.rb, line 29
def escaped_parameters
  escaped_parameters_without_signature.merge(
    signature: escaped_signature
  )
end
escaped_parameters_without_signature() click to toggle source
# File lib/ocs/request.rb, line 35
def escaped_parameters_without_signature
  @escaped_parameters_without_signature ||=
    parameters_without_signature.inject({}) do |escaped_hash, (key, value)|
      escaped_hash[key] = escape(value)
      escaped_hash
    end
end
escaped_signature() click to toggle source
# File lib/ocs/request.rb, line 43
def escaped_signature
  escape(signature)
end
headers() click to toggle source
# File lib/ocs/request.rb, line 47
def headers
  nil
end
parameters_without_signature() click to toggle source
# File lib/ocs/request.rb, line 51
def parameters_without_signature
  options.merge(
    command: name,
    apikey: api_key,
    response: "json"
  )
end
path() click to toggle source
# File lib/ocs/request.rb, line 59
def path
  client.path
end
secret_key() click to toggle source
# File lib/ocs/request.rb, line 63
def secret_key
  client.secret_key
end
signature() click to toggle source
# File lib/ocs/request.rb, line 67
def signature
  Base64.encode64(
    OpenSSL::HMAC::digest(
      OpenSSL::Digest::SHA1.new,
      secret_key,
      signature_seed
    )
  ).chomp
end
signature_seed() click to toggle source
# File lib/ocs/request.rb, line 77
def signature_seed
  sorted_parameters =
    escaped_parameters_without_signature.to_a.sort do |a, b|
      a[0].to_s <=> b[0].to_s
    end
  sorted_parameters.map { |param| param.join("=") }.join("&").downcase
end