lib/newslettre/client.rb in newslettre-0.0.1 vs lib/newslettre/client.rb in newslettre-0.1.0

- old
+ new

@@ -1,49 +1,24 @@ class Newslettre::Client - include HTTParty - format :json - attr_reader :email, :password, :format + attr_reader :api + def initialize email, password + @api = Newslettre::API.new :email => email, :password => password + end - - def initialize options = {} - self.class.base_uri "https://sendgrid.com/api/newsletter" - @email = options.delete :email - @password = options.delete :password - @format = "json" + def newsletters + @newsletters ||= proxy_for Newslettre::Letter end - - def url - @url ||= self.class.default_options[:base_uri] + def identities + @identities ||= proxy_for Newslettre::Identity end - %w{get list add delete edit}.each do |m| - define_method m do |*args| - params, options = args - params ||= {} - options ||= {} - response = self.class.post url_for(m, options), :query => params.merge(credentials) - raise ClientFailure if response.code > 399 and response.code < 500 - raise EndpointFailure if response.code > 499 - response - end + def lists + @lists ||= proxy_for Newslettre::Lists end - alias_method :post, :add - alias_method :put, :edit - - class ClientFailure < StandardError; end - class EndpointFailure < StandardError; end - protected - def credentials - { - :api_user => email, - :api_key => password - } - end - - def url_for path, options = {} - "#{options[:prefix]}/#{path}.#{format}" + def proxy_for klass + Newslettre::APIModuleProxy.new self, klass.new(@api) end end