class FontsDotCom::Request

Attributes

data_params[RW]
message[RW]
method[RW]
original_options[RW]
query_params[RW]
request[RW]
uri[RW]

Public Class Methods

fire(options) click to toggle source
# File lib/fonts_dot_com/request.rb, line 6
def self.fire(options)
  self.new(options).run
end
new(options={}) click to toggle source
# File lib/fonts_dot_com/request.rb, line 18
def initialize(options={})
  set_up(options)
end

Public Instance Methods

run(attempted_authentication=false) click to toggle source
# File lib/fonts_dot_com/request.rb, line 69
def run(attempted_authentication=false)
  res = Net::HTTP.start(uri.hostname, uri.port) {|http| http.request(@request) }

  @response = FontsDotCom::Response.new(res)

  return @response
end
set_up(options={}) click to toggle source
# File lib/fonts_dot_com/request.rb, line 22
def set_up(options={})
  @original_options = options
  
  # Process options

  if options.is_a? String
    @message = options
  else
    @message      = options[:message]
    @method       = ( options[:method] || :get).to_sym
    @data_params  = options[:data]
    @query_params = options[:query]
  end

  raise ArgumentError unless allowed_http_verbs.include? @method



  @uri = URI(base + message)

  case method
  when :get
    @request = Net::HTTP::Get.new(uri)
  when :post
    @request = Net::HTTP::Post.new(uri)
  when :put
    @request = Net::HTTP::Put.new(uri)
  when :delete
    @request = Net::HTTP::Delete.new(uri)
  end
  
  # Compute md5 HMAC for request
  @auth_param = FontsDotCom::AuthParam.create @message
  
  # Set request headers
  @request['authorization'] = @auth_param
  @request['appKey'] = FontsDotCom::Config.app_key

  # Set form data
  @request.set_form_data(data_params) if data_params
  
  # Set query params
  # TODO

  @request
end

Private Instance Methods

allowed_http_verbs() click to toggle source
# File lib/fonts_dot_com/request.rb, line 99
def allowed_http_verbs
  [:get, :post, :put, :delete]
end
base() click to toggle source
# File lib/fonts_dot_com/request.rb, line 79
def base
  "#{protocol}://api.fonts.com"
end
base_uri() click to toggle source
# File lib/fonts_dot_com/request.rb, line 83
def base_uri
  "#{protocol}://api.fonts.com/rest/#{format}/"
end
config() click to toggle source
# File lib/fonts_dot_com/request.rb, line 87
def config
  @config ||= FontsDotCom.config
end
format() click to toggle source
# File lib/fonts_dot_com/request.rb, line 95
def format
  'json' #TODO make settable?
end
protocol() click to toggle source
# File lib/fonts_dot_com/request.rb, line 91
def protocol
  'http' #TODO make settable?
end