emarsys 0.3.5 → 0.3.6
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.
- checksums.yaml +4 -4
- data/lib/emarsys/client.rb +8 -0
- data/lib/emarsys/configuration.rb +6 -0
- data/lib/emarsys/data_objects/email.rb +18 -0
- data/lib/emarsys/request.rb +21 -18
- data/lib/emarsys/version.rb +1 -1
- data/spec/emarsys/data_objects/email_spec.rb +17 -0
- data/spec/emarsys/request_spec.rb +13 -2
- metadata +32 -32
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 247a91fcb90eb1b733aeaf081416020ed0a01b55
|
4
|
+
data.tar.gz: 6aa2a34c4e5b4c5e6d0a9021665e329c265661b0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c85175b2fa275793ae0de36b67c81048c15a928e6daa3f073acc58df33cd5a786a250a8fce410b8983db2e0503d1f36d3795a2ba9e2bb03c4c46b128f6d107e4
|
7
|
+
data.tar.gz: b9ccae40c2c73ee2eb0c851eb1a8040ab253daed9b673f226ee2f0c96a1228cdca0e9b4b327f1fda41bdc833ca72c91ec23b28d3b299a5502b4b6f23e31604ea
|
data/lib/emarsys/client.rb
CHANGED
@@ -40,5 +40,13 @@ module Emarsys
|
|
40
40
|
def calculated_digest
|
41
41
|
Digest::SHA1.hexdigest(header_nonce + header_created + password)
|
42
42
|
end
|
43
|
+
|
44
|
+
def open_timeout
|
45
|
+
Emarsys::Configuration.for(account).open_timeout
|
46
|
+
end
|
47
|
+
|
48
|
+
def read_timeout
|
49
|
+
Emarsys::Configuration.for(account).read_timeout
|
50
|
+
end
|
43
51
|
end
|
44
52
|
end
|
@@ -50,5 +50,11 @@ module Emarsys
|
|
50
50
|
@api_password or raise ArgumentError.new('api_password is not set')
|
51
51
|
end
|
52
52
|
|
53
|
+
# @!attribute open_timeout
|
54
|
+
# @return [Integer] Connect Timeout. default: RestClient timeout which is 60s
|
55
|
+
# @!attribute read_timeout
|
56
|
+
# @return [Integer] Read Timeout. default: RestClient timeout which is 60s
|
57
|
+
attr_accessor :open_timeout, :read_timeout
|
58
|
+
|
53
59
|
end
|
54
60
|
end
|
@@ -153,6 +153,24 @@ module Emarsys
|
|
153
153
|
)
|
154
154
|
post account, "email/getresponses", params
|
155
155
|
end
|
156
|
+
|
157
|
+
# http://documentation.emarsys.com/resource/developers/endpoints/email/query-responses/
|
158
|
+
def responses(type:, start_date: nil, end_date: nil, campaign_id: nil, account: nil)
|
159
|
+
params = { type: type }
|
160
|
+
if !campaign_id.nil?
|
161
|
+
params.merge!(campaign_id: campaign_id)
|
162
|
+
elsif !start_date.nil? && !end_date.nil?
|
163
|
+
params.merge!(start_date: start_date, end_date: end_date)
|
164
|
+
else
|
165
|
+
raise "Either campaign_id OR start_date/end_date must be provided"
|
166
|
+
end
|
167
|
+
post account, "email/responses", params
|
168
|
+
end
|
169
|
+
|
170
|
+
# http://documentation.emarsys.com/resource/developers/endpoints/email/query-responses-result/
|
171
|
+
def responses_result(query_id, account: nil)
|
172
|
+
get account, "email/#{query_id}/responses", {}
|
173
|
+
end
|
156
174
|
end
|
157
175
|
end
|
158
176
|
end
|
data/lib/emarsys/request.rb
CHANGED
@@ -6,29 +6,32 @@ module Emarsys
|
|
6
6
|
|
7
7
|
def initialize(account, http_verb, path, params = {})
|
8
8
|
self.path = path
|
9
|
-
self.http_verb = http_verb
|
9
|
+
self.http_verb = http_verb.to_sym
|
10
10
|
self.params = params
|
11
11
|
self.account = account
|
12
12
|
end
|
13
13
|
|
14
14
|
def send_request
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
15
|
+
args = {
|
16
|
+
method: http_verb,
|
17
|
+
url: emarsys_uri,
|
18
|
+
headers: { content_type: :json, x_wsse: client.x_wsse_string }
|
19
|
+
}
|
20
|
+
|
21
|
+
if client.open_timeout
|
22
|
+
args.merge!(open_timeout: client.open_timeout)
|
23
|
+
end
|
24
|
+
|
25
|
+
if client.read_timeout
|
26
|
+
args.merge!(read_timeout: client.read_timeout)
|
27
|
+
end
|
28
|
+
|
29
|
+
if [:post, :put].include?(http_verb)
|
30
|
+
args.merge!(payload: converted_params.to_json)
|
31
|
+
end
|
32
|
+
|
33
|
+
RestClient::Request.execute(args) do |response, request, result, &block|
|
34
|
+
Emarsys::Response.new(response)
|
32
35
|
end
|
33
36
|
end
|
34
37
|
|
data/lib/emarsys/version.rb
CHANGED
@@ -91,4 +91,21 @@ describe Emarsys::Email do
|
|
91
91
|
end
|
92
92
|
end
|
93
93
|
|
94
|
+
describe ".responses" do
|
95
|
+
it "queries responses" do
|
96
|
+
stub_params = { type: "received", campaign_id: 123 }
|
97
|
+
stub = stub_request(:post, "https://api.emarsys.net/api/v2/email/responses").with(:body => stub_params.to_json).to_return(standard_return_body)
|
98
|
+
Emarsys::Email.responses(stub_params)
|
99
|
+
expect(stub).to have_been_requested.once
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
describe ".responses_result" do
|
104
|
+
it "queries responses result" do
|
105
|
+
expect(
|
106
|
+
stub_get('email/123/responses') { Emarsys::Email.responses_result(123) }
|
107
|
+
).to have_been_requested.once
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
94
111
|
end
|
@@ -1,12 +1,11 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Emarsys::Request do
|
4
|
-
let(:client) { Emarsys::Client.new }
|
5
4
|
let(:request) { Emarsys::Request.new(nil, 'get', 'some-path', {:a => 1}) }
|
6
5
|
|
7
6
|
describe '#initialize' do
|
8
7
|
it 'sets client, path, http_verb and params attributes on initialize' do
|
9
|
-
expect(request.http_verb).to eq(
|
8
|
+
expect(request.http_verb).to eq(:get)
|
10
9
|
expect(request.path).to eq("some-path")
|
11
10
|
expect(request.params).to eq({:a => 1})
|
12
11
|
end
|
@@ -24,4 +23,16 @@ describe Emarsys::Request do
|
|
24
23
|
end
|
25
24
|
end
|
26
25
|
|
26
|
+
describe '#send_request' do
|
27
|
+
let(:client) { Emarsys::Client.new }
|
28
|
+
it 'sets timeouts if configured' do
|
29
|
+
allow(request).to receive(:client).and_return(client)
|
30
|
+
allow(client).to receive(:read_timeout).and_return(2)
|
31
|
+
expect(RestClient::Request).to receive(:execute).with(
|
32
|
+
hash_including(read_timeout: 2)
|
33
|
+
)
|
34
|
+
request.send_request
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
27
38
|
end
|
metadata
CHANGED
@@ -1,83 +1,83 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: emarsys
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Schoppmann
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-08-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name: rest-client
|
15
14
|
requirement: !ruby/object:Gem::Requirement
|
16
15
|
requirements:
|
17
|
-
- -
|
16
|
+
- - ">="
|
18
17
|
- !ruby/object:Gem::Version
|
19
18
|
version: '0'
|
20
|
-
|
19
|
+
name: rest-client
|
21
20
|
prerelease: false
|
21
|
+
type: :runtime
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name: bundler
|
29
28
|
requirement: !ruby/object:Gem::Requirement
|
30
29
|
requirements:
|
31
|
-
- - ~>
|
30
|
+
- - "~>"
|
32
31
|
- !ruby/object:Gem::Version
|
33
32
|
version: '1.3'
|
34
|
-
|
33
|
+
name: bundler
|
35
34
|
prerelease: false
|
35
|
+
type: :development
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.3'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name: rake
|
43
42
|
requirement: !ruby/object:Gem::Requirement
|
44
43
|
requirements:
|
45
|
-
- -
|
44
|
+
- - ">="
|
46
45
|
- !ruby/object:Gem::Version
|
47
46
|
version: '0'
|
48
|
-
|
47
|
+
name: rake
|
49
48
|
prerelease: false
|
49
|
+
type: :development
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name: rspec
|
57
56
|
requirement: !ruby/object:Gem::Requirement
|
58
57
|
requirements:
|
59
|
-
- -
|
58
|
+
- - ">="
|
60
59
|
- !ruby/object:Gem::Version
|
61
60
|
version: 3.5.0
|
62
|
-
|
61
|
+
name: rspec
|
63
62
|
prerelease: false
|
63
|
+
type: :development
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 3.5.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name: webmock
|
71
70
|
requirement: !ruby/object:Gem::Requirement
|
72
71
|
requirements:
|
73
|
-
- - <
|
72
|
+
- - "<"
|
74
73
|
- !ruby/object:Gem::Version
|
75
74
|
version: '2.0'
|
76
|
-
|
75
|
+
name: webmock
|
77
76
|
prerelease: false
|
77
|
+
type: :development
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - <
|
80
|
+
- - "<"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '2.0'
|
83
83
|
description: A Ruby library for interacting with the Emarsys API.
|
@@ -87,9 +87,9 @@ executables: []
|
|
87
87
|
extensions: []
|
88
88
|
extra_rdoc_files: []
|
89
89
|
files:
|
90
|
-
- .gitignore
|
91
|
-
- .rspec
|
92
|
-
- .travis.yml
|
90
|
+
- ".gitignore"
|
91
|
+
- ".rspec"
|
92
|
+
- ".travis.yml"
|
93
93
|
- CHANGELOG.md
|
94
94
|
- Gemfile
|
95
95
|
- LICENSE.txt
|
@@ -155,24 +155,24 @@ homepage: https://github.com/Absolventa/emarsys-rb
|
|
155
155
|
licenses:
|
156
156
|
- MIT
|
157
157
|
metadata: {}
|
158
|
-
post_install_message:
|
158
|
+
post_install_message:
|
159
159
|
rdoc_options: []
|
160
160
|
require_paths:
|
161
161
|
- lib
|
162
162
|
required_ruby_version: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
|
-
- -
|
164
|
+
- - ">="
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '0'
|
167
167
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
168
168
|
requirements:
|
169
|
-
- -
|
169
|
+
- - ">="
|
170
170
|
- !ruby/object:Gem::Version
|
171
171
|
version: '0'
|
172
172
|
requirements: []
|
173
|
-
rubyforge_project:
|
174
|
-
rubygems_version: 2.
|
175
|
-
signing_key:
|
173
|
+
rubyforge_project:
|
174
|
+
rubygems_version: 2.6.8
|
175
|
+
signing_key:
|
176
176
|
specification_version: 4
|
177
177
|
summary: Easy to use ruby library for Emarsys Marketing Suite.
|
178
178
|
test_files:
|