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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 81c206b72f16aa47a2968e4f6fcc1143bd44d8ead4585e8c65e70e14a1b2541f
4
- data.tar.gz: a61cfe82cbd4fe8a2899307fbc4844da2ae974257891e97b9c7336427c3d3989
3
+ metadata.gz: b525a552892d3f147e720f80fe005ce713dbcce9901df753827532f10ca52b6d
4
+ data.tar.gz: e518839ef615fb2b444b2f324ea7eddd2fedd5c36426a28b01d65ef2b04e1bca
5
5
  SHA512:
6
- metadata.gz: 44611cee6e3f78945dae45e86f286cbfb964c603933587191798df9c9b810bfd214c7b110edae97ff46968fca5ee74d0a7ef8dee87ccaca0ef47ef01672b7e6f
7
- data.tar.gz: 0fab0586f87c62820036ef226b2c27bf2ee8c9a7ca38075ba17429c8269bed5e9e2e51649fcc3c722e968416006454533a6e5b44ea55b8ac67f35d8e9616df0b
6
+ metadata.gz: 7902d331dcc69911d7a8e8273e3f913678443366367f691d15f234918d7ea31b084df045e13f869b52440b48c89aeec7852cb540fa9247512c7c0237b3b74f6e
7
+ data.tar.gz: 23b51f2303b6d091105bca619d885ff05dc5649c4e2332b7cdc4d59c6ea35b7dc381b7625528d0e1d3f640cadea71d7a74d6afbeeac97c5f64b92630c85fdd02
data/lib/adzerk.rb CHANGED
@@ -24,3 +24,4 @@ require "adzerk/instant_count"
24
24
  require "adzerk/creative_template"
25
25
  require "adzerk/scheduled_reporting"
26
26
  require "adzerk/day_parting"
27
+ require "adzerk/distance_targeting"
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
@@ -1,3 +1,3 @@
1
1
  module Adzerk
2
- VERSION = "0.17"
2
+ VERSION = "0.18"
3
3
  end
@@ -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.17'
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-04-30 00:00:00.000000000 Z
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.2
169
+ rubygems_version: 3.0.3.1
168
170
  signing_key:
169
171
  specification_version: 4
170
172
  summary: Adzerk API