Module: Reflect

Defined in:
lib/reflect.rb,
lib/reflect/client.rb,
lib/reflect/version.rb,
lib/reflect/parameter.rb,
lib/reflect/request_error.rb

Defined Under Namespace

Classes: Client, Parameter, RequestError

Constant Summary collapse

VERSION =
"0.2.0"

Class Method Summary collapse

Class Method Details

._extract_error_message(resp) ⇒ Object



15
16
17
18
19
20
21
22
23
# File 'lib/reflect.rb', line 15

def self._extract_error_message(resp)
  begin
    json = JSON.parse(resp.body)
    json["error"]
  rescue JSON::ParserError
    # TODO: Report this?
    ""
  end
end

._format_error_message(resp) ⇒ Object



11
12
13
# File 'lib/reflect.rb', line 11

def self._format_error_message(resp)
  "An error occured with the request. Status: #{resp.response.code} Error: #{_extract_error_message(resp)}"
end

.generate_token(secret_key, parameters = []) ⇒ Object



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

def self.generate_token(secret_key, parameters=[])
  data = parameters.map do |param|
    is_arr = param.value.is_a? Array

    val = if !is_arr then param.value.to_s else '' end
    vals = if is_arr then param.value.map(&:to_s).sort else [] end

    JSON.generate([param.field, param.op, val, vals])
  end

  digest = OpenSSL::Digest.new('sha256')
  hmac = OpenSSL::HMAC.new(secret_key, digest)
    .update("V2\n")
    .update(data.sort.join("\n"))
    .digest

  "=2=#{Base64.encode64(hmac).strip}"
end

.loggerObject



29
30
31
# File 'lib/reflect.rb', line 29

def self.logger
  @logger ||= Logger.new("/dev/null")
end

.logger=(logger) ⇒ Object



25
26
27
# File 'lib/reflect.rb', line 25

def self.logger=(logger)
  @logger = logger
end