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_string ⇒ Object
- #params_string_with_digest ⇒ Object
-
#prepare_params(p) ⇒ 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
40 41 42 43 44 45 46 47 |
# File 'lib/tinycert/request.rb', line 40 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 ⇒ Object
30 31 32 |
# File 'lib/tinycert/request.rb', line 30 def digest OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), @api_key, params_string) end |
#params_string ⇒ Object
34 35 36 37 |
# File 'lib/tinycert/request.rb', line 34 def params_string # Replace * with %2A URI.encode_www_form(@params).gsub(/\*/, '%2A') end |
#params_string_with_digest ⇒ Object
49 50 51 |
# File 'lib/tinycert/request.rb', line 49 def params_string_with_digest params_string << "&digest=#{digest}" end |
#prepare_params(p) ⇒ Object
Sort the params consistently
22 23 24 25 26 27 28 |
# 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 ⇒ Object
Fetch Request
54 55 56 57 58 59 |
# File 'lib/tinycert/request.rb', line 54 def response res = @client.request(build_request) raise Tinycert::Error.new(res) if res.code != '200' puts res.body res end |
#results ⇒ Object
61 62 63 64 65 |
# File 'lib/tinycert/request.rb', line 61 def results results = JSON.parse(response.body) puts results results end |