adzerk 0.1

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -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
@@ -0,0 +1,11 @@
1
+ module Adzerk
2
+ class Reporting
3
+
4
+ def create_report(data={})
5
+ uri = URI.parse($host + 'report')
6
+ data = { 'criteria' => data.to_json }
7
+ Adzerk.post_request(uri, data)
8
+ end
9
+
10
+ end
11
+ end
@@ -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