Sha256: 0d08eb61feb2931484a2553ec51595ab2bb9176a9b4016bcdd64e5c8e6c48c23

Contents?: true

Size: 962 Bytes

Versions: 6

Compression:

Stored size: 962 Bytes

Contents

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

module Speechpad
  module Request

    def get(params, options={})
      params = generate_signature(params)
      request(:get, params, options)
    end

    def post(params, options={})
      params = generate_signature(params)
      request(:post, params, options)
    end

    private

    # POST the Params to the Speechpad end point.
    #
    # @param body [String] The formatted XML of the API call make sure to call builder.to_xml.
    def request(method, params, options)
      response = connection.send(method) do |request|
        request.url '/services', params
      end
      response.body
    end

    def generate_signature(params)
      params["timestamp"] = Time.now.utc.strftime('%Y-%m-%dT%H:%M:%SZ')

      s =  params.keys.sort.map{|key| params[key]}.join('')
      params["signature"] =  Base64.encode64(OpenSSL::HMAC.digest('sha1',@secret_key, s))[0,28]

      params
    end

  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
speechpad-0.0.6 lib/speechpad/request.rb
speechpad-0.0.5 lib/speechpad/request.rb
speechpad-0.0.4 lib/speechpad/request.rb
speechpad-0.0.3 lib/speechpad/request.rb
speechpad-0.0.2 lib/speechpad/request.rb
speechpad-0.0.1 lib/speechpad/request.rb