adzerk 0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/Adzerk.rb +49 -0
- data/lib/adzerk/Advertiser.rb +33 -0
- data/lib/adzerk/Campaign.rb +33 -0
- data/lib/adzerk/Channel.rb +33 -0
- data/lib/adzerk/Creative.rb +46 -0
- data/lib/adzerk/CreativeMap.rb +33 -0
- data/lib/adzerk/Flight.rb +33 -0
- data/lib/adzerk/Invitation.rb +17 -0
- data/lib/adzerk/Login.rb +28 -0
- data/lib/adzerk/Publisher.rb +33 -0
- data/lib/adzerk/Reporting.rb +11 -0
- data/lib/adzerk/Site.rb +35 -0
- data/test/advertiser_api_spec.rb +101 -0
- data/test/campaign_api_spec.rb +238 -0
- data/test/channel_api_security_spec.rb +51 -0
- data/test/channel_api_spec.rb +111 -0
- data/test/creative_api_spec.rb +167 -0
- data/test/creative_map_api_spec.rb +331 -0
- data/test/flight_api_spec.rb +296 -0
- data/test/invitation_api_spec.rb +45 -0
- data/test/login_api_spec.rb +52 -0
- data/test/publisher_api_spec.rb +147 -0
- data/test/rakefile.rb +26 -0
- data/test/report_api_spec.rb +30 -0
- data/test/site_api_spec.rb +77 -0
- data/test/spec_helper.rb +19 -0
- metadata +89 -0
data/lib/Adzerk.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
require "json"
|
2
|
+
require "net/http"
|
3
|
+
require "rest_client"
|
4
|
+
|
5
|
+
module Adzerk
|
6
|
+
|
7
|
+
@@header = 'X-Adzerk-ApiKey'
|
8
|
+
$host = ENV["ADZERK_API_HOST"] || 'http://api.adzerk.net/v1/'
|
9
|
+
|
10
|
+
def self.new(key)
|
11
|
+
@@api_key = key
|
12
|
+
return self
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.api_key()
|
16
|
+
@@api_key
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.get_request(uri)
|
20
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
21
|
+
request = Net::HTTP::Get.new(uri.request_uri)
|
22
|
+
request.add_field @@header, @@api_key
|
23
|
+
http.request(request)
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.post_request(uri, data)
|
27
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
28
|
+
request = Net::HTTP::Post.new(uri.request_uri)
|
29
|
+
request.add_field @@header, @@api_key
|
30
|
+
request.set_form_data(data)
|
31
|
+
http.request(request)
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.put_request(uri, data)
|
35
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
36
|
+
request = Net::HTTP::Put.new(uri.request_uri)
|
37
|
+
request.add_field @@header, @@api_key
|
38
|
+
request.set_form_data(data)
|
39
|
+
http.request(request)
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.uploadCreative(id, imagepath)
|
43
|
+
RestClient.post $host + 'creative/' + id.to_s + '/upload',
|
44
|
+
{:image => File.new(imagepath, 'rb')},
|
45
|
+
"X-Adzerk-ApiKey" => Adzerk.api_key,
|
46
|
+
:accept => :json
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Adzerk
|
2
|
+
class Advertiser
|
3
|
+
|
4
|
+
def create(data={})
|
5
|
+
uri = URI.parse($host + 'advertiser')
|
6
|
+
data = { 'advertiser' => data.to_json }
|
7
|
+
Adzerk.post_request(uri, data)
|
8
|
+
end
|
9
|
+
|
10
|
+
def get(id)
|
11
|
+
uri = URI.parse($host + 'advertiser/' + id)
|
12
|
+
Adzerk.get_request(uri)
|
13
|
+
end
|
14
|
+
|
15
|
+
def list()
|
16
|
+
uri = URI.parse($host + 'advertiser')
|
17
|
+
response = Adzerk.get_request(uri)
|
18
|
+
JSON.parse(response.body)
|
19
|
+
end
|
20
|
+
|
21
|
+
def update(data={})
|
22
|
+
uri = URI.parse($host + 'advertiser/' + data["Id"].to_s)
|
23
|
+
data = { 'advertiser' => data.to_json }
|
24
|
+
Adzerk.put_request(uri, data)
|
25
|
+
end
|
26
|
+
|
27
|
+
def delete(id)
|
28
|
+
uri = URI.parse($host + 'advertiser/' + id.to_s + '/delete')
|
29
|
+
Adzerk.get_request(uri)
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Adzerk
|
2
|
+
class Campaign
|
3
|
+
|
4
|
+
def create(data={})
|
5
|
+
uri = URI.parse($host + 'campaign')
|
6
|
+
data = { 'campaign' => data.to_json }
|
7
|
+
Adzerk.post_request(uri, data)
|
8
|
+
end
|
9
|
+
|
10
|
+
def get(id)
|
11
|
+
uri = URI.parse($host + 'campaign/' + id)
|
12
|
+
Adzerk.get_request(uri)
|
13
|
+
end
|
14
|
+
|
15
|
+
def list()
|
16
|
+
uri = URI.parse($host + 'campaign')
|
17
|
+
response = Adzerk.get_request(uri)
|
18
|
+
JSON.parse(response.body)
|
19
|
+
end
|
20
|
+
|
21
|
+
def update(data={})
|
22
|
+
uri = URI.parse($host + 'campaign/' + data["Id"].to_s)
|
23
|
+
data = { 'campaign' => data.to_json }
|
24
|
+
Adzerk.put_request(uri, data)
|
25
|
+
end
|
26
|
+
|
27
|
+
def delete(id)
|
28
|
+
uri = URI.parse($host + 'campaign/' + id + '/delete')
|
29
|
+
Adzerk.get_request(uri)
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Adzerk
|
2
|
+
class Channel
|
3
|
+
|
4
|
+
def create(data={})
|
5
|
+
uri = URI.parse($host + 'channel')
|
6
|
+
data = { 'channel' => data.to_json }
|
7
|
+
Adzerk.post_request(uri, data)
|
8
|
+
end
|
9
|
+
|
10
|
+
def get(id)
|
11
|
+
uri = URI.parse($host + 'channel/' + id)
|
12
|
+
Adzerk.get_request(uri)
|
13
|
+
end
|
14
|
+
|
15
|
+
def list()
|
16
|
+
uri = URI.parse($host + 'channel')
|
17
|
+
response = Adzerk.get_request(uri)
|
18
|
+
JSON.parse(response.body)
|
19
|
+
end
|
20
|
+
|
21
|
+
def update(data={})
|
22
|
+
uri = URI.parse($host + 'channel/' + data["Id"].to_s)
|
23
|
+
data = { 'channel' => data.to_json }
|
24
|
+
Adzerk.put_request(uri, data)
|
25
|
+
end
|
26
|
+
|
27
|
+
def delete(id)
|
28
|
+
uri = URI.parse($host + 'channel/' + id + '/delete')
|
29
|
+
Adzerk.get_request(uri)
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require "rest_client"
|
2
|
+
|
3
|
+
module Adzerk
|
4
|
+
class Creative
|
5
|
+
|
6
|
+
def create(data={}, imagepath='')
|
7
|
+
begin
|
8
|
+
image = File.new(imagepath, 'rb')
|
9
|
+
rescue
|
10
|
+
image = ''
|
11
|
+
end
|
12
|
+
|
13
|
+
response = RestClient.post $host + 'creative',
|
14
|
+
{:creative => data.to_json},
|
15
|
+
:X_Adzerk_ApiKey => Adzerk.api_key,
|
16
|
+
:content_type => :json,
|
17
|
+
:accept => :json
|
18
|
+
|
19
|
+
Adzerk.uploadCreative(JSON.parse(response)["Id"], imagepath)
|
20
|
+
response
|
21
|
+
end
|
22
|
+
|
23
|
+
def get(id)
|
24
|
+
uri = URI.parse($host + 'creative/' + id)
|
25
|
+
Adzerk.get_request(uri)
|
26
|
+
end
|
27
|
+
|
28
|
+
def list(advertiserId)
|
29
|
+
uri = URI.parse($host + 'advertiser/' + advertiserId.to_s + "/creatives")
|
30
|
+
response = Adzerk.get_request(uri)
|
31
|
+
JSON.parse(response.body)
|
32
|
+
end
|
33
|
+
|
34
|
+
def update(data={})
|
35
|
+
uri = URI.parse($host + 'creative/' + data["Id"].to_s)
|
36
|
+
data = { 'creative' => data.to_json }
|
37
|
+
Adzerk.put_request(uri, data)
|
38
|
+
end
|
39
|
+
|
40
|
+
def delete(id)
|
41
|
+
uri = URI.parse($host + 'creative/' + id + '/delete')
|
42
|
+
Adzerk.get_request(uri)
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Adzerk
|
2
|
+
class CreativeMap
|
3
|
+
|
4
|
+
def create(data={})
|
5
|
+
uri = URI.parse($host + "flight/" + data["FlightId"].to_s + '/creative')
|
6
|
+
data = { 'creative' => data.to_json }
|
7
|
+
Adzerk.post_request(uri, data)
|
8
|
+
end
|
9
|
+
|
10
|
+
def get(id, flightId)
|
11
|
+
uri = URI.parse($host + "flight/" + flightId.to_s + '/creative/' + id.to_s)
|
12
|
+
Adzerk.get_request(uri)
|
13
|
+
end
|
14
|
+
|
15
|
+
def list(flightId)
|
16
|
+
uri = URI.parse($host + 'flight/' + flightId.to_s + "/creatives")
|
17
|
+
response = Adzerk.get_request(uri)
|
18
|
+
JSON.parse(response.body)
|
19
|
+
end
|
20
|
+
|
21
|
+
def update(data={})
|
22
|
+
uri = URI.parse($host + "flight/" + data["FlightId"].to_s + '/creative/' + data["Id"].to_s)
|
23
|
+
data = { 'creative' => data.to_json }
|
24
|
+
Adzerk.put_request(uri, data)
|
25
|
+
end
|
26
|
+
|
27
|
+
def delete(id, flightId)
|
28
|
+
uri = URI.parse($host + "flight/" + flightId.to_s + '/creative/' + id.to_s + '/delete')
|
29
|
+
Adzerk.get_request(uri)
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Adzerk
|
2
|
+
class Flight
|
3
|
+
|
4
|
+
def create(data={})
|
5
|
+
uri = URI.parse($host + 'flight')
|
6
|
+
data = { 'flight' => data.to_json }
|
7
|
+
Adzerk.post_request(uri, data)
|
8
|
+
end
|
9
|
+
|
10
|
+
def get(id)
|
11
|
+
uri = URI.parse($host + 'flight/' + id)
|
12
|
+
Adzerk.get_request(uri)
|
13
|
+
end
|
14
|
+
|
15
|
+
def list()
|
16
|
+
uri = URI.parse($host + 'flight')
|
17
|
+
response = Adzerk.get_request(uri)
|
18
|
+
JSON.parse(response.body)
|
19
|
+
end
|
20
|
+
|
21
|
+
def update(data={})
|
22
|
+
uri = URI.parse($host + 'flight/' + data["Id"].to_s)
|
23
|
+
data = { 'flight' => data.to_json }
|
24
|
+
Adzerk.put_request(uri, data)
|
25
|
+
end
|
26
|
+
|
27
|
+
def delete(id)
|
28
|
+
uri = URI.parse($host + 'flight/' + id + '/delete')
|
29
|
+
Adzerk.get_request(uri)
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Adzerk
|
2
|
+
class Invitation
|
3
|
+
|
4
|
+
def invite_publisher(data={})
|
5
|
+
uri = URI.parse($host + 'invite-publisher')
|
6
|
+
data = { 'invitation' => data.to_json }
|
7
|
+
Adzerk.post_request(uri, data)
|
8
|
+
end
|
9
|
+
|
10
|
+
def invite_advertiser(data={})
|
11
|
+
uri = URI.parse($host + 'invite-advertiser')
|
12
|
+
data = { 'invitation' => data.to_json }
|
13
|
+
Adzerk.post_request(uri, data)
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
data/lib/adzerk/Login.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
module Adzerk
|
2
|
+
class Login
|
3
|
+
|
4
|
+
def create(data={})
|
5
|
+
uri = URI.parse($host + 'login')
|
6
|
+
data = { 'login' => data.to_json }
|
7
|
+
Adzerk.post_request(uri, data)
|
8
|
+
end
|
9
|
+
|
10
|
+
def get(id)
|
11
|
+
uri = URI.parse($host + 'login/' + id)
|
12
|
+
Adzerk.get_request(uri)
|
13
|
+
end
|
14
|
+
|
15
|
+
def list()
|
16
|
+
uri = URI.parse($host + 'login')
|
17
|
+
response = Adzerk.get_request(uri)
|
18
|
+
JSON.parse(response.body)
|
19
|
+
end
|
20
|
+
|
21
|
+
def update(data={})
|
22
|
+
uri = URI.parse($host + 'login/' + data["Id"].to_s)
|
23
|
+
data = { 'login' => data.to_json }
|
24
|
+
Adzerk.put_request(uri, data)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Adzerk
|
2
|
+
class Publisher
|
3
|
+
|
4
|
+
def create(data={})
|
5
|
+
uri = URI.parse($host + 'publisher')
|
6
|
+
data = { 'publisher' => data.to_json }
|
7
|
+
Adzerk.post_request(uri, data)
|
8
|
+
end
|
9
|
+
|
10
|
+
def get(id)
|
11
|
+
uri = URI.parse($host + 'publisher/' + id)
|
12
|
+
Adzerk.get_request(uri)
|
13
|
+
end
|
14
|
+
|
15
|
+
def list()
|
16
|
+
uri = URI.parse($host + 'publisher')
|
17
|
+
response = Adzerk.get_request(uri)
|
18
|
+
JSON.parse(response.body)
|
19
|
+
end
|
20
|
+
|
21
|
+
def update(data={})
|
22
|
+
uri = URI.parse($host + 'publisher/' + data["Id"].to_s)
|
23
|
+
data = { 'publisher' => data.to_json }
|
24
|
+
Adzerk.put_request(uri, data)
|
25
|
+
end
|
26
|
+
|
27
|
+
def delete(id)
|
28
|
+
uri = URI.parse($host + 'publisher/' + id + '/delete')
|
29
|
+
Adzerk.get_request(uri)
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
data/lib/adzerk/Site.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'rest_client'
|
2
|
+
|
3
|
+
module Adzerk
|
4
|
+
class Site
|
5
|
+
|
6
|
+
def create(data={})
|
7
|
+
uri = URI.parse($host + 'site')
|
8
|
+
data = { 'site' => data.to_json }
|
9
|
+
Adzerk.post_request(uri, data)
|
10
|
+
end
|
11
|
+
|
12
|
+
def get(id)
|
13
|
+
uri = URI.parse($host + 'site/' + id)
|
14
|
+
Adzerk.get_request(uri)
|
15
|
+
end
|
16
|
+
|
17
|
+
def list()
|
18
|
+
uri = URI.parse($host + 'site')
|
19
|
+
response = Adzerk.get_request(uri)
|
20
|
+
JSON.parse(response.body)
|
21
|
+
end
|
22
|
+
|
23
|
+
def update(data={})
|
24
|
+
uri = URI.parse($host + 'site/' + data["Id"].to_s)
|
25
|
+
data = { 'site' => data.to_json }
|
26
|
+
Adzerk.put_request(uri, data)
|
27
|
+
end
|
28
|
+
|
29
|
+
def delete(id)
|
30
|
+
uri = URI.parse($host + 'site/' + id + '/delete')
|
31
|
+
Adzerk.get_request(uri)
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,101 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Advertiser API" do
|
4
|
+
|
5
|
+
$advertiser_url = 'http://www.adzerk.com'
|
6
|
+
@@advertiser = $adzerk::Advertiser.new
|
7
|
+
|
8
|
+
it "should create a new advertiser" do
|
9
|
+
$title = 'Test advertiser ' + rand(1000000).to_s
|
10
|
+
$isActive = true
|
11
|
+
$isDeleted = false
|
12
|
+
|
13
|
+
new_advertiser = {
|
14
|
+
'Title' => $title,
|
15
|
+
'IsActive' => $isActive,
|
16
|
+
'IsDeleted' => $isDeleted
|
17
|
+
}
|
18
|
+
|
19
|
+
response = @@advertiser.create(new_advertiser)
|
20
|
+
$advertiser_id = JSON.parse(response.body)["Id"].to_s
|
21
|
+
$title.should == JSON.parse(response.body)["Title"]
|
22
|
+
$isActive.should == JSON.parse(response.body)["IsActive"]
|
23
|
+
$isDeleted.should == JSON.parse(response.body)["IsDeleted"]
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should list a specific advertiser" do
|
27
|
+
response = @@advertiser.get($advertiser_id)
|
28
|
+
response.body.should == '{"Id":' + $advertiser_id + ',"Title":"' + $title + '","IsActive":' + $isActive.to_s + ',"IsDeleted":' + $isDeleted.to_s + '}'
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
it "should list all advertisers" do
|
33
|
+
result = @@advertiser.list()
|
34
|
+
result.length.should > 0
|
35
|
+
result["Items"].last["Id"].to_s.should == $advertiser_id
|
36
|
+
result["Items"].last["Title"].should == $title
|
37
|
+
result["Items"].last["IsDeleted"].should == $isDeleted
|
38
|
+
result["Items"].last["IsActive"].should == $isActive
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should update a advertiser" do
|
42
|
+
$title << "test"
|
43
|
+
$isActive = false
|
44
|
+
$isDeleted = true
|
45
|
+
|
46
|
+
updated_advertiser = {
|
47
|
+
'Id' => $advertiser_id.to_i,
|
48
|
+
'Title' => $title,
|
49
|
+
'IsDeleted' => false,
|
50
|
+
'IsActive' => true
|
51
|
+
}
|
52
|
+
response = @@advertiser.update(updated_advertiser)
|
53
|
+
# $advertiser_id = JSON.parse(response.body)["Id"].to_s
|
54
|
+
# $title.should == JSON.parse(response.body)["Title"]
|
55
|
+
# $isActive.should == JSON.parse(response.body)["IsActive"]
|
56
|
+
# $isDeleted.should == JSON.parse(response.body)["IsDeleted"]
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should delete a new advertiser" do
|
60
|
+
response = @@advertiser.delete($advertiser_id)
|
61
|
+
response.body.should == 'OK'
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should not list deleted advertisers" do
|
65
|
+
result = @@advertiser.list()
|
66
|
+
result["Items"].each do |r|
|
67
|
+
r["Id"].to_s.should_not == $advertiser_id
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should not get individual deleted advertiser" do
|
72
|
+
response = @@advertiser.get($advertiser_id)
|
73
|
+
true.should == !response.body.scan(/Object/).nil?
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should not update deleted advertisers" do
|
77
|
+
updated_advertiser = {
|
78
|
+
'Id' => $advertiser_id,
|
79
|
+
'Title' => "test"
|
80
|
+
}
|
81
|
+
response = @@advertiser.update(updated_advertiser)
|
82
|
+
true.should == !response.body.scan(/Object/).nil?
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should create a new advertiser without IsActive or IsDeleted" do
|
86
|
+
new_advertiser = {
|
87
|
+
'Title' => $title
|
88
|
+
}
|
89
|
+
response = @@advertiser.create(new_advertiser)
|
90
|
+
$title.should == JSON.parse(response.body)["Title"]
|
91
|
+
JSON.parse(response.body)["IsActive"].should == false
|
92
|
+
JSON.parse(response.body)["IsDeleted"].should == false
|
93
|
+
end
|
94
|
+
|
95
|
+
it "should require a title" do
|
96
|
+
new_advertiser = {}
|
97
|
+
response = @@advertiser.create(new_advertiser)
|
98
|
+
true.should == !response.body.scan(/Object/).nil?
|
99
|
+
end
|
100
|
+
|
101
|
+
end
|