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