adzerk 0.1

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.
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