Sha256: e68accd2d5e037ee3c23a97e55c4ca39454db9f75b8a87a6d797177acb3fafac
Contents?: true
Size: 1.1 KB
Versions: 2
Compression:
Stored size: 1.1 KB
Contents
require 'base64' require 'openssl' module AppleNews class Security attr_accessor :method, :url, :content_type, :content_body def initialize(method, url, config = AppleNews.config) @method = method.upcase @url = url @config = config @date = Time.now.utc.strftime("%Y-%m-%dT%H:%M:%SZ") @content_type = nil @content_body = nil end def authorization if @method == 'POST' && (@content_type.nil? || @content_body.nil?) raise "POST requests require the content type and body to be included in the signature generation" end "HHMAC; key=#{@config.api_key_id}; signature=#{signature}; date=#{@date}" end private def hash_content [@method, @url, @date, @content_type, @content_body].compact end def canonical_request hash_content.join('') end def key Base64.strict_decode64(@config.api_key_secret) end def digest sha256 = OpenSSL::Digest.new('sha256') OpenSSL::HMAC.digest(sha256, key, canonical_request) end def signature Base64.strict_encode64(digest) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
apple-news-0.5.1 | lib/apple-news/security.rb |
apple-news-0.5.0 | lib/apple-news/security.rb |