twelve 0.1.0

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.
Files changed (39) hide show
  1. data/.gitignore +5 -0
  2. data/Gemfile +2 -0
  3. data/LICENSE +21 -0
  4. data/README.md +220 -0
  5. data/Rakefile +8 -0
  6. data/lib/twelve.rb +32 -0
  7. data/lib/twelve/api/clients.rb +55 -0
  8. data/lib/twelve/api/gauges.rb +67 -0
  9. data/lib/twelve/api/gauges/content.rb +36 -0
  10. data/lib/twelve/api/gauges/engines.rb +32 -0
  11. data/lib/twelve/api/gauges/locations.rb +32 -0
  12. data/lib/twelve/api/gauges/referrers.rb +36 -0
  13. data/lib/twelve/api/gauges/resolutions.rb +32 -0
  14. data/lib/twelve/api/gauges/shares.rb +45 -0
  15. data/lib/twelve/api/gauges/technology.rb +32 -0
  16. data/lib/twelve/api/gauges/terms.rb +36 -0
  17. data/lib/twelve/api/gauges/traffic.rb +32 -0
  18. data/lib/twelve/api/me.rb +28 -0
  19. data/lib/twelve/connection.rb +26 -0
  20. data/lib/twelve/resource_proxy.rb +46 -0
  21. data/lib/twelve/version.rb +4 -0
  22. data/spec/spec_helper.rb +17 -0
  23. data/spec/twelve/api/clients_spec.rb +43 -0
  24. data/spec/twelve/api/gauges/content_spec.rb +54 -0
  25. data/spec/twelve/api/gauges/engines_spec.rb +32 -0
  26. data/spec/twelve/api/gauges/locations_spec.rb +32 -0
  27. data/spec/twelve/api/gauges/referrers_spec.rb +54 -0
  28. data/spec/twelve/api/gauges/resolutions_spec.rb +36 -0
  29. data/spec/twelve/api/gauges/shares_spec.rb +74 -0
  30. data/spec/twelve/api/gauges/technology_spec.rb +36 -0
  31. data/spec/twelve/api/gauges/terms_spec.rb +52 -0
  32. data/spec/twelve/api/gauges/traffic_spec.rb +34 -0
  33. data/spec/twelve/api/gauges_spec.rb +119 -0
  34. data/spec/twelve/api/me_spec.rb +34 -0
  35. data/spec/twelve/connection_spec.rb +11 -0
  36. data/spec/twelve/resource_proxy_spec.rb +34 -0
  37. data/spec/twelve_spec.rb +16 -0
  38. data/twelve.gemspec +29 -0
  39. metadata +230 -0
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+
3
+ describe Twelve::API::Me do
4
+ subject { Twelve.new(ACCESS_TOKEN) }
5
+
6
+ def should_be_me(me)
7
+ me['urls']['self'].should == 'https://secure.gaug.es/me'
8
+ me['urls']['gauges'].should == 'https://secure.gaug.es/gauges'
9
+ me['urls']['clients'].should == 'https://secure.gaug.es/clients'
10
+ me['id'].size.should == 24
11
+ me['email'].should_not be_nil
12
+ end
13
+
14
+ describe "#me" do
15
+ context "without an arguement" do
16
+ it "returns my information" do
17
+ VCR.use_cassette('me') do
18
+ me = subject.me
19
+ should_be_me(me)
20
+ end
21
+ end
22
+ end
23
+
24
+ context "with a hash" do
25
+ it "updates my information" do
26
+ VCR.use_cassette('me_with_hash') do
27
+ me = subject.me(:first_name => 'Jon')
28
+ should_be_me(me)
29
+ me['first_name'].should == "Jon"
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Twelve::Connection do
4
+ subject { Twelve::Connection.new(ACCESS_TOKEN) }
5
+
6
+ describe "#initialize" do
7
+ it "should set an instance variable for access token" do
8
+ subject.access_token.should == ACCESS_TOKEN
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+
3
+ class FakeResponse
4
+ def body
5
+ "Bar!"
6
+ end
7
+ end
8
+
9
+ describe Twelve::ResourceProxy do
10
+ before(:each) do
11
+ @connection = mock('connection')
12
+ @connection.stub!(:get).and_return(FakeResponse.new)
13
+ end
14
+
15
+ subject do
16
+ Twelve::ResourceProxy.new(@connection, '/foo')
17
+ end
18
+
19
+ describe "#initialize" do
20
+ it "should set connection" do
21
+ subject.instance_variable_get(:@connection).should == @connection
22
+ end
23
+
24
+ it "should set path_prefix" do
25
+ subject.instance_variable_get(:@path_prefix).should == "/foo"
26
+ end
27
+ end
28
+
29
+ describe "#method_missing" do
30
+ it "should pass message and args to target" do
31
+ lambda { subject.upcase }.should raise_error("Implement in Proxy class for resource")
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,16 @@
1
+ # encoding: UTF-8
2
+ require 'spec_helper'
3
+
4
+ describe Twelve do
5
+ it "should have a VERSION constant" do
6
+ Twelve.const_defined?('VERSION').should be_true
7
+ end
8
+
9
+ describe "#initialize" do
10
+ it "should set up a connection" do
11
+ api = Twelve.new(ACCESS_TOKEN)
12
+ api.connection.should be_instance_of(Twelve::Connection)
13
+ api.connection.access_token.should == ACCESS_TOKEN
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,29 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "twelve/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "twelve"
7
+ s.version = Twelve::VERSION
8
+ s.authors = ["Jonathan Hoyt"]
9
+ s.email = ["jonmagic@gmail.com"]
10
+ s.homepage = "http://github.com/jonmagic/twelve"
11
+ s.summary = %q{Access Gauges in ruby.}
12
+ s.description = %q{A complete, simple, and intuitive ruby API for all things Gauges.}
13
+
14
+ s.rubyforge_project = "twelve"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+ s.add_runtime_dependency 'faraday'
22
+ s.add_runtime_dependency 'faraday_middleware'
23
+ s.add_runtime_dependency 'multi_json'
24
+ s.add_runtime_dependency 'yajl-ruby'
25
+ s.add_development_dependency 'rake'
26
+ s.add_development_dependency 'rspec', '~>2.0'
27
+ s.add_development_dependency 'webmock'
28
+ s.add_development_dependency 'vcr'
29
+ end
metadata ADDED
@@ -0,0 +1,230 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: twelve
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ version: 0.1.0
11
+ platform: ruby
12
+ authors:
13
+ - Jonathan Hoyt
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-12-09 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: faraday
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ hash: 3
29
+ segments:
30
+ - 0
31
+ version: "0"
32
+ type: :runtime
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ name: faraday_middleware
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ hash: 3
43
+ segments:
44
+ - 0
45
+ version: "0"
46
+ type: :runtime
47
+ version_requirements: *id002
48
+ - !ruby/object:Gem::Dependency
49
+ name: multi_json
50
+ prerelease: false
51
+ requirement: &id003 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ hash: 3
57
+ segments:
58
+ - 0
59
+ version: "0"
60
+ type: :runtime
61
+ version_requirements: *id003
62
+ - !ruby/object:Gem::Dependency
63
+ name: yajl-ruby
64
+ prerelease: false
65
+ requirement: &id004 !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ hash: 3
71
+ segments:
72
+ - 0
73
+ version: "0"
74
+ type: :runtime
75
+ version_requirements: *id004
76
+ - !ruby/object:Gem::Dependency
77
+ name: rake
78
+ prerelease: false
79
+ requirement: &id005 !ruby/object:Gem::Requirement
80
+ none: false
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ hash: 3
85
+ segments:
86
+ - 0
87
+ version: "0"
88
+ type: :development
89
+ version_requirements: *id005
90
+ - !ruby/object:Gem::Dependency
91
+ name: rspec
92
+ prerelease: false
93
+ requirement: &id006 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ~>
97
+ - !ruby/object:Gem::Version
98
+ hash: 3
99
+ segments:
100
+ - 2
101
+ - 0
102
+ version: "2.0"
103
+ type: :development
104
+ version_requirements: *id006
105
+ - !ruby/object:Gem::Dependency
106
+ name: webmock
107
+ prerelease: false
108
+ requirement: &id007 !ruby/object:Gem::Requirement
109
+ none: false
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ hash: 3
114
+ segments:
115
+ - 0
116
+ version: "0"
117
+ type: :development
118
+ version_requirements: *id007
119
+ - !ruby/object:Gem::Dependency
120
+ name: vcr
121
+ prerelease: false
122
+ requirement: &id008 !ruby/object:Gem::Requirement
123
+ none: false
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ hash: 3
128
+ segments:
129
+ - 0
130
+ version: "0"
131
+ type: :development
132
+ version_requirements: *id008
133
+ description: A complete, simple, and intuitive ruby API for all things Gauges.
134
+ email:
135
+ - jonmagic@gmail.com
136
+ executables: []
137
+
138
+ extensions: []
139
+
140
+ extra_rdoc_files: []
141
+
142
+ files:
143
+ - .gitignore
144
+ - Gemfile
145
+ - LICENSE
146
+ - README.md
147
+ - Rakefile
148
+ - lib/twelve.rb
149
+ - lib/twelve/api/clients.rb
150
+ - lib/twelve/api/gauges.rb
151
+ - lib/twelve/api/gauges/content.rb
152
+ - lib/twelve/api/gauges/engines.rb
153
+ - lib/twelve/api/gauges/locations.rb
154
+ - lib/twelve/api/gauges/referrers.rb
155
+ - lib/twelve/api/gauges/resolutions.rb
156
+ - lib/twelve/api/gauges/shares.rb
157
+ - lib/twelve/api/gauges/technology.rb
158
+ - lib/twelve/api/gauges/terms.rb
159
+ - lib/twelve/api/gauges/traffic.rb
160
+ - lib/twelve/api/me.rb
161
+ - lib/twelve/connection.rb
162
+ - lib/twelve/resource_proxy.rb
163
+ - lib/twelve/version.rb
164
+ - spec/spec_helper.rb
165
+ - spec/twelve/api/clients_spec.rb
166
+ - spec/twelve/api/gauges/content_spec.rb
167
+ - spec/twelve/api/gauges/engines_spec.rb
168
+ - spec/twelve/api/gauges/locations_spec.rb
169
+ - spec/twelve/api/gauges/referrers_spec.rb
170
+ - spec/twelve/api/gauges/resolutions_spec.rb
171
+ - spec/twelve/api/gauges/shares_spec.rb
172
+ - spec/twelve/api/gauges/technology_spec.rb
173
+ - spec/twelve/api/gauges/terms_spec.rb
174
+ - spec/twelve/api/gauges/traffic_spec.rb
175
+ - spec/twelve/api/gauges_spec.rb
176
+ - spec/twelve/api/me_spec.rb
177
+ - spec/twelve/connection_spec.rb
178
+ - spec/twelve/resource_proxy_spec.rb
179
+ - spec/twelve_spec.rb
180
+ - twelve.gemspec
181
+ homepage: http://github.com/jonmagic/twelve
182
+ licenses: []
183
+
184
+ post_install_message:
185
+ rdoc_options: []
186
+
187
+ require_paths:
188
+ - lib
189
+ required_ruby_version: !ruby/object:Gem::Requirement
190
+ none: false
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ hash: 3
195
+ segments:
196
+ - 0
197
+ version: "0"
198
+ required_rubygems_version: !ruby/object:Gem::Requirement
199
+ none: false
200
+ requirements:
201
+ - - ">="
202
+ - !ruby/object:Gem::Version
203
+ hash: 3
204
+ segments:
205
+ - 0
206
+ version: "0"
207
+ requirements: []
208
+
209
+ rubyforge_project: twelve
210
+ rubygems_version: 1.8.6
211
+ signing_key:
212
+ specification_version: 3
213
+ summary: Access Gauges in ruby.
214
+ test_files:
215
+ - spec/spec_helper.rb
216
+ - spec/twelve/api/clients_spec.rb
217
+ - spec/twelve/api/gauges/content_spec.rb
218
+ - spec/twelve/api/gauges/engines_spec.rb
219
+ - spec/twelve/api/gauges/locations_spec.rb
220
+ - spec/twelve/api/gauges/referrers_spec.rb
221
+ - spec/twelve/api/gauges/resolutions_spec.rb
222
+ - spec/twelve/api/gauges/shares_spec.rb
223
+ - spec/twelve/api/gauges/technology_spec.rb
224
+ - spec/twelve/api/gauges/terms_spec.rb
225
+ - spec/twelve/api/gauges/traffic_spec.rb
226
+ - spec/twelve/api/gauges_spec.rb
227
+ - spec/twelve/api/me_spec.rb
228
+ - spec/twelve/connection_spec.rb
229
+ - spec/twelve/resource_proxy_spec.rb
230
+ - spec/twelve_spec.rb