Module: Pagifyio::Client

Defined in:
lib/pagifyio/client.rb

Class Method Summary collapse

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(options, data, api_key, api_secret)
    conn = Faraday.new(:url => "http://#{options[:host_name]}:#{options[:port]}") do |faraday|
        faraday.adapter  Faraday.default_adapter 
    end
    
    response = conn.send(options[:method]) do |req|
        req.url options[:path]
        req.headers['Content-Type'] = "application/json"
        req.headers['Accept-Type'] = options[:accept_type]
        if options[: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