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

- old
+ new

@@ -1,19 +1,46 @@ class Newslettre::Lists < Newslettre::APIModule + class Object < Struct.new(:owner, :list, :data) + extend Forwardable + + def_delegator :owner, :request + def_delegator :owner, :api + + def == other + self.to_hash == other + end + + def load_data + self.data ||= request('get', :list => self.list).first.to_hash + end + + def to_hash + load_data + + data + end + + def emails + @emails ||= Newslettre::APIModuleProxy.new self, Email.new(self.list, self.api) + end + end + def add list, data = {} request 'add', data.merge(:list => list) end - def get list = nil - if list.nil? - request 'get' - else - request('get', :list => list).first - end + def get list + Object.new self, list end - alias_method :list, :get + def list + request('get').map {|r| + Object.new self, r["list"] + } + end + + def edit list, data = {} request 'edit', data.merge(:list => list) end def delete list @@ -21,12 +48,12 @@ end class Email < Newslettre::APIModule attr_reader :list - def initialize list, client - @client = client + def initialize list, api @list = list + @api = api end def add *recipients request 'add', :list => list, :data => recipients.map{|r| JSON.dump(r) } end