Sha256: 43754c5372c2c904cf4121ec89fb9a419b52b3589215e40285014b1ba05c7c1a

Contents?: true

Size: 1.17 KB

Versions: 10

Compression:

Stored size: 1.17 KB

Contents

require 'openssl'
require 'base64'

module OAuth
  module Helper
    extend self

    def escape(value)
      URI::escape(value.to_s, OAuth::RESERVED_CHARACTERS)
    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

    # Parse an Authorization / WWW-Authenticate header into a hash
    def parse_header(header)
      # decompose
      params = header[6,header.length].split(/[,=]/)

      # strip and unescape
      params.map! { |v| unescape(v.strip) }

      # strip quotes
      params.map! { |v| v =~ /^\".*\"$/ ? v[1..-2] : v }

      # convert into a Hash
      Hash[*params.flatten]
    end

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

Version data entries

10 entries across 10 versions & 5 rubygems

Version Path
metavida-oauth-0.3.2.1 lib/oauth/helper.rb
metavida-oauth-0.3.2 lib/oauth/helper.rb
mojodna-oauth-0.3.1.6 lib/oauth/helper.rb
mojodna-oauth-0.3.1.7 lib/oauth/helper.rb
mojodna-oauth-0.3.1.8 lib/oauth/helper.rb
mojodna-oauth-0.3.2.1 lib/oauth/helper.rb
mojodna-oauth-0.3.2 lib/oauth/helper.rb
vincentchu-oauth-0.3.2.111 lib/oauth/helper.rb
zmalltalker-oauth-0.3.1.7 lib/oauth/helper.rb
oauth-0.3.2 lib/oauth/helper.rb