Skip to content

Instantly share code, notes, and snippets.

@skord
Created April 2, 2017 00:43
Show Gist options
  • Save skord/835705b4d2ea76623af9794f57e72bcc to your computer and use it in GitHub Desktop.
Save skord/835705b4d2ea76623af9794f57e72bcc to your computer and use it in GitHub Desktop.
module Mettlr
class Connection
def self.connection
@connection = Faraday.new('http://api.mettl.com/v1') do |c|
c.options.params_encoder = Faraday::FlatParamsEncoder
c.request :url_encoded
# c.request :json
c.response :mashify
c.response :json, content_type: /\bjson$/
c.response :logger
c.use :instrumentation
c.adapter :net_http
end
end
def self.get(path)
connection.get do |req|
req.path = path
req.params['ak'] = Mettlr::METTL_PUBLIC_KEY
req.params['ts'] = Time.now.to_i.to_s
req.params = Hash[req.params.sort_by {|k,v| k.downcase}]
req.params['asgn'] = Mettlr::Signature.new(req).signature
end
end
def self.post(path, options)
connection.post do |req|
req.path = path
req.params['ak'] = Mettlr::METTL_PUBLIC_KEY
req.params['ts'] = Time.now.to_i.to_s
options.each do |k,v|
if v.is_a?(Hash)
req.params[k] = v.to_json
else
req.params[k] = v
end
end
req.params = Hash[req.params.sort_by {|k,v| k.downcase}]
req.params['asgn'] = Mettlr::Signature.new(req).signature
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment