efax 1.3.2 → 1.3.3
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/Rakefile +5 -7
- data/VERSION +1 -1
- data/efax.gemspec +9 -6
- data/lib/efax/outbound.rb +16 -7
- data/test/efax_inbound_test.rb +3 -3
- data/test/efax_outbound_test.rb +59 -33
- data/test/test_helper.rb +3 -2
- metadata +39 -14
- data/TODO +0 -2
data/Rakefile
CHANGED
@@ -4,7 +4,6 @@ require 'rake/clean'
|
|
4
4
|
require 'rake/gempackagetask'
|
5
5
|
require 'rake/rdoctask'
|
6
6
|
require 'rake/testtask'
|
7
|
-
require 'spec/rake/spectask'
|
8
7
|
|
9
8
|
begin
|
10
9
|
require 'jeweler'
|
@@ -15,14 +14,17 @@ begin
|
|
15
14
|
gem.email = "szimek@gmail.com"
|
16
15
|
gem.homepage = "http://github.com/szimek/efax"
|
17
16
|
gem.rubyforge_project = "efax"
|
18
|
-
|
17
|
+
|
19
18
|
gem.add_dependency('hpricot', '>= 0.8.1')
|
19
|
+
gem.add_development_dependency('test-unit', '~> 2')
|
20
20
|
gem.add_development_dependency('mocha', '>= 0.9')
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
Jeweler::RubyforgeTasks.new do |rubyforge|
|
24
24
|
rubyforge.doc_task = "rdoc"
|
25
25
|
end
|
26
|
+
|
27
|
+
Jeweler::GemcutterTasks.new
|
26
28
|
rescue LoadError
|
27
29
|
puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
|
28
30
|
end
|
@@ -39,7 +41,3 @@ end
|
|
39
41
|
Rake::TestTask.new do |t|
|
40
42
|
t.test_files = FileList['test/**/*.rb']
|
41
43
|
end
|
42
|
-
|
43
|
-
Spec::Rake::SpecTask.new do |t|
|
44
|
-
t.spec_files = FileList['spec/**/*.rb']
|
45
|
-
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.3.
|
1
|
+
1.3.3
|
data/efax.gemspec
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{efax}
|
8
|
-
s.version = "1.3.
|
8
|
+
s.version = "1.3.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Szymon Nowak", "Pawel Kozlowski", "Dr Nic Williams"]
|
12
|
-
s.date = %q{
|
12
|
+
s.date = %q{2010-03-17}
|
13
13
|
s.email = %q{szimek@gmail.com}
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"README.rdoc"
|
@@ -18,7 +18,6 @@ Gem::Specification.new do |s|
|
|
18
18
|
".gitignore",
|
19
19
|
"README.rdoc",
|
20
20
|
"Rakefile",
|
21
|
-
"TODO",
|
22
21
|
"VERSION",
|
23
22
|
"efax.gemspec",
|
24
23
|
"lib/efax.rb",
|
@@ -33,7 +32,7 @@ Gem::Specification.new do |s|
|
|
33
32
|
s.rdoc_options = ["--charset=UTF-8"]
|
34
33
|
s.require_paths = ["lib"]
|
35
34
|
s.rubyforge_project = %q{efax}
|
36
|
-
s.rubygems_version = %q{1.3.
|
35
|
+
s.rubygems_version = %q{1.3.6}
|
37
36
|
s.summary = %q{Ruby library for accessing the eFax Developer service}
|
38
37
|
s.test_files = [
|
39
38
|
"test/efax_inbound_test.rb",
|
@@ -47,13 +46,17 @@ Gem::Specification.new do |s|
|
|
47
46
|
|
48
47
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
49
48
|
s.add_runtime_dependency(%q<hpricot>, [">= 0.8.1"])
|
49
|
+
s.add_development_dependency(%q<test-unit>, ["~> 2"])
|
50
50
|
s.add_development_dependency(%q<mocha>, [">= 0.9"])
|
51
51
|
else
|
52
52
|
s.add_dependency(%q<hpricot>, [">= 0.8.1"])
|
53
|
+
s.add_dependency(%q<test-unit>, ["~> 2"])
|
53
54
|
s.add_dependency(%q<mocha>, [">= 0.9"])
|
54
55
|
end
|
55
56
|
else
|
56
57
|
s.add_dependency(%q<hpricot>, [">= 0.8.1"])
|
58
|
+
s.add_dependency(%q<test-unit>, ["~> 2"])
|
57
59
|
s.add_dependency(%q<mocha>, [">= 0.9"])
|
58
60
|
end
|
59
61
|
end
|
62
|
+
|
data/lib/efax/outbound.rb
CHANGED
@@ -17,7 +17,7 @@ end
|
|
17
17
|
|
18
18
|
module EFax
|
19
19
|
# URL of eFax web service
|
20
|
-
Url = "https://secure.efaxdeveloper.com/EFax_WebFax.serv"
|
20
|
+
Url = "https://secure.efaxdeveloper.com/EFax_WebFax.serv"
|
21
21
|
# URI of eFax web service
|
22
22
|
Uri = URI.parse(Url)
|
23
23
|
# Prefered content type
|
@@ -45,7 +45,7 @@ module EFax
|
|
45
45
|
def self.account_id=(id)
|
46
46
|
@@account_id = id
|
47
47
|
end
|
48
|
-
|
48
|
+
|
49
49
|
def self.params(content)
|
50
50
|
escaped_xml = ::URI.escape(content, Regexp.new("[^#{::URI::PATTERN::UNRESERVED}]"))
|
51
51
|
"id=#{account_id}&xml=#{escaped_xml}&respond=XML"
|
@@ -53,7 +53,7 @@ module EFax
|
|
53
53
|
|
54
54
|
private_class_method :params
|
55
55
|
end
|
56
|
-
|
56
|
+
|
57
57
|
class OutboundRequest < Request
|
58
58
|
def self.post(name, company, fax_number, subject, content, content_type = :html)
|
59
59
|
xml_request = xml(name, company, fax_number, subject, content, content_type)
|
@@ -62,7 +62,7 @@ module EFax
|
|
62
62
|
end
|
63
63
|
OutboundResponse.new(response)
|
64
64
|
end
|
65
|
-
|
65
|
+
|
66
66
|
def self.xml(name, company, fax_number, subject, content, content_type = :html)
|
67
67
|
xml_request = ""
|
68
68
|
xml = Builder::XmlMarkup.new(:target => xml_request, :indent => 2 )
|
@@ -141,7 +141,7 @@ module EFax
|
|
141
141
|
end
|
142
142
|
OutboundStatusResponse.new(response)
|
143
143
|
end
|
144
|
-
|
144
|
+
|
145
145
|
def self.xml(doc_id)
|
146
146
|
xml_request = ""
|
147
147
|
xml = Builder::XmlMarkup.new(:target => xml_request, :indent => 2 )
|
@@ -182,7 +182,7 @@ module EFax
|
|
182
182
|
@message = doc.at(:message).innerText
|
183
183
|
@classification = doc.at(:classification).innerText.delete('"')
|
184
184
|
@outcome = doc.at(:outcome).innerText.delete('"')
|
185
|
-
if
|
185
|
+
if !sent_yet?(classification, outcome) || busy_signal?(classification)
|
186
186
|
@status_code = QueryStatus::PENDING
|
187
187
|
elsif @classification == "Success" && @outcome == "Success"
|
188
188
|
@status_code = QueryStatus::SENT
|
@@ -194,5 +194,14 @@ module EFax
|
|
194
194
|
@message = "HTTP request failed (#{response.code})"
|
195
195
|
end
|
196
196
|
end
|
197
|
+
|
198
|
+
def busy_signal?(classification)
|
199
|
+
classification == "Busy"
|
200
|
+
end
|
201
|
+
|
202
|
+
def sent_yet?(classification, outcome)
|
203
|
+
!classification.empty? || !outcome.empty?
|
204
|
+
end
|
205
|
+
|
197
206
|
end
|
198
|
-
end
|
207
|
+
end
|
data/test/efax_inbound_test.rb
CHANGED
@@ -10,10 +10,10 @@ module EFaxInboundTest
|
|
10
10
|
EFax::InboundPostRequest.expects(:receive_by_xml).with(efax_inbound_post_xml).returns(response = mock)
|
11
11
|
assert_equal(EFax::InboundPostRequest.receive_by_params({:xml => efax_inbound_post_xml}), response)
|
12
12
|
end
|
13
|
-
|
13
|
+
|
14
14
|
def test_receive_by_xml
|
15
15
|
response = efax_inbound_post(:barcodes => %w[EFAXTEST1A EFAXTEST2A EFAXTEST3A EFAXTEST4A EFAXTEST5A])
|
16
|
-
|
16
|
+
|
17
17
|
assert_equal efax_inbound_post_file_contents, response.encoded_file_contents
|
18
18
|
assert_equal :pdf, response.file_type
|
19
19
|
assert_equal '8587123600', response.sender_fax_number
|
@@ -31,7 +31,7 @@ module EFaxInboundTest
|
|
31
31
|
assert_not_nil response.file
|
32
32
|
assert_respond_to response.file, :read
|
33
33
|
assert_equal response.file_contents, response.file.read
|
34
|
-
|
34
|
+
|
35
35
|
# According to docs these will always be "Pacific Time Zone" (sometimes -8, sometimes -7 -- using -8)
|
36
36
|
assert_equal Time.utc(2005,8,18,20,2,13), response.date_received
|
37
37
|
assert_equal Time.utc(2005,8,18,20,2,25), response.request_date
|
data/test/efax_outbound_test.rb
CHANGED
@@ -60,7 +60,7 @@ module EFaxOutboundTest
|
|
60
60
|
XML
|
61
61
|
http_response = mock()
|
62
62
|
http_response.expects(:is_a?).with(Net::HTTPOK).returns(true)
|
63
|
-
http_response.expects(:body).returns(xml)
|
63
|
+
http_response.expects(:body).returns(xml)
|
64
64
|
response = EFax::OutboundResponse.new(http_response)
|
65
65
|
assert_equal EFax::RequestStatus::FAILURE, response.status_code
|
66
66
|
assert_nil response.doc_id
|
@@ -88,7 +88,7 @@ module EFaxOutboundTest
|
|
88
88
|
XML
|
89
89
|
http_response = mock()
|
90
90
|
http_response.expects(:is_a?).with(Net::HTTPOK).returns(true)
|
91
|
-
http_response.expects(:body).returns(xml)
|
91
|
+
http_response.expects(:body).returns(xml)
|
92
92
|
response = EFax::OutboundResponse.new(http_response)
|
93
93
|
assert_equal EFax::RequestStatus::FAILURE, response.status_code
|
94
94
|
assert_nil response.doc_id
|
@@ -151,7 +151,7 @@ module EFaxOutboundTest
|
|
151
151
|
XML
|
152
152
|
http_response = mock()
|
153
153
|
http_response.expects(:is_a?).with(Net::HTTPOK).returns(true)
|
154
|
-
http_response.expects(:body).returns(xml)
|
154
|
+
http_response.expects(:body).returns(xml)
|
155
155
|
response = EFax::OutboundStatusResponse.new(http_response)
|
156
156
|
assert_equal "Your transmission has completed.", response.message
|
157
157
|
assert_equal "Success", response.outcome
|
@@ -159,6 +159,58 @@ module EFaxOutboundTest
|
|
159
159
|
assert_equal EFax::QueryStatus::SENT, response.status_code
|
160
160
|
end
|
161
161
|
|
162
|
+
def test_busy_response
|
163
|
+
xml = <<-XML
|
164
|
+
<?xml version="1.0"?>
|
165
|
+
<OutboundStatusResponse>
|
166
|
+
<Transmission>
|
167
|
+
<TransmissionControl>
|
168
|
+
<TransmissionID></TransmissionID>
|
169
|
+
</TransmissionControl>
|
170
|
+
<Recipients>
|
171
|
+
<Recipient>
|
172
|
+
<DOCID>12345678</DOCID>
|
173
|
+
<Name>Mike Rotch</Name>
|
174
|
+
<Company>Moe's</Company>
|
175
|
+
<Fax>12345678901</Fax>
|
176
|
+
<Status>
|
177
|
+
<Message>Your transmission is waiting to be sent.</Message>
|
178
|
+
<Classification>Busy</Classification>
|
179
|
+
<Outcome>Normal busy: remote end busy (off hook)</Outcome>
|
180
|
+
</Status>
|
181
|
+
<LastAttempt>
|
182
|
+
<LastDate></LastDate>
|
183
|
+
<LastTime></LastTime>
|
184
|
+
</LastAttempt>
|
185
|
+
<NextAttempt>
|
186
|
+
<NextDate></NextDate>
|
187
|
+
<NextTime></NextTime>
|
188
|
+
</NextAttempt>
|
189
|
+
<Pages>
|
190
|
+
<Scheduled>1</Scheduled>
|
191
|
+
<Sent>1</Sent>
|
192
|
+
</Pages>
|
193
|
+
<BaudRate>14400</BaudRate>
|
194
|
+
<Duration>0.4</Duration>
|
195
|
+
<Retries>1</Retries>
|
196
|
+
<RemoteCSID>"-"</RemoteCSID>
|
197
|
+
</Recipient>
|
198
|
+
</Recipients>
|
199
|
+
</Transmission>
|
200
|
+
</OutboundStatusResponse>
|
201
|
+
XML
|
202
|
+
|
203
|
+
http_response = mock()
|
204
|
+
http_response.expects(:is_a?).with(Net::HTTPOK).returns(true)
|
205
|
+
http_response.expects(:body).returns(xml)
|
206
|
+
response = EFax::OutboundStatusResponse.new(http_response)
|
207
|
+
|
208
|
+
assert_equal "Normal busy: remote end busy (off hook)", response.outcome
|
209
|
+
assert_equal "Busy", response.classification
|
210
|
+
assert_equal "Your transmission is waiting to be sent.", response.message
|
211
|
+
assert_equal EFax::QueryStatus::PENDING, response.status_code
|
212
|
+
end
|
213
|
+
|
162
214
|
def test_pending_response
|
163
215
|
xml = <<-XML
|
164
216
|
<?xml version="1.0"?>
|
@@ -202,9 +254,9 @@ module EFaxOutboundTest
|
|
202
254
|
|
203
255
|
http_response = mock()
|
204
256
|
http_response.expects(:is_a?).with(Net::HTTPOK).returns(true)
|
205
|
-
http_response.expects(:body).returns(xml)
|
257
|
+
http_response.expects(:body).returns(xml)
|
206
258
|
response = EFax::OutboundStatusResponse.new(http_response)
|
207
|
-
|
259
|
+
|
208
260
|
assert_equal "", response.outcome
|
209
261
|
assert_equal "", response.classification
|
210
262
|
assert_equal EFax::QueryStatus::PENDING, response.status_code
|
@@ -253,9 +305,9 @@ module EFaxOutboundTest
|
|
253
305
|
|
254
306
|
http_response = mock()
|
255
307
|
http_response.expects(:is_a?).with(Net::HTTPOK).returns(true)
|
256
|
-
http_response.expects(:body).returns(xml)
|
308
|
+
http_response.expects(:body).returns(xml)
|
257
309
|
response = EFax::OutboundStatusResponse.new(http_response)
|
258
|
-
|
310
|
+
|
259
311
|
assert_equal "Your fax caused the world to end", response.message
|
260
312
|
assert_equal "End of days", response.outcome
|
261
313
|
assert_equal "Apocalyptic failure", response.classification
|
@@ -329,30 +381,4 @@ module EFaxOutboundTest
|
|
329
381
|
end
|
330
382
|
end
|
331
383
|
end
|
332
|
-
|
333
|
-
class OutboundStatusTest < Test::Unit::TestCase
|
334
|
-
def test_generate_xml
|
335
|
-
expected_xml = <<-XML
|
336
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
337
|
-
<OutboundStatus>
|
338
|
-
<AccessControl>
|
339
|
-
<UserName>Mike Rotch</UserName>
|
340
|
-
<Password>moes</Password>
|
341
|
-
</AccessControl>
|
342
|
-
<Transmission>
|
343
|
-
<TransmissionControl>
|
344
|
-
<DOCID>123456</DOCID>
|
345
|
-
</TransmissionControl>
|
346
|
-
</Transmission>
|
347
|
-
</OutboundStatus>
|
348
|
-
XML
|
349
|
-
|
350
|
-
EFax::Request.user = "Mike Rotch"
|
351
|
-
EFax::Request.password = "moes"
|
352
|
-
EFax::OutboundStatus.publicize_class_methods do
|
353
|
-
assert_equal expected_xml.delete(" "), EFax::OutboundStatus.xml("123456").delete(" ")
|
354
|
-
end
|
355
|
-
end
|
356
|
-
end
|
357
|
-
|
358
384
|
end
|
data/test/test_helper.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
|
-
require 'test/unit'
|
2
1
|
require 'rubygems'
|
2
|
+
gem 'test-unit', '~> 2'
|
3
|
+
require 'test/unit'
|
3
4
|
require 'mocha'
|
4
5
|
|
5
6
|
class Class
|
@@ -16,4 +17,4 @@ class Class
|
|
16
17
|
yield
|
17
18
|
self.class_eval { private_class_method(*saved_private_class_methods) }
|
18
19
|
end
|
19
|
-
end
|
20
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: efax
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 1
|
7
|
+
- 3
|
8
|
+
- 3
|
9
|
+
version: 1.3.3
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- Szymon Nowak
|
@@ -11,29 +16,48 @@ autorequire:
|
|
11
16
|
bindir: bin
|
12
17
|
cert_chain: []
|
13
18
|
|
14
|
-
date:
|
19
|
+
date: 2010-03-17 00:00:00 +01:00
|
15
20
|
default_executable:
|
16
21
|
dependencies:
|
17
22
|
- !ruby/object:Gem::Dependency
|
18
23
|
name: hpricot
|
19
|
-
|
20
|
-
|
21
|
-
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
prerelease: false
|
25
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
22
26
|
requirements:
|
23
27
|
- - ">="
|
24
28
|
- !ruby/object:Gem::Version
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
- 8
|
32
|
+
- 1
|
25
33
|
version: 0.8.1
|
26
|
-
|
34
|
+
type: :runtime
|
35
|
+
version_requirements: *id001
|
27
36
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
37
|
+
name: test-unit
|
38
|
+
prerelease: false
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
segments:
|
44
|
+
- 2
|
45
|
+
version: "2"
|
29
46
|
type: :development
|
30
|
-
|
31
|
-
|
47
|
+
version_requirements: *id002
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: mocha
|
50
|
+
prerelease: false
|
51
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
32
52
|
requirements:
|
33
53
|
- - ">="
|
34
54
|
- !ruby/object:Gem::Version
|
55
|
+
segments:
|
56
|
+
- 0
|
57
|
+
- 9
|
35
58
|
version: "0.9"
|
36
|
-
|
59
|
+
type: :development
|
60
|
+
version_requirements: *id003
|
37
61
|
description:
|
38
62
|
email: szimek@gmail.com
|
39
63
|
executables: []
|
@@ -46,7 +70,6 @@ files:
|
|
46
70
|
- .gitignore
|
47
71
|
- README.rdoc
|
48
72
|
- Rakefile
|
49
|
-
- TODO
|
50
73
|
- VERSION
|
51
74
|
- efax.gemspec
|
52
75
|
- lib/efax.rb
|
@@ -69,18 +92,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
69
92
|
requirements:
|
70
93
|
- - ">="
|
71
94
|
- !ruby/object:Gem::Version
|
95
|
+
segments:
|
96
|
+
- 0
|
72
97
|
version: "0"
|
73
|
-
version:
|
74
98
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
75
99
|
requirements:
|
76
100
|
- - ">="
|
77
101
|
- !ruby/object:Gem::Version
|
102
|
+
segments:
|
103
|
+
- 0
|
78
104
|
version: "0"
|
79
|
-
version:
|
80
105
|
requirements: []
|
81
106
|
|
82
107
|
rubyforge_project: efax
|
83
|
-
rubygems_version: 1.3.
|
108
|
+
rubygems_version: 1.3.6
|
84
109
|
signing_key:
|
85
110
|
specification_version: 3
|
86
111
|
summary: Ruby library for accessing the eFax Developer service
|