Sha256: 488bd10a2bb1925da5c0f129eb9ae5325457deea4d92a23063dd775f09a5a4b6
Contents?: true
Size: 1.04 KB
Versions: 6
Compression:
Stored size: 1.04 KB
Contents
require 'time' module Uploadcare module Connections module Auth class Secure < Base def apply(env) date = Time.now.utc headers(env, date).each{|k, v| env.request_headers[k] = v} env end private def headers(env, date) { "Date" => date.rfc2822, "Authorization" => "Uploadcare #{public_key}:#{signature(env, date)}" } end def signature(env, date) sign_string = sign_string(env, date) digest = OpenSSL::Digest.new('sha1') OpenSSL::HMAC.hexdigest(digest, private_key, sign_string) end def sign_string(env, date) verb = env.method.upcase.to_s uri = env.url.request_uri date_header = date.rfc2822 content_type = env.request_headers['Content-Type'] content_md5 = OpenSSL::Digest.new('md5').hexdigest(env.body || "") [verb, content_md5, content_type, date_header, uri].join("\n") end end end end end
Version data entries
6 entries across 6 versions & 1 rubygems