Sha256: a57de2a76b942b5dd1f422e11c1dca8ffc9017ca4361ac4e5f9bad3807d33261

Contents?: true

Size: 834 Bytes

Versions: 2

Compression:

Stored size: 834 Bytes

Contents

require 'openssl'
require 'base64'
require 'cgi'

module OAuth
  module Helper
    extend self

    def escape(value)
      CGI.escape(value.to_s).gsub("%7E", '~').gsub("+", "%20")
    end

    def generate_key(size=32)
      Base64.encode64(OpenSSL::Random.random_bytes(size)).gsub(/\W/, '')
    end

    alias_method :generate_nonce, :generate_key

    def generate_timestamp
      Time.now.to_i.to_s
    end

    def normalize(params)
      params.sort.map do |k, values|

        if values.is_a?(Array)
          # multiple values were provided for a single key
          values.sort.collect do |v|
            [escape(k),escape(v)] * "="
          end
        else
          [escape(k),escape(values)] * "="
        end
      end * "&"
    end

    def unescape(value)
      URI.unescape(value.gsub('+', '%2B'))
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
mojodna-oauth-0.3.1.4 lib/oauth/helper.rb
mojodna-oauth-0.3.1.5 lib/oauth/helper.rb