Module: Pagifyio::Client
- Defined in:
- lib/pagifyio/client.rb
Class Method Summary collapse
- .canonical_string(request) ⇒ Object
- .request(options, data, api_key, api_secret) ⇒ Object
- .sign_request(request, secret) ⇒ Object
Class Method Details
.canonical_string(request) ⇒ Object
33 34 35 36 37 38 39 40 41 42 |
# File 'lib/pagifyio/client.rb', line 33 def self.canonical_string(request) method = request.method.to_s.upcase content_type = request.headers['Content-Type'] content_md5 = '' content_length = request.headers['Content-Length'] date = request.headers['Date'] path = request.respond_to?(:unparsed_uri) ? request.unparsed_uri : request.path canonical_str = method + content_type + content_md5 + content_length + date + path canonical_str end |
.request(options, data, api_key, api_secret) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/pagifyio/client.rb', line 7 def self.request(, data, api_key, api_secret) conn = Faraday.new(:url => "http://#{[:host_name]}:#{[:port]}") do |faraday| faraday.adapter Faraday.default_adapter end response = conn.send([:method]) do |req| req.url [:path] req.headers['Content-Type'] = "application/json" req.headers['Accept-Type'] = [:accept_type] if [:method] != 'get' req.body = JSON.generate(data) req.headers['Content-Length'] = req.body.length.to_s else req.headers['Content-Length'] = "0" end req.headers['Date'] = Time.now().to_s req.headers['Authentication'] = api_key + ':' + sign_request(req, api_secret) end response end |
.sign_request(request, secret) ⇒ Object
28 29 30 31 |
# File 'lib/pagifyio/client.rb', line 28 def self.sign_request(request, secret) digest = OpenSSL::Digest::Digest.new('sha1') Base64.encode64(OpenSSL::HMAC.digest(digest, secret, canonical_string(request))).strip end |