awesm 0.1.4 → 0.1.5

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