awesm 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -4,6 +4,7 @@ require 'hashie'
4
4
 
5
5
  require 'awesm/version'
6
6
  require 'awesm/project'
7
+ require 'awesm/conversion'
7
8
  require 'awesm/url'
8
9
 
9
10
  module Awesm
@@ -0,0 +1,15 @@
1
+ module Awesm
2
+ class Conversion < Hashie::Mash
3
+ include HTTParty
4
+ base_uri 'http://api.awe.sm/conversions'
5
+
6
+ def self.convert(params)
7
+ response = get('/new', :query => params)
8
+ if response.has_key?("error")
9
+ nil
10
+ else
11
+ new(response['response']['conversion'])
12
+ end
13
+ end
14
+ end
15
+ end
@@ -1,3 +1,3 @@
1
1
  module Awesm
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
@@ -0,0 +1,105 @@
1
+ require 'spec_helper'
2
+
3
+ describe Awesm::Conversion do
4
+ let(:json_response) do
5
+ {
6
+ "request" => {
7
+ "action" => "new",
8
+ "awesm_url" => "awe.sm_5WXHo",
9
+ "controller" => "conversion",
10
+ "conversion_type" => "goal_1",
11
+ "conversion_value" => "1230",
12
+ "key" => "f2d8aeb112f1e0bedd7c05653e3265d2622635a3180f336f73b172267f7fe6ee"
13
+ },
14
+ "response" => {
15
+ "conversion" => {
16
+ "account_conversionid" => nil,
17
+ "account_id" => "12",
18
+ "account_userid" => nil,
19
+ "awesm_url" => "awe.sm_5WXHo",
20
+ "clicker_id" => nil,
21
+ "converted_at" => 1317850014,
22
+ "href" => nil,
23
+ "id" => "238ea66b-e267-45cf-85a6-e0c21580f1e6",
24
+ "ip_address" => nil,
25
+ "language" => nil,
26
+ "redirection_id" => "94585739",
27
+ "referrer" => nil,
28
+ "session_id" => nil,
29
+ "type" => "goal_1",
30
+ "user_agent" => nil,
31
+ "value" => 1230
32
+ }
33
+ }
34
+ }.to_json
35
+ end
36
+
37
+ let(:json_error_response) do
38
+ {
39
+ "request" => {
40
+ "action" => "new",
41
+ "awesm_url" => "awe.sm_5WXHo",
42
+ "controller" => "conversion",
43
+ "conversion_type" => "goal_1",
44
+ "conversion_value" => "1230",
45
+ "key" => "badkeyabcdefghijklmnopqrstuvwxyz1234567890"
46
+ },
47
+ "error" => {
48
+ "code" => 1000,
49
+ "message" => "Invalid API key"
50
+ }
51
+ }.to_json
52
+ end
53
+
54
+ before do
55
+ stub_request(:get, "http://api.awe.sm/conversions/new?key=f2d8aeb112f1e0bedd7c05653e3265d2622635a3180f336f73b172267f7fe6ee&awesm_url=awe.sm_5WXHo&conversion_type=goal_1&conversion_value=1230").
56
+ to_return(:status => 200, :body => json_response, :headers => { 'Content-Type' => 'application/json;charset=utf-8' })
57
+ stub_request(:get, "http://api.awe.sm/conversions/new?key=badkeyabcdefghijklmnopqrstuvwxyz1234567890&awesm_url=awe.sm_5WXHo&conversion_type=goal_1&conversion_value=1230").
58
+ to_return(:status => 400, :body => json_error_response, :headers => { 'Content-Type' => 'application/json;charset=utf-8' })
59
+ end
60
+
61
+ describe '.convert' do
62
+ context 'when an error occurs' do
63
+ it 'returns nil' do
64
+ params = {
65
+ :key => "badkeyabcdefghijklmnopqrstuvwxyz1234567890",
66
+ :awesm_url => "awe.sm_5WXHo",
67
+ :conversion_type => "goal_1",
68
+ :conversion_value => "1230"
69
+ }
70
+ conversion = Awesm::Conversion.convert(params)
71
+ conversion.should == nil
72
+ end
73
+ end
74
+
75
+ context 'when successful' do
76
+ it 'returns an Awesm::Conversion' do
77
+ params = {
78
+ :key => "f2d8aeb112f1e0bedd7c05653e3265d2622635a3180f336f73b172267f7fe6ee",
79
+ :awesm_url => "awe.sm_5WXHo",
80
+ :conversion_type => "goal_1",
81
+ :conversion_value => "1230"
82
+ }
83
+
84
+ conversion = Awesm::Conversion.convert(params)
85
+ conversion.should be_an_instance_of(Awesm::Conversion)
86
+ end
87
+ end
88
+
89
+ it 'gets from the awe.sm conversion api properly' do
90
+ params = {
91
+ :key => "f2d8aeb112f1e0bedd7c05653e3265d2622635a3180f336f73b172267f7fe6ee",
92
+ :awesm_url => "awe.sm_5WXHo",
93
+ :conversion_type => "goal_1",
94
+ :conversion_value => "1230"
95
+ }
96
+
97
+ conversion = Awesm::Conversion.convert(params)
98
+
99
+ a_request(:get, "http://api.awe.sm/conversions/new").
100
+ with(:query => {:key => "f2d8aeb112f1e0bedd7c05653e3265d2622635a3180f336f73b172267f7fe6ee",
101
+ :awesm_url => "awe.sm_5WXHo", :conversion_type => "goal_1", :conversion_value => "1230"}).
102
+ should have_been_made.once
103
+ end
104
+ end
105
+ end
@@ -36,8 +36,8 @@ describe Awesm::Project do
36
36
  "subscription_key" => "sub-xxxxxx"
37
37
  },
38
38
  "error" => {
39
- "code"=>10001,
40
- "message"=>"Project name already exists (not necessarily in your subscription). Please choose another."
39
+ "code" => 10001,
40
+ "message" => "Project name already exists (not necessarily in your subscription). Please choose another."
41
41
  }
42
42
  }.to_json
43
43
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: awesm
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 4
10
- version: 0.1.4
9
+ - 5
10
+ version: 0.1.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Sathya Sekaran
@@ -16,11 +16,11 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-12-07 00:00:00 Z
19
+ date: 2011-12-08 00:00:00 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
+ name: rake
22
23
  prerelease: false
23
- type: :development
24
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
25
  none: false
26
26
  requirements:
@@ -30,11 +30,11 @@ dependencies:
30
30
  segments:
31
31
  - 0
32
32
  version: "0"
33
- name: rake
33
+ type: :development
34
34
  version_requirements: *id001
35
35
  - !ruby/object:Gem::Dependency
36
+ name: rspec
36
37
  prerelease: false
37
- type: :development
38
38
  requirement: &id002 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
@@ -44,11 +44,11 @@ dependencies:
44
44
  segments:
45
45
  - 0
46
46
  version: "0"
47
- name: rspec
47
+ type: :development
48
48
  version_requirements: *id002
49
49
  - !ruby/object:Gem::Dependency
50
+ name: webmock
50
51
  prerelease: false
51
- type: :development
52
52
  requirement: &id003 !ruby/object:Gem::Requirement
53
53
  none: false
54
54
  requirements:
@@ -58,11 +58,11 @@ dependencies:
58
58
  segments:
59
59
  - 0
60
60
  version: "0"
61
- name: webmock
61
+ type: :development
62
62
  version_requirements: *id003
63
63
  - !ruby/object:Gem::Dependency
64
+ name: httparty
64
65
  prerelease: false
65
- type: :development
66
66
  requirement: &id004 !ruby/object:Gem::Requirement
67
67
  none: false
68
68
  requirements:
@@ -72,11 +72,11 @@ dependencies:
72
72
  segments:
73
73
  - 0
74
74
  version: "0"
75
- name: httparty
75
+ type: :development
76
76
  version_requirements: *id004
77
77
  - !ruby/object:Gem::Dependency
78
+ name: json
78
79
  prerelease: false
79
- type: :development
80
80
  requirement: &id005 !ruby/object:Gem::Requirement
81
81
  none: false
82
82
  requirements:
@@ -86,11 +86,11 @@ dependencies:
86
86
  segments:
87
87
  - 0
88
88
  version: "0"
89
- name: json
89
+ type: :development
90
90
  version_requirements: *id005
91
91
  - !ruby/object:Gem::Dependency
92
+ name: hashie
92
93
  prerelease: false
93
- type: :development
94
94
  requirement: &id006 !ruby/object:Gem::Requirement
95
95
  none: false
96
96
  requirements:
@@ -100,11 +100,11 @@ dependencies:
100
100
  segments:
101
101
  - 0
102
102
  version: "0"
103
- name: hashie
103
+ type: :development
104
104
  version_requirements: *id006
105
105
  - !ruby/object:Gem::Dependency
106
+ name: ruby-debug
106
107
  prerelease: false
107
- type: :development
108
108
  requirement: &id007 !ruby/object:Gem::Requirement
109
109
  none: false
110
110
  requirements:
@@ -114,11 +114,11 @@ dependencies:
114
114
  segments:
115
115
  - 0
116
116
  version: "0"
117
- name: ruby-debug
117
+ type: :development
118
118
  version_requirements: *id007
119
119
  - !ruby/object:Gem::Dependency
120
+ name: httparty
120
121
  prerelease: false
121
- type: :runtime
122
122
  requirement: &id008 !ruby/object:Gem::Requirement
123
123
  none: false
124
124
  requirements:
@@ -128,11 +128,11 @@ dependencies:
128
128
  segments:
129
129
  - 0
130
130
  version: "0"
131
- name: httparty
131
+ type: :runtime
132
132
  version_requirements: *id008
133
133
  - !ruby/object:Gem::Dependency
134
+ name: json
134
135
  prerelease: false
135
- type: :runtime
136
136
  requirement: &id009 !ruby/object:Gem::Requirement
137
137
  none: false
138
138
  requirements:
@@ -142,11 +142,11 @@ dependencies:
142
142
  segments:
143
143
  - 0
144
144
  version: "0"
145
- name: json
145
+ type: :runtime
146
146
  version_requirements: *id009
147
147
  - !ruby/object:Gem::Dependency
148
+ name: hashie
148
149
  prerelease: false
149
- type: :runtime
150
150
  requirement: &id010 !ruby/object:Gem::Requirement
151
151
  none: false
152
152
  requirements:
@@ -156,7 +156,7 @@ dependencies:
156
156
  segments:
157
157
  - 0
158
158
  version: "0"
159
- name: hashie
159
+ type: :runtime
160
160
  version_requirements: *id010
161
161
  description: The 'awesm' gem is an interface for awe.sm (http://totally.awe.sm), a social link analytics tracking service.
162
162
  email:
@@ -177,9 +177,11 @@ files:
177
177
  - Rakefile
178
178
  - awesm.gemspec
179
179
  - lib/awesm.rb
180
+ - lib/awesm/conversion.rb
180
181
  - lib/awesm/project.rb
181
182
  - lib/awesm/url.rb
182
183
  - lib/awesm/version.rb
184
+ - spec/awesm/conversion_spec.rb
183
185
  - spec/awesm/project_spec.rb
184
186
  - spec/awesm/url_spec.rb
185
187
  - spec/awesm_spec.rb
@@ -213,11 +215,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
213
215
  requirements: []
214
216
 
215
217
  rubyforge_project: awesm
216
- rubygems_version: 1.8.10
218
+ rubygems_version: 1.8.12
217
219
  signing_key:
218
220
  specification_version: 3
219
221
  summary: Totally awe.sm!
220
222
  test_files:
223
+ - spec/awesm/conversion_spec.rb
221
224
  - spec/awesm/project_spec.rb
222
225
  - spec/awesm/url_spec.rb
223
226
  - spec/awesm_spec.rb