pixelletter 0.0.2 → 0.1.0
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 +1 -1
- data/lib/pixelletter.rb +39 -8
- data/lib/pixelletter/request/request.rb +12 -5
- data/spec/pixelletter_spec.rb +44 -4
- data/spec/request/request_spec.rb +29 -17
- data/spec/request/xml_builder_spec.rb +24 -0
- data/spec/spec_helper.rb +4 -1
- metadata +19 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0
|
1
|
+
0.1.0
|
data/lib/pixelletter.rb
CHANGED
@@ -5,14 +5,45 @@ require 'restclient_with_cert'
|
|
5
5
|
require 'yaml'
|
6
6
|
|
7
7
|
module Pixelletter
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
8
|
+
|
9
|
+
ENDPOINT = {
|
10
|
+
:production => 'https://www.pixelletter.de/xml/index.php',
|
11
|
+
:sandbox => 'http://www.fakeweb.test'
|
12
|
+
}
|
13
|
+
|
14
|
+
def self.endpoint
|
15
|
+
if sandbox?
|
16
|
+
Pixelletter::ENDPOINT[:sandbox]
|
17
|
+
else
|
18
|
+
Pixelletter::ENDPOINT[:production]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.sandbox?
|
23
|
+
@@sandbox
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.sandbox!
|
27
|
+
self.sandbox = true
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.sandbox=(boolean)
|
31
|
+
@@sandbox = boolean
|
32
|
+
end
|
33
|
+
|
34
|
+
self.sandbox = false
|
35
|
+
|
36
|
+
|
37
|
+
def self.load_initial_values
|
38
|
+
if File.exists?(File.join(File.dirname('../'), "CREDENTIALS"))
|
39
|
+
f = File.join(File.dirname('../'), "CREDENTIALS")
|
40
|
+
yml = YAML.load(open(f))
|
41
|
+
ENV['EMAIL'] = yml['email']
|
42
|
+
ENV['PASSWORD'] = yml['password']
|
43
|
+
else
|
44
|
+
ENV['EMAIL'] = nil
|
45
|
+
ENV['PASSWORD'] = nil
|
46
|
+
end
|
16
47
|
end
|
17
48
|
end
|
18
49
|
|
@@ -2,20 +2,24 @@ module Pixelletter
|
|
2
2
|
class Request < Base
|
3
3
|
attr_required :email, :password, :agb, :widerrufsverzicht, :testmodus
|
4
4
|
|
5
|
-
ENDPOINT = 'https://www.pixelletter.de/xml/index.php'
|
6
|
-
|
7
5
|
def initialize(attributes = {})
|
8
6
|
super
|
9
7
|
end
|
10
8
|
|
11
|
-
def request(order)
|
9
|
+
def request(order, file=nil)
|
12
10
|
xml = build_xml(order)
|
13
11
|
xml_file = File.join(File.dirname('../'), "pixml.xml")
|
14
12
|
File.open(xml_file, 'w') { |file| file.write(xml) }
|
15
13
|
upload = File.new(File.join(File.dirname('../'), "pixml.xml"), 'rb')
|
16
14
|
|
17
|
-
|
18
|
-
|
15
|
+
if file
|
16
|
+
response = handle_response do
|
17
|
+
RestClient.post(endpoint, xml: upload, "uploadfile0" => file)
|
18
|
+
end
|
19
|
+
else
|
20
|
+
response = handle_response do
|
21
|
+
RestClient.post(endpoint, xml: upload)
|
22
|
+
end
|
19
23
|
end
|
20
24
|
|
21
25
|
File.delete(File.join(File.dirname('../'), "pixml.xml"))
|
@@ -53,5 +57,8 @@ module Pixelletter
|
|
53
57
|
}
|
54
58
|
end
|
55
59
|
|
60
|
+
def endpoint
|
61
|
+
Pixelletter.endpoint
|
62
|
+
end
|
56
63
|
end
|
57
64
|
end
|
data/spec/pixelletter_spec.rb
CHANGED
@@ -22,10 +22,50 @@ describe Pixelletter do
|
|
22
22
|
after do
|
23
23
|
if File.exists?(File.join(File.dirname('../'), "CREDENTIALS.bak"))
|
24
24
|
system("mv #{File.join(File.dirname('../'), "CREDENTIALS.bak")} #{File.join(File.dirname('../'), "CREDENTIALS")}")
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
25
|
+
Pixelletter.load_initial_values
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context 'without CREDENTIALS file' do
|
31
|
+
before do
|
32
|
+
if File.exists?(File.join(File.dirname('../'), "CREDENTIALS"))
|
33
|
+
system("mv #{File.join(File.dirname('../'), "CREDENTIALS")} #{File.join(File.dirname('../'), "CREDENTIALS.bak")}")
|
34
|
+
end
|
35
|
+
Pixelletter.load_initial_values
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should set the correct ENV variables" do
|
39
|
+
ENV['EMAIL'].should eq(nil)
|
40
|
+
ENV['PASSWORD'].should eq(nil)
|
41
|
+
end
|
42
|
+
|
43
|
+
after do
|
44
|
+
if File.exists?(File.join(File.dirname('../'), "CREDENTIALS.bak"))
|
45
|
+
system("mv #{File.join(File.dirname('../'), "CREDENTIALS.bak")} #{File.join(File.dirname('../'), "CREDENTIALS")}")
|
46
|
+
Pixelletter.load_initial_values
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe 'ENDPOINT' do
|
52
|
+
it "should have a production value" do
|
53
|
+
Pixelletter.endpoint.should eq('https://www.pixelletter.de/xml/index.php')
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should be possible to activate the sandbox" do
|
57
|
+
Pixelletter.sandbox?.should eq(false)
|
58
|
+
Pixelletter.sandbox!
|
59
|
+
Pixelletter.sandbox?.should eq(true)
|
60
|
+
end
|
61
|
+
|
62
|
+
context 'while sandboxing' do
|
63
|
+
before do
|
64
|
+
Pixelletter.sandbox = true
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should give an empty value" do
|
68
|
+
Pixelletter.endpoint.should eq('http://www.fakeweb.test')
|
29
69
|
end
|
30
70
|
end
|
31
71
|
end
|
@@ -2,6 +2,23 @@
|
|
2
2
|
require 'spec_helper'
|
3
3
|
|
4
4
|
describe Pixelletter::Request do
|
5
|
+
before do
|
6
|
+
Pixelletter.load_initial_values
|
7
|
+
Pixelletter.sandbox!
|
8
|
+
xml = <<-XML
|
9
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
10
|
+
<pixelletter version="1.1">
|
11
|
+
<response>
|
12
|
+
<result code="100">
|
13
|
+
<msg>Auftrag erfolgreich übermittelt.</msg>
|
14
|
+
<id>11954460</id>
|
15
|
+
</result>
|
16
|
+
</response>
|
17
|
+
</pixelletter>
|
18
|
+
XML
|
19
|
+
|
20
|
+
FakeWeb.register_uri(:post, "http://www.fakeweb.test", :body => xml)
|
21
|
+
end
|
5
22
|
|
6
23
|
let :attributes do
|
7
24
|
{
|
@@ -55,21 +72,11 @@ describe Pixelletter::Request do
|
|
55
72
|
}
|
56
73
|
end
|
57
74
|
|
58
|
-
# <?xml version="1.0" encoding="UTF-8"?>
|
59
|
-
# <pixelletter version="1.1">
|
60
|
-
# <response>
|
61
|
-
# <result code="100">
|
62
|
-
# <msg>Auftrag erfolgreich übermittelt.</msg>
|
63
|
-
# <id>11954460</id>
|
64
|
-
# </result>
|
65
|
-
# </response>
|
66
|
-
# </pixelletter>
|
67
|
-
|
68
75
|
it "should send a successful request" do
|
69
|
-
|
70
|
-
|
71
|
-
pr.stub(:request).with(order).and_return({:value=>"100", :msg=>"Auftrag erfolgreich übermittelt.", :id=>"11954536"})
|
76
|
+
pr = Pixelletter::Request.new(attributes)
|
77
|
+
|
72
78
|
response = pr.request(order)
|
79
|
+
|
73
80
|
response[:value].should == '100'
|
74
81
|
end
|
75
82
|
end
|
@@ -89,10 +96,15 @@ describe Pixelletter::Request do
|
|
89
96
|
|
90
97
|
it "should send a successful request" do
|
91
98
|
pr = Pixelletter::Request.new(attributes)
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
99
|
+
if File.exists?(File.join('spec', 'files', 'test.pdf'))
|
100
|
+
pdf_file = File.new(File.join('spec', 'files', 'test.pdf'))
|
101
|
+
else
|
102
|
+
pdf_file = nil
|
103
|
+
end
|
104
|
+
|
105
|
+
response = pr.request(order, pdf_file)
|
106
|
+
|
107
|
+
response[:value].should == '100'
|
96
108
|
end
|
97
109
|
end
|
98
110
|
end
|
@@ -24,6 +24,30 @@ describe Pixelletter::XMLBuilder do
|
|
24
24
|
XML
|
25
25
|
end
|
26
26
|
|
27
|
+
context 'with false as value' do
|
28
|
+
let :auth do
|
29
|
+
{ auth: { email: 'email@email.de', password: 'password', agb: false, widerrufsverzicht: false, testmodus: true } }
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'should create a valid xml with an <auth> block' do
|
33
|
+
b = Pixelletter::XMLBuilder.new
|
34
|
+
xml = b.create_xml(auth)
|
35
|
+
|
36
|
+
xml.should equal_xml(<<-XML)
|
37
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
38
|
+
<pixelletter version="1.0">
|
39
|
+
<auth>
|
40
|
+
<email>email@email.de</email>
|
41
|
+
<password>password</password>
|
42
|
+
<agb>nein</agb>
|
43
|
+
<widerrufsverzicht>nein</widerrufsverzicht>
|
44
|
+
<testmodus>true</testmodus>
|
45
|
+
</auth>
|
46
|
+
</pixelletter>
|
47
|
+
XML
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
27
51
|
let :order do
|
28
52
|
{ order:
|
29
53
|
{
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pixelletter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -82,7 +82,7 @@ dependencies:
|
|
82
82
|
requirements:
|
83
83
|
- - ~>
|
84
84
|
- !ruby/object:Gem::Version
|
85
|
-
version: 3.
|
85
|
+
version: 3.0.4
|
86
86
|
type: :runtime
|
87
87
|
prerelease: false
|
88
88
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -90,7 +90,7 @@ dependencies:
|
|
90
90
|
requirements:
|
91
91
|
- - ~>
|
92
92
|
- !ruby/object:Gem::Version
|
93
|
-
version: 3.
|
93
|
+
version: 3.0.4
|
94
94
|
- !ruby/object:Gem::Dependency
|
95
95
|
name: rspec
|
96
96
|
requirement: !ruby/object:Gem::Requirement
|
@@ -203,6 +203,22 @@ dependencies:
|
|
203
203
|
- - ~>
|
204
204
|
- !ruby/object:Gem::Version
|
205
205
|
version: 0.9.1
|
206
|
+
- !ruby/object:Gem::Dependency
|
207
|
+
name: fakeweb
|
208
|
+
requirement: !ruby/object:Gem::Requirement
|
209
|
+
none: false
|
210
|
+
requirements:
|
211
|
+
- - ! '>='
|
212
|
+
- !ruby/object:Gem::Version
|
213
|
+
version: '0'
|
214
|
+
type: :development
|
215
|
+
prerelease: false
|
216
|
+
version_requirements: !ruby/object:Gem::Requirement
|
217
|
+
none: false
|
218
|
+
requirements:
|
219
|
+
- - ! '>='
|
220
|
+
- !ruby/object:Gem::Version
|
221
|
+
version: '0'
|
206
222
|
description: A simple gem to use the pixelletter.de API as there exists only an aweful
|
207
223
|
PHP class yet.
|
208
224
|
email: holger@5minutenpause.com
|