adzerk 0.17 → 0.18
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/adzerk.rb +1 -0
- data/lib/adzerk/client.rb +10 -1
- data/lib/adzerk/distance_targeting.rb +33 -0
- data/lib/adzerk/version.rb +1 -1
- data/test/distance_targeting_api_spec.rb +138 -0
- metadata +5 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b525a552892d3f147e720f80fe005ce713dbcce9901df753827532f10ca52b6d
|
|
4
|
+
data.tar.gz: e518839ef615fb2b444b2f324ea7eddd2fedd5c36426a28b01d65ef2b04e1bca
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7902d331dcc69911d7a8e8273e3f913678443366367f691d15f234918d7ea31b084df045e13f869b52440b48c89aeec7852cb540fa9247512c7c0237b3b74f6e
|
|
7
|
+
data.tar.gz: 23b51f2303b6d091105bca619d885ff05dc5649c4e2332b7cdc4d59c6ea35b7dc381b7625528d0e1d3f640cadea71d7a74d6afbeeac97c5f64b92630c85fdd02
|
data/lib/adzerk.rb
CHANGED
data/lib/adzerk/client.rb
CHANGED
|
@@ -8,7 +8,7 @@ module Adzerk
|
|
|
8
8
|
:publishers, :invitations, :reports, :channel_site_maps,
|
|
9
9
|
:logins, :geotargetings, :sitezonetargetings, :categories,
|
|
10
10
|
:instant_counts, :ads, :creative_templates, :scheduled_reports,
|
|
11
|
-
:day_parts
|
|
11
|
+
:day_parts, :distance_targetings
|
|
12
12
|
|
|
13
13
|
VERSION = Gem.loaded_specs['adzerk'].version.to_s
|
|
14
14
|
SDK_HEADER_NAME = 'X-Adzerk-Sdk-Version'
|
|
@@ -49,6 +49,7 @@ module Adzerk
|
|
|
49
49
|
@creative_templates = Adzerk::CreativeTemplate.new(:client => self)
|
|
50
50
|
@scheduled_reports = Adzerk::ScheduledReporting.new(:client => self, :endpoint => 'report')
|
|
51
51
|
@day_parts = Adzerk::DayParting.new(:client => self, :endpoint => 'dayparting')
|
|
52
|
+
@distance_targetings = Adzerk::DistanceTargeting.new(:client => self, :endpoint => 'distancetargeting')
|
|
52
53
|
end
|
|
53
54
|
|
|
54
55
|
def get_request(url, version: 'v1')
|
|
@@ -59,6 +60,14 @@ module Adzerk
|
|
|
59
60
|
send_request(request, uri)
|
|
60
61
|
end
|
|
61
62
|
|
|
63
|
+
def delete_request(url, version: 'v1')
|
|
64
|
+
uri = URI.parse("#{@config[:host]}#{version}/#{url}")
|
|
65
|
+
request = Net::HTTP::Delete.new(uri.request_uri)
|
|
66
|
+
request.add_field(@config[:header], @api_key)
|
|
67
|
+
request.add_field(SDK_HEADER_NAME, SDK_HEADER_VALUE)
|
|
68
|
+
send_request(request, uri)
|
|
69
|
+
end
|
|
70
|
+
|
|
62
71
|
def post_request(url, data, version: 'v1')
|
|
63
72
|
uri = URI.parse("#{@config[:host]}#{version}/#{url}")
|
|
64
73
|
request = Net::HTTP::Post.new(uri.request_uri)
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
module Adzerk
|
|
2
|
+
class DistanceTargeting < ApiEndpoint
|
|
3
|
+
def create(flight_id, data={})
|
|
4
|
+
url = "flight/#{flight_id}/distance"
|
|
5
|
+
parse_response(@client.post_json_request(url, camelize_data(data)))
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def batch_upload(flight_id, data={})
|
|
9
|
+
url = "flight/#{flight_id}/distance/batch"
|
|
10
|
+
parse_response(@client.post_json_request(url, camelize_data(data)))
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def update(flight_id, geometry_id, data={})
|
|
14
|
+
url = "flight/#{flight_id}/distance/#{geometry_id}"
|
|
15
|
+
parse_response(@client.put_json_request(url, camelize_data(data)))
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def get(flight_id, geometry_id)
|
|
19
|
+
url = "flight/#{flight_id}/distance/#{geometry_id}"
|
|
20
|
+
parse_response(@client.get_request(url))
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def list(flight_id)
|
|
24
|
+
url = "flight/#{flight_id}/distance"
|
|
25
|
+
parse_response(@client.get_request(url))
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def delete(flight_id, geometry_id)
|
|
29
|
+
url = "flight/#{flight_id}/distance/#{geometry_id}"
|
|
30
|
+
@client.delete_request(url)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
data/lib/adzerk/version.rb
CHANGED
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
|
2
|
+
|
|
3
|
+
describe "DistanceTargeting API" do
|
|
4
|
+
before(:all) do
|
|
5
|
+
client = Adzerk::Client.new(API_KEY)
|
|
6
|
+
@distance_targeting = client.distance_targetings
|
|
7
|
+
@flights = client.flights
|
|
8
|
+
@advertisers = client.advertisers
|
|
9
|
+
@channels = client.channels
|
|
10
|
+
@campaigns = client.campaigns
|
|
11
|
+
@priorities = client.priorities
|
|
12
|
+
|
|
13
|
+
advertiser = @advertisers.create(:title => "test")
|
|
14
|
+
$advertiserId = advertiser[:id].to_s
|
|
15
|
+
|
|
16
|
+
channel = @channels.create(:title => 'Test Channel ' + rand(1000000).to_s,
|
|
17
|
+
:commission => '0.0',
|
|
18
|
+
:engine => 'CPM',
|
|
19
|
+
:keywords => 'test',
|
|
20
|
+
'CPM' => '10.00',
|
|
21
|
+
:ad_types => [1,2,3,4])
|
|
22
|
+
$channel_id = channel[:id].to_s
|
|
23
|
+
|
|
24
|
+
priority = @priorities.create(:name => "High Priority Test",
|
|
25
|
+
:channel_id => $channel_id,
|
|
26
|
+
:weight => 1,
|
|
27
|
+
:is_deleted => false)
|
|
28
|
+
$priority_id = priority[:id].to_s
|
|
29
|
+
|
|
30
|
+
campaign = @campaigns.
|
|
31
|
+
create(:name => 'Test campaign ' + rand(1000000).to_s,
|
|
32
|
+
:start_date => "1/1/2011",
|
|
33
|
+
:end_date => "12/31/2011",
|
|
34
|
+
:is_active => false,
|
|
35
|
+
:price => '10.00',
|
|
36
|
+
:advertiser_id => $advertiserId,
|
|
37
|
+
:flights => [],
|
|
38
|
+
:is_deleted => false)
|
|
39
|
+
$campaign_id = campaign[:id]
|
|
40
|
+
|
|
41
|
+
new_flight = {
|
|
42
|
+
:priority_id => $priority_id,
|
|
43
|
+
:name => 'Test flight ' + rand(1000000).to_s,
|
|
44
|
+
:start_date => "1/1/2011",
|
|
45
|
+
:end_date => "12/31/2011",
|
|
46
|
+
:no_end_date => false,
|
|
47
|
+
:price => '15.00',
|
|
48
|
+
:option_type => 1,
|
|
49
|
+
:impressions => 10000,
|
|
50
|
+
:is_unlimited => false,
|
|
51
|
+
:is_full_speed => false,
|
|
52
|
+
:keywords => "test, test2",
|
|
53
|
+
:user_agent_keywords => nil,
|
|
54
|
+
:weight_override => nil,
|
|
55
|
+
:campaign_id => $campaign_id,
|
|
56
|
+
:is_active => true,
|
|
57
|
+
:is_deleted => false,
|
|
58
|
+
:goal_type => 1
|
|
59
|
+
}
|
|
60
|
+
flight = @flights.create(new_flight)
|
|
61
|
+
$flight_id = flight[:id].to_s
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
after(:all) do
|
|
65
|
+
@flights.delete($flight_id)
|
|
66
|
+
@campaigns.delete($campaign_id)
|
|
67
|
+
@advertisers.delete($advertiserId)
|
|
68
|
+
@priorities.delete($priority_id)
|
|
69
|
+
@channels.delete($channel_id)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
it "should create a Distance Targeting Geometry object with a street address" do
|
|
73
|
+
distance = 42
|
|
74
|
+
address = "1600 Pennsylvania Avenue NW, Washington DC 20500"
|
|
75
|
+
data = {
|
|
76
|
+
:distance => distance,
|
|
77
|
+
:street_address => address
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
response = @distance_targeting.create($flight_id, data)
|
|
81
|
+
expect(response[:flight_id].to_s).to eq($flight_id)
|
|
82
|
+
expect(response[:distance]).to eq(distance)
|
|
83
|
+
expect(response[:street_address]).to eq(address)
|
|
84
|
+
$geometry_id = response[:id]
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
it "should upload a batch of Distance Targeting Geometries" do
|
|
88
|
+
data = {
|
|
89
|
+
:replace_existing => false,
|
|
90
|
+
:geometries => [
|
|
91
|
+
{
|
|
92
|
+
:latitude => -89.05,
|
|
93
|
+
:longitude => 57.1,
|
|
94
|
+
:distance => 5
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
:latitude => 14,
|
|
98
|
+
:longitude => 57.1,
|
|
99
|
+
:distance => 5
|
|
100
|
+
}
|
|
101
|
+
]
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
response = @distance_targeting.batch_upload($flight_id, data)
|
|
105
|
+
expect(response[:inserted_geometries]).to_not eq(nil)
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
it "should update a Distance Targeting Geometry" do
|
|
109
|
+
new_distance = 43
|
|
110
|
+
new_address = "701 N 1st Ave, Minneapolis MN 55403"
|
|
111
|
+
data = {
|
|
112
|
+
:distance => new_distance,
|
|
113
|
+
:street_address => new_address
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
response = @distance_targeting.update($flight_id, $geometry_id, data)
|
|
117
|
+
expect(response[:flight_id].to_s).to eq($flight_id)
|
|
118
|
+
expect(response[:id]).to eq($geometry_id)
|
|
119
|
+
expect(response[:distance]).to eq(new_distance)
|
|
120
|
+
expect(response[:street_address]).to eq(new_address)
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
it "should get a specific Distance Targeting Geometry" do
|
|
124
|
+
response = @distance_targeting.get($flight_id, $geometry_id)
|
|
125
|
+
expect(response[:flight_id].to_s).to eq($flight_id)
|
|
126
|
+
expect(response[:id]).to eq($geometry_id)
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
it "should list Distance Targeting Geometry objects associated with a flight" do
|
|
130
|
+
response = @distance_targeting.list($flight_id)
|
|
131
|
+
expect(response.length).to be > 0
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
it "should delete a specific Distance Targeting Geometry" do
|
|
135
|
+
response = @distance_targeting.delete($flight_id, $geometry_id)
|
|
136
|
+
expect(response.code).to eq('204')
|
|
137
|
+
end
|
|
138
|
+
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: adzerk
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: '0.
|
|
4
|
+
version: '0.18'
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kacy Fortner
|
|
@@ -17,7 +17,7 @@ authors:
|
|
|
17
17
|
autorequire:
|
|
18
18
|
bindir: bin
|
|
19
19
|
cert_chain: []
|
|
20
|
-
date: 2021-
|
|
20
|
+
date: 2021-05-05 00:00:00.000000000 Z
|
|
21
21
|
dependencies:
|
|
22
22
|
- !ruby/object:Gem::Dependency
|
|
23
23
|
name: rspec
|
|
@@ -107,6 +107,7 @@ files:
|
|
|
107
107
|
- lib/adzerk/creative_map.rb
|
|
108
108
|
- lib/adzerk/creative_template.rb
|
|
109
109
|
- lib/adzerk/day_parting.rb
|
|
110
|
+
- lib/adzerk/distance_targeting.rb
|
|
110
111
|
- lib/adzerk/errors.rb
|
|
111
112
|
- lib/adzerk/flight.rb
|
|
112
113
|
- lib/adzerk/geo_targeting.rb
|
|
@@ -129,6 +130,7 @@ files:
|
|
|
129
130
|
- test/creative_map_api_spec.rb
|
|
130
131
|
- test/creative_template_spec.rb
|
|
131
132
|
- test/day_parting_api_spec.rb
|
|
133
|
+
- test/distance_targeting_api_spec.rb
|
|
132
134
|
- test/flight_api_spec.rb
|
|
133
135
|
- test/geo_targeting_api_spec.rb
|
|
134
136
|
- test/instant_count_api_spec.rb
|
|
@@ -164,7 +166,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
164
166
|
- !ruby/object:Gem::Version
|
|
165
167
|
version: '0'
|
|
166
168
|
requirements: []
|
|
167
|
-
rubygems_version: 3.1
|
|
169
|
+
rubygems_version: 3.0.3.1
|
|
168
170
|
signing_key:
|
|
169
171
|
specification_version: 4
|
|
170
172
|
summary: Adzerk API
|