apsis-on-steroids 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.4
1
+ 0.0.5
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "apsis-on-steroids"
8
- s.version = "0.0.4"
8
+ s.version = "0.0.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["kaspernj"]
12
- s.date = "2013-07-25"
12
+ s.date = "2013-07-26"
13
13
  s.description = "A Ruby API for the Apsis mail service. "
14
14
  s.email = "k@spernj.org"
15
15
  s.extra_rdoc_files = [
@@ -26,6 +26,7 @@ Gem::Specification.new do |s|
26
26
  "Rakefile",
27
27
  "VERSION",
28
28
  "apsis-on-steroids.gemspec",
29
+ "include/errors.rb",
29
30
  "include/mailing_list.rb",
30
31
  "include/sub_base.rb",
31
32
  "include/subscriber.rb",
@@ -0,0 +1,3 @@
1
+ class ApsisOnSteroids::Errors
2
+ class SubscriberNotFound < RuntimeError; end
3
+ end
@@ -28,6 +28,7 @@ class ApsisOnSteroids::MailingList < ApsisOnSteroids::SubBase
28
28
  data_subscribers
29
29
  end
30
30
 
31
+ # Returns the subscribers of the mailing list.
31
32
  def subscribers
32
33
  res = aos.req_json("v1/mailinglists/#{data(:id)}/subscribers/all", :post, :json => {
33
34
  "AllDemographics" => false,
@@ -53,15 +54,22 @@ class ApsisOnSteroids::MailingList < ApsisOnSteroids::SubBase
53
54
  end
54
55
  end
55
56
  end
56
-
57
+
58
+ ret = []
57
59
  data_subscribers.each do |sub_data|
58
60
  sub = ApsisOnSteroids::Subscriber.new(
59
61
  :aos => self.aos,
60
62
  :data => aos.parse_obj(sub_data)
61
63
  )
62
64
 
63
- yield sub
65
+ if block_given?
66
+ yield sub
67
+ else
68
+ ret << sub
69
+ end
64
70
  end
71
+
72
+ return ret
65
73
  end
66
74
 
67
75
  # Adds the given email as a new subscriber and subscribes the created subscriber to the mailing list.
@@ -1,14 +1,31 @@
1
1
  class ApsisOnSteroids::Subscriber < ApsisOnSteroids::SubBase
2
2
  # Fetches the details from the server and returns them.
3
3
  def details
4
- res = aos.req_json("v1/subscribers/id/#{data(:id)}")
4
+ if !@details
5
+ res = aos.req_json("v1/subscribers/id/#{data(:id)}")
6
+
7
+ ret = {}
8
+ res["Result"].each do |key, val|
9
+ ret[key.to_sym] = val
10
+ end
11
+
12
+ @details = ret
13
+ end
14
+
15
+ return @details
16
+ end
17
+
18
+ # Returns the DemDataField by the given key.
19
+ def dem_data(key)
20
+ key = key.to_s.downcase
5
21
 
6
- ret = {}
7
- res["Result"].each do |key, val|
8
- ret[key.to_sym] = val
22
+ self.details[:DemDataFields].each do |dem_data|
23
+ if dem_data["Key"].to_s.downcase == key
24
+ return dem_data["Value"]
25
+ end
9
26
  end
10
27
 
11
- return ret
28
+ return nil
12
29
  end
13
30
 
14
31
  # Returns true if the subscriber is active.
@@ -42,6 +59,7 @@ class ApsisOnSteroids::Subscriber < ApsisOnSteroids::SubBase
42
59
  end
43
60
 
44
61
  raise data["FailedUpdatedSubscribers"].to_s if data["FailedUpdatedSubscribers"] && data["FailedUpdatedSubscribers"].any?
62
+ @details = nil
45
63
  return nil
46
64
  end
47
65
 
@@ -82,12 +82,12 @@ class ApsisOnSteroids
82
82
 
83
83
  raise "Could not find mailing list by that name: '#{name}'."
84
84
  end
85
-
85
+
86
86
  def subscriber_by_email(email)
87
87
  begin
88
88
  res = req_json("v1/subscribers/email/lookup/#{CGI.escape(email)}")
89
89
  rescue
90
- raise "Could not find subscriber by that email in the system"
90
+ raise ApsisOnSteroids::Errors::SubscriberNotFound, "Could not find subscriber by that email in the system: '#{email}'."
91
91
  end
92
92
 
93
93
  sub = ApsisOnSteroids::Subscriber.new(
@@ -51,7 +51,7 @@ describe "ApsisOnSteroids" do
51
51
  it "can create subscribers" do
52
52
  sub
53
53
  end
54
-
54
+
55
55
  it "can get subscribers and their details" do
56
56
  details = sub.details
57
57
  details.is_a?(Hash).should eql(true)
@@ -91,7 +91,7 @@ describe "ApsisOnSteroids" do
91
91
  #puts "Subscriber: #{sub_i}"
92
92
  end
93
93
 
94
- raise "Expected more than one." if count <= 1
94
+ raise "Expected more than one." if count < 1
95
95
  end
96
96
 
97
97
  it "can remove subscribers from lists" do
@@ -118,5 +118,11 @@ describe "ApsisOnSteroids" do
118
118
  mlist.opt_out_remove_subscriber(sub)
119
119
  mlist.opt_out?(sub).should eql(false)
120
120
  end
121
+
122
+ it "trying to an email that does not exist should raise the correct error" do
123
+ expect{
124
+ aos.subscriber_by_email("asd@asd.com")
125
+ }.to raise_error(ApsisOnSteroids::Errors::SubscriberNotFound)
126
+ end
121
127
  end
122
128
  end
metadata CHANGED
@@ -2,14 +2,14 @@
2
2
  name: apsis-on-steroids
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.4
5
+ version: 0.0.5
6
6
  platform: ruby
7
7
  authors:
8
8
  - kaspernj
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-07-25 00:00:00.000000000 Z
12
+ date: 2013-07-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  version_requirements: !ruby/object:Gem::Requirement
@@ -124,6 +124,7 @@ files:
124
124
  - Rakefile
125
125
  - VERSION
126
126
  - apsis-on-steroids.gemspec
127
+ - include/errors.rb
127
128
  - include/mailing_list.rb
128
129
  - include/sub_base.rb
129
130
  - include/subscriber.rb
@@ -144,7 +145,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
144
145
  - !ruby/object:Gem::Version
145
146
  segments:
146
147
  - 0
147
- hash: -3749909533048990827
148
+ hash: 2611720975442987225
148
149
  version: '0'
149
150
  required_rubygems_version: !ruby/object:Gem::Requirement
150
151
  none: false