Class: Tinycert::Request
- Inherits:
-
Object
- Object
- Tinycert::Request
- Defined in:
- lib/tinycert/request.rb
Instance Attribute Summary collapse
-
#params ⇒ Object
readonly
Returns the value of attribute params.
Instance Method Summary collapse
-
#build_request ⇒ Object
Create Request.
- #digest ⇒ Object
-
#initialize(api_key, url, params) ⇒ Request
constructor
A new instance of Request.
- #params_with_digest ⇒ Object
-
#prepare_params(params) ⇒ Object
Sort the params consistently.
-
#response ⇒ Object
Fetch Request.
- #results ⇒ Object
Constructor Details
#initialize(api_key, url, params) ⇒ Request
10 11 12 13 14 15 16 17 18 19 |
# 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 |
Instance Attribute Details
#params ⇒ Object (readonly)
Returns the value of attribute params.
8 9 10 |
# File 'lib/tinycert/request.rb', line 8 def params @params end |
Instance Method Details
#build_request ⇒ Object
Create Request
37 38 39 40 41 42 43 44 |
# File 'lib/tinycert/request.rb', line 37 def build_request req = Net::HTTP::Post.new(@uri) req.add_field "Content-Type", "application/x-www-form-urlencoded; charset=utf-8" req.body = URI.encode_www_form(params_with_digest) # puts @uri # puts req.body req end |
#digest ⇒ Object
30 31 32 33 34 |
# File 'lib/tinycert/request.rb', line 30 def digest sorted_params = @params sorted_params_string = URI.encode_www_form(sorted_params) OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), @api_key, sorted_params_string) end |
#params_with_digest ⇒ Object
46 47 48 49 50 |
# File 'lib/tinycert/request.rb', line 46 def params_with_digest params = @params.dup params['digest'] = digest params end |
#prepare_params(params) ⇒ Object
Sort the params consistently
22 23 24 25 26 27 28 |
# File 'lib/tinycert/request.rb', line 22 def prepare_params params results = {} # Build a new hash with string keys params.each { |k, v| results[k.to_s] = v } # Sort nested structures results.sort.to_h end |
#response ⇒ Object
Fetch Request
53 54 55 56 57 |
# File 'lib/tinycert/request.rb', line 53 def response res = @client.request(build_request) raise Tinycert::Error.new(res) if res.code != '200' res end |
#results ⇒ Object
59 60 61 62 63 |
# File 'lib/tinycert/request.rb', line 59 def results results = JSON.parse(response.body) puts results results end |