adknowledge 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +2 -0
- data/.travis.yml +5 -0
- data/Gemfile +12 -0
- data/README.md +1 -0
- data/adknowledge.gemspec +5 -5
- data/lib/adknowledge/integrated.rb +14 -17
- data/lib/adknowledge/performance.rb +22 -24
- data/lib/adknowledge/version.rb +1 -1
- data/spec/adknowledge/integrated_spec.rb +1 -1
- data/spec/spec_helper.rb +3 -0
- metadata +17 -21
data/.gitignore
CHANGED
data/.travis.yml
ADDED
data/Gemfile
CHANGED
@@ -2,3 +2,15 @@ source "http://rubygems.org"
|
|
2
2
|
|
3
3
|
# Specify your gem's dependencies in adstation.gemspec
|
4
4
|
gemspec
|
5
|
+
|
6
|
+
group :development, :test do
|
7
|
+
platforms :jruby do
|
8
|
+
gem 'gson'
|
9
|
+
gem 'libxml-jruby'
|
10
|
+
end
|
11
|
+
|
12
|
+
platforms :mri do
|
13
|
+
gem 'ox'
|
14
|
+
gem 'oj'
|
15
|
+
end
|
16
|
+
end
|
data/README.md
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
Adknowledge <a id='top'></a>
|
2
2
|
===========
|
3
|
+
[![Build Status](https://travis-ci.org/spiegela/adknowledge.png?branch=develop)](https://travis-ci.org/spiegela/adknowledge) [![Gem Version](https://badge.fury.io/rb/adknowledge.png)](http://badge.fury.io/rb/adknowledge) [![Dependency Status](https://gemnasium.com/spiegela/adknowledge.png)](https://gemnasium.com/spiegela/adknowledge) [![Code Climate](https://codeclimate.com/github/spiegela/adknowledge.png)](https://codeclimate.com/github/spiegela/adknowledge) [![Coverage Status](https://coveralls.io/repos/spiegela/adknowledge/badge.png?branch=master)](https://coveralls.io/r/spiegela/adknowledge)
|
3
4
|
|
4
5
|
A very Ruby client library for [Adknowledge](http://www.adknowledge.com) APIs
|
5
6
|
|
data/adknowledge.gemspec
CHANGED
@@ -19,15 +19,15 @@ Gem::Specification.new do |s|
|
|
19
19
|
# specify any dependencies here; for example:
|
20
20
|
s.add_development_dependency "pry"
|
21
21
|
s.add_development_dependency "rspec"
|
22
|
-
s.add_development_dependency "webmock"
|
22
|
+
s.add_development_dependency "webmock"
|
23
23
|
s.add_development_dependency "vcr"
|
24
|
+
s.add_development_dependency "coveralls"
|
24
25
|
s.add_runtime_dependency "rake"
|
25
26
|
s.add_runtime_dependency "activesupport"
|
26
|
-
s.add_runtime_dependency "oj"
|
27
|
-
s.add_runtime_dependency "ox"
|
28
27
|
s.add_runtime_dependency "multi_xml"
|
28
|
+
s.add_runtime_dependency "multi_json"
|
29
|
+
s.add_runtime_dependency "nokogiri"
|
29
30
|
s.add_runtime_dependency "addressable"
|
30
31
|
s.add_runtime_dependency "faraday"
|
31
|
-
s.add_runtime_dependency "faraday_middleware"
|
32
|
-
s.add_runtime_dependency "faraday_middleware-parse_oj"
|
32
|
+
s.add_runtime_dependency "faraday_middleware-multi_json"
|
33
33
|
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'faraday'
|
2
|
-
require 'ox'
|
3
2
|
require 'addressable/uri'
|
4
3
|
require 'faraday_middleware/response/parse_xml'
|
5
4
|
require 'active_support/core_ext/module/delegation'
|
5
|
+
require 'nokogiri'
|
6
6
|
|
7
7
|
module Adknowledge
|
8
8
|
class Integrated
|
@@ -47,14 +47,15 @@ module Adknowledge
|
|
47
47
|
# @return [String] prepared XML request for recipient array
|
48
48
|
def recipients= recipient_hashes
|
49
49
|
@recipients = recipient_hashes
|
50
|
-
doc =
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
50
|
+
doc = Nokogiri::XML::Builder.new do |root|
|
51
|
+
root.request do |req|
|
52
|
+
recipient_hashes.each do |recipient_hash|
|
53
|
+
email_hash = recipient_hash.select{|x| VALID_FIELDS.include? x}
|
54
|
+
email_xml(email_hash, req)
|
55
|
+
end
|
56
|
+
end
|
56
57
|
end
|
57
|
-
@request =
|
58
|
+
@request = doc.to_xml(save_with: Nokogiri::XML::Node::SaveOptions::AS_XML).gsub("\n", '')
|
58
59
|
end
|
59
60
|
|
60
61
|
|
@@ -174,19 +175,15 @@ module Adknowledge
|
|
174
175
|
uri.query
|
175
176
|
end
|
176
177
|
|
177
|
-
def email_xml email_hash
|
178
|
+
def email_xml email_hash, doc
|
178
179
|
unless (MANDATORY_FIELDS - email_hash.keys).empty?
|
179
180
|
raise ArgumentError, 'One or more mandatory fields were not submitted'
|
180
181
|
end
|
181
|
-
|
182
|
-
|
183
|
-
|
182
|
+
doc.email do |email|
|
183
|
+
email_hash.each do |field, value|
|
184
|
+
email.send(field, value)
|
185
|
+
end
|
184
186
|
end
|
185
|
-
e
|
186
|
-
end
|
187
|
-
|
188
|
-
def field_xml field, value
|
189
|
-
Ox::Element.new(field) << value.to_s
|
190
187
|
end
|
191
188
|
|
192
189
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'faraday'
|
2
2
|
require 'faraday_middleware'
|
3
|
-
require 'faraday_middleware/
|
3
|
+
require 'faraday_middleware/multi_json'
|
4
4
|
require 'active_support/core_ext/module/delegation'
|
5
5
|
|
6
6
|
module Adknowledge
|
@@ -66,11 +66,7 @@ module Adknowledge
|
|
66
66
|
# @param [Array] selection(s)
|
67
67
|
# @return [Adknowledge::Performance] query object
|
68
68
|
def select *selection
|
69
|
-
|
70
|
-
unless (selection - VALID_MEASURES).empty?
|
71
|
-
raise ArgumentError, 'Invalid measurement selection'
|
72
|
-
end
|
73
|
-
@measures.merge! Hash[selection.zip([1] * selection.count)]
|
69
|
+
@measures.merge! paramerize(selection, VALID_MEASURES, 'Invalid measurement selection')
|
74
70
|
self
|
75
71
|
end
|
76
72
|
|
@@ -79,11 +75,7 @@ module Adknowledge
|
|
79
75
|
# @param [Array] grouping(s)
|
80
76
|
# @return [Adknowledge::Performance] query object
|
81
77
|
def group_by *groupings
|
82
|
-
|
83
|
-
unless (groupings - VALID_DIMENSIONS).empty?
|
84
|
-
raise ArgumentError, 'Invalid dimension grouping'
|
85
|
-
end
|
86
|
-
@dimensions.merge! Hash[groupings.zip([1] * groupings.count)]
|
78
|
+
@dimensions.merge! paramerize(groupings, VALID_DIMENSIONS, 'Invalid dimension group')
|
87
79
|
self
|
88
80
|
end
|
89
81
|
|
@@ -129,10 +121,7 @@ module Adknowledge
|
|
129
121
|
# @param [Boolean] full
|
130
122
|
# @return [Adknowledge::Performance] query object
|
131
123
|
def full full
|
132
|
-
|
133
|
-
raise ArgumentError, 'Full option must be a boolean'
|
134
|
-
end
|
135
|
-
@options[:full] = full ? '1' : '0'
|
124
|
+
@options[:full] = booleanize 'Full', full
|
136
125
|
self
|
137
126
|
end
|
138
127
|
|
@@ -141,10 +130,7 @@ module Adknowledge
|
|
141
130
|
# @param [Boolean] nocache
|
142
131
|
# @return [Adknowledge::Performance] query object
|
143
132
|
def nocache nocache
|
144
|
-
|
145
|
-
raise ArgumentError, 'NoCache option must be a boolean'
|
146
|
-
end
|
147
|
-
@options[:nocache] = nocache ? '1' : '0'
|
133
|
+
@options[:nocache] = booleanize 'NoCache', nocache
|
148
134
|
self
|
149
135
|
end
|
150
136
|
|
@@ -153,10 +139,7 @@ module Adknowledge
|
|
153
139
|
# @param [Boolean] display_all
|
154
140
|
# @return [Adknowledge::Performance] query object
|
155
141
|
def display_all display_all
|
156
|
-
|
157
|
-
raise ArgumentError, "display_all option must be a boolean"
|
158
|
-
end
|
159
|
-
@options[:all] = display_all ? '1' : '0'
|
142
|
+
@options[:all] = booleanize 'DisplayAll', display_all
|
160
143
|
self
|
161
144
|
end
|
162
145
|
|
@@ -223,11 +206,26 @@ module Adknowledge
|
|
223
206
|
|
224
207
|
def conn
|
225
208
|
@conn ||= Faraday.new(:url => URL) do |b|
|
226
|
-
b.response :
|
209
|
+
b.response :multi_json
|
227
210
|
b.adapter Faraday.default_adapter
|
228
211
|
end
|
229
212
|
end
|
230
213
|
|
214
|
+
def paramerize array, valid, error_str
|
215
|
+
array = array.map{|x| x.to_sym} # handle strings & symbols equally
|
216
|
+
unless (array - valid).empty?
|
217
|
+
raise ArgumentError, error_str
|
218
|
+
end
|
219
|
+
Hash[array.zip([1] * array.count)]
|
220
|
+
end
|
221
|
+
|
222
|
+
def booleanize name, value
|
223
|
+
unless !!value == value #Boolean check
|
224
|
+
raise ArgumentError, "#{name} option must be a boolean"
|
225
|
+
end
|
226
|
+
value ? '1' : '0'
|
227
|
+
end
|
228
|
+
|
231
229
|
def valid_pivot_values
|
232
230
|
dimensions.keys + ['*']
|
233
231
|
end
|
data/lib/adknowledge/version.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -4,6 +4,7 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
|
|
4
4
|
require 'adknowledge'
|
5
5
|
require 'rspec'
|
6
6
|
require 'vcr'
|
7
|
+
require 'coveralls'
|
7
8
|
|
8
9
|
VCR.configure do |c|
|
9
10
|
c.hook_into :webmock
|
@@ -14,3 +15,5 @@ VCR.configure do |c|
|
|
14
15
|
match_requests_on: [ :method ]
|
15
16
|
}
|
16
17
|
end
|
18
|
+
|
19
|
+
Coveralls.wear!
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: adknowledge
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -48,17 +48,17 @@ dependencies:
|
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
49
49
|
none: false
|
50
50
|
requirements:
|
51
|
-
- - '
|
51
|
+
- - ! '>='
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: '
|
53
|
+
version: '0'
|
54
54
|
type: :development
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
none: false
|
58
58
|
requirements:
|
59
|
-
- - '
|
59
|
+
- - ! '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '0'
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
63
|
name: vcr
|
64
64
|
requirement: !ruby/object:Gem::Requirement
|
@@ -76,14 +76,14 @@ dependencies:
|
|
76
76
|
- !ruby/object:Gem::Version
|
77
77
|
version: '0'
|
78
78
|
- !ruby/object:Gem::Dependency
|
79
|
-
name:
|
79
|
+
name: coveralls
|
80
80
|
requirement: !ruby/object:Gem::Requirement
|
81
81
|
none: false
|
82
82
|
requirements:
|
83
83
|
- - ! '>='
|
84
84
|
- !ruby/object:Gem::Version
|
85
85
|
version: '0'
|
86
|
-
type: :
|
86
|
+
type: :development
|
87
87
|
prerelease: false
|
88
88
|
version_requirements: !ruby/object:Gem::Requirement
|
89
89
|
none: false
|
@@ -92,7 +92,7 @@ dependencies:
|
|
92
92
|
- !ruby/object:Gem::Version
|
93
93
|
version: '0'
|
94
94
|
- !ruby/object:Gem::Dependency
|
95
|
-
name:
|
95
|
+
name: rake
|
96
96
|
requirement: !ruby/object:Gem::Requirement
|
97
97
|
none: false
|
98
98
|
requirements:
|
@@ -108,7 +108,7 @@ dependencies:
|
|
108
108
|
- !ruby/object:Gem::Version
|
109
109
|
version: '0'
|
110
110
|
- !ruby/object:Gem::Dependency
|
111
|
-
name:
|
111
|
+
name: activesupport
|
112
112
|
requirement: !ruby/object:Gem::Requirement
|
113
113
|
none: false
|
114
114
|
requirements:
|
@@ -124,7 +124,7 @@ dependencies:
|
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: '0'
|
126
126
|
- !ruby/object:Gem::Dependency
|
127
|
-
name:
|
127
|
+
name: multi_xml
|
128
128
|
requirement: !ruby/object:Gem::Requirement
|
129
129
|
none: false
|
130
130
|
requirements:
|
@@ -140,7 +140,7 @@ dependencies:
|
|
140
140
|
- !ruby/object:Gem::Version
|
141
141
|
version: '0'
|
142
142
|
- !ruby/object:Gem::Dependency
|
143
|
-
name:
|
143
|
+
name: multi_json
|
144
144
|
requirement: !ruby/object:Gem::Requirement
|
145
145
|
none: false
|
146
146
|
requirements:
|
@@ -156,7 +156,7 @@ dependencies:
|
|
156
156
|
- !ruby/object:Gem::Version
|
157
157
|
version: '0'
|
158
158
|
- !ruby/object:Gem::Dependency
|
159
|
-
name:
|
159
|
+
name: nokogiri
|
160
160
|
requirement: !ruby/object:Gem::Requirement
|
161
161
|
none: false
|
162
162
|
requirements:
|
@@ -172,7 +172,7 @@ dependencies:
|
|
172
172
|
- !ruby/object:Gem::Version
|
173
173
|
version: '0'
|
174
174
|
- !ruby/object:Gem::Dependency
|
175
|
-
name:
|
175
|
+
name: addressable
|
176
176
|
requirement: !ruby/object:Gem::Requirement
|
177
177
|
none: false
|
178
178
|
requirements:
|
@@ -188,7 +188,7 @@ dependencies:
|
|
188
188
|
- !ruby/object:Gem::Version
|
189
189
|
version: '0'
|
190
190
|
- !ruby/object:Gem::Dependency
|
191
|
-
name:
|
191
|
+
name: faraday
|
192
192
|
requirement: !ruby/object:Gem::Requirement
|
193
193
|
none: false
|
194
194
|
requirements:
|
@@ -204,7 +204,7 @@ dependencies:
|
|
204
204
|
- !ruby/object:Gem::Version
|
205
205
|
version: '0'
|
206
206
|
- !ruby/object:Gem::Dependency
|
207
|
-
name: faraday_middleware-
|
207
|
+
name: faraday_middleware-multi_json
|
208
208
|
requirement: !ruby/object:Gem::Requirement
|
209
209
|
none: false
|
210
210
|
requirements:
|
@@ -227,6 +227,7 @@ extensions: []
|
|
227
227
|
extra_rdoc_files: []
|
228
228
|
files:
|
229
229
|
- .gitignore
|
230
|
+
- .travis.yml
|
230
231
|
- Gemfile
|
231
232
|
- README.md
|
232
233
|
- Rakefile
|
@@ -256,18 +257,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
256
257
|
- - ! '>='
|
257
258
|
- !ruby/object:Gem::Version
|
258
259
|
version: '0'
|
259
|
-
segments:
|
260
|
-
- 0
|
261
|
-
hash: 387899590965844068
|
262
260
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
263
261
|
none: false
|
264
262
|
requirements:
|
265
263
|
- - ! '>='
|
266
264
|
- !ruby/object:Gem::Version
|
267
265
|
version: '0'
|
268
|
-
segments:
|
269
|
-
- 0
|
270
|
-
hash: 387899590965844068
|
271
266
|
requirements: []
|
272
267
|
rubyforge_project:
|
273
268
|
rubygems_version: 1.8.24
|
@@ -282,3 +277,4 @@ test_files:
|
|
282
277
|
- spec/cassettes/map_single_success.yml
|
283
278
|
- spec/cassettes/performance.yml
|
284
279
|
- spec/spec_helper.rb
|
280
|
+
has_rdoc:
|