eroi 0.1.0 → 0.1.1

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.1.0
1
+ 0.1.1
data/eroi.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{eroi}
8
- s.version = "0.1.0"
8
+ s.version = "0.1.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["CardPlayer"]
data/lib/eroi/client.rb CHANGED
@@ -6,6 +6,11 @@ module EROI
6
6
  class Client
7
7
  attr_reader :user_token, :api_password
8
8
 
9
+ def self.api_available?
10
+ Request::Post.api_available? &&
11
+ Request::Get.api_available?
12
+ end
13
+
9
14
  def initialize(user_token, api_password)
10
15
  @user_token = user_token
11
16
  @api_password = api_password
@@ -34,13 +39,24 @@ module EROI
34
39
  :clear_record => 1 ))
35
40
  end
36
41
 
42
+ def send_list_edition_to_contact(list, edition, email)
43
+ emails = ((email.is_a?(String)) ? [ email ] : email).join(',')
44
+
45
+ xml = Builder::XmlMarkup.new
46
+ xml.tag!('Send', emails, 'List' => list, 'Edition' => edition)
47
+
48
+ Request::Post.send(self, xml)
49
+ end
50
+
51
+ alias :send_list_edition_to_contacts :send_list_edition_to_contact
52
+
37
53
  private
38
54
 
39
55
  def build_contact_record(fields)
40
56
  xml = Builder::XmlMarkup.new
41
- xml.tag!('Record') do |r|
57
+ xml.tag!('Record') do |x|
42
58
  fields.each do |k,v|
43
- r.tag!(k.to_s.camelize, v)
59
+ x.tag!(k.to_s.camelize, v)
44
60
  end
45
61
  end
46
62
  xml
data/lib/eroi/request.rb CHANGED
@@ -3,6 +3,13 @@ module EROI
3
3
  class Get
4
4
  API_URL = 'http://emailer.emailroi.com/dbadmin/xml_retrieve2.pl'
5
5
 
6
+ def self.api_available?
7
+ url = URI.parse(Request::Get::API_URL)
8
+ request = Net::HTTP::Get.new(url.path)
9
+ response = Net::HTTP.start(url.host, url.port) { |http| http.request(request) }
10
+ response.class == Net::HTTPOK
11
+ end
12
+
6
13
  def self.send(client, fields)
7
14
  uri = URI.parse(API_URL)
8
15
  uri.query = fields.merge({
@@ -15,6 +22,13 @@ module EROI
15
22
  class Post
16
23
  API_URL = 'http://emailer.emailroi.com/dbadmin/xml_post.pl'
17
24
 
25
+ def self.api_available?
26
+ url = URI.parse(Request::Post::API_URL)
27
+ request = Net::HTTP::Get.new(url.path)
28
+ response = Net::HTTP.start(url.host, url.port) { |http| http.request(request) }
29
+ response.class == Net::HTTPOK
30
+ end
31
+
18
32
  def self.send(client, xml)
19
33
  response = Net::HTTP.post_form(
20
34
  URI.parse(API_URL),
@@ -75,6 +75,15 @@ class TestClient < Test::Unit::TestCase
75
75
  end
76
76
  end
77
77
 
78
+ context "when sending an email to a contact" do
79
+ should "respond with a success" do
80
+ response = @client.send_list_edition_to_contact('TestList', 'test', 'longbob@longbob.com')
81
+
82
+ assert_equal true, response.success?
83
+ assert_equal 1, response.number_of_records
84
+ end
85
+ end
86
+
78
87
  context "when there is an error" do
79
88
  setup do
80
89
  FakeWeb.register_uri(
@@ -9,6 +9,12 @@ class TestClient < Test::Unit::TestCase
9
9
  @client = EROI.new(credentials[:user_token], credentials[:api_password])
10
10
  end
11
11
 
12
+ context "when checking if the api is available" do
13
+ should "responsd with a a success" do
14
+ assert true, EROI::Client.api_available?
15
+ end
16
+ end
17
+
12
18
  context "when finding a contact" do
13
19
  should "respond with a success" do
14
20
  @client.add_contact(
@@ -94,6 +100,24 @@ class TestClient < Test::Unit::TestCase
94
100
  end
95
101
  end
96
102
 
103
+ context "when sending an email to a contact" do
104
+ teardown do
105
+ # @client.remove_contact('longbob@longbob.com')
106
+ end
107
+
108
+ should "respond with a success" do
109
+ @client.add_contact(
110
+ :email => 'russ@bashme.org',
111
+ :firstname => 'Longbob',
112
+ :lastname => 'Longson',
113
+ :mailing_lists => 'MainList')
114
+
115
+ response = @client.send_list_edition_to_contact('MainList', 'Testing', 'russ@bashme.org')
116
+
117
+ assert_equal true, response.success?
118
+ end
119
+ end
120
+
97
121
  context "when there is an error" do
98
122
  setup do
99
123
  @client = EROI.new('wrong', 'credentials')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eroi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - CardPlayer