class Tinycert::Request
Attributes
params[R]
Public Class Methods
new(api_key, url, params)
click to toggle source
# File lib/tinycert/request.rb, line 10 def initialize api_key, url, params @api_key = api_key @uri = URI(url) @params = prepare_params(params) # Create client @client = Net::HTTP.new(@uri.host, @uri.port) @client.use_ssl = true @client.verify_mode = OpenSSL::SSL::VERIFY_PEER end
Public Instance Methods
build_request()
click to toggle source
Create Request
# File lib/tinycert/request.rb, line 39 def build_request req = Net::HTTP::Post.new(@uri) req.add_field "Content-Type", "application/x-www-form-urlencoded; charset=utf-8" req.body = params_string_with_digest # puts @uri # puts req.body req end
digest()
click to toggle source
# File lib/tinycert/request.rb, line 30 def digest OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), @api_key, params_string) end
params_string()
click to toggle source
# File lib/tinycert/request.rb, line 34 def params_string URI.encode_www_form(@params) end
params_string_with_digest()
click to toggle source
# File lib/tinycert/request.rb, line 48 def params_string_with_digest params_string << "&digest=#{digest}" end
prepare_params(p)
click to toggle source
Sort the params consistently
# File lib/tinycert/request.rb, line 22 def prepare_params p results = {} # Build a new hash with string keys p.each { |k, v| results[k.to_s] = v } # Sort nested structures results.sort.to_h end
response()
click to toggle source
Fetch Request
# File lib/tinycert/request.rb, line 53 def response res = @client.request(build_request) raise Tinycert::Error.new(res) if res.code != '200' puts res.body res end
results()
click to toggle source
# File lib/tinycert/request.rb, line 60 def results results = JSON.parse(response.body) puts results results end