awesm 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile.lock CHANGED
@@ -1,7 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- awesm (0.0.1)
4
+ awesm (0.1.0)
5
+ hashie
5
6
  httparty
6
7
  json
7
8
 
@@ -9,15 +10,20 @@ GEM
9
10
  remote: http://rubygems.org/
10
11
  specs:
11
12
  addressable (2.2.6)
13
+ columnize (0.3.4)
12
14
  crack (0.3.1)
13
15
  diff-lcs (1.1.3)
16
+ hashie (0.2.2)
14
17
  httparty (0.8.1)
15
18
  multi_json
16
19
  multi_xml
17
20
  json (1.6.1)
21
+ linecache (0.46)
22
+ rbx-require-relative (> 0.0.4)
18
23
  multi_json (1.0.3)
19
24
  multi_xml (0.4.1)
20
25
  rake (0.9.2.2)
26
+ rbx-require-relative (0.0.5)
21
27
  rspec (2.7.0)
22
28
  rspec-core (~> 2.7.0)
23
29
  rspec-expectations (~> 2.7.0)
@@ -26,6 +32,11 @@ GEM
26
32
  rspec-expectations (2.7.0)
27
33
  diff-lcs (~> 1.1.2)
28
34
  rspec-mocks (2.7.0)
35
+ ruby-debug (0.10.4)
36
+ columnize (>= 0.1)
37
+ ruby-debug-base (~> 0.10.4.0)
38
+ ruby-debug-base (0.10.4)
39
+ linecache (>= 0.3)
29
40
  webmock (1.7.7)
30
41
  addressable (> 2.2.5, ~> 2.2)
31
42
  crack (>= 0.1.7)
@@ -35,8 +46,10 @@ PLATFORMS
35
46
 
36
47
  DEPENDENCIES
37
48
  awesm!
49
+ hashie
38
50
  httparty
39
51
  json
40
52
  rake
41
53
  rspec
54
+ ruby-debug
42
55
  webmock
data/README.md ADDED
@@ -0,0 +1,30 @@
1
+ = Awesm =
2
+
3
+ The *awesm* gem is an easy way to access the awe.sm API (http://totally.awe.sm).
4
+
5
+ We're actively developing this (and it's not yet production ready) but please
6
+ feel free to send us a pull request from a topic branch with specs and an
7
+ explanation :)
8
+
9
+ == Usage ==
10
+
11
+ ```ruby
12
+ Awesm.subscription_key = 'sub-xxxxxx'
13
+ project = Awesm::Project.create(:name => 'Totally Awe.sm!')
14
+ project.api_key # => '1234567890abcdefghijklmnopqrstuvwxyz'
15
+ ```
16
+
17
+ == Contributing ==
18
+
19
+ * fork
20
+ * clone
21
+ * bundle install
22
+ * bundle exec rspec spec
23
+ * commit code with passing specs
24
+ * push to a topic branch
25
+ * send us a pull request :)
26
+
27
+ == Manitainers ==
28
+
29
+ * *Sathya Sekaran*
30
+ * *Michael Durnhofer*
data/awesm.gemspec CHANGED
@@ -23,7 +23,10 @@ Gem::Specification.new do |s|
23
23
  s.add_development_dependency "webmock"
24
24
  s.add_development_dependency "httparty"
25
25
  s.add_development_dependency "json"
26
+ s.add_development_dependency "hashie"
27
+ s.add_development_dependency "ruby-debug"
26
28
 
27
29
  s.add_runtime_dependency "httparty"
28
30
  s.add_runtime_dependency "json"
31
+ s.add_runtime_dependency "hashie"
29
32
  end
data/lib/awesm.rb CHANGED
@@ -2,16 +2,24 @@ require 'awesm/version'
2
2
 
3
3
  require 'httparty'
4
4
  require 'json'
5
+ require 'hashie'
5
6
 
6
7
  module Awesm
7
- class Project
8
+ def self.subscription_key=(key)
9
+ @@subscription_key = key
10
+ end
11
+
12
+ def self.subscription_key
13
+ @@subscription_key
14
+ end
15
+
16
+ class Project < Hashie::Mash
8
17
  include HTTParty
9
- base_uri "http://api.awe.sm/projects"
18
+ base_uri 'http://api.awe.sm/projects'
10
19
 
11
- def initialize(attributes)
12
- self.class.post("/new", :query => { :subscription_key => attributes[:subscription_key], :json => { :name => attributes[:name] }.to_json })
20
+ def self.create(attributes)
21
+ response = post('/new', :query => { :subscription_key => Awesm.subscription_key, :json => attributes.to_json })
22
+ new(response['response']['project'])
13
23
  end
14
24
  end
15
25
  end
16
-
17
-
data/lib/awesm/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Awesm
2
- VERSION = "0.0.1"
2
+ VERSION = "0.1.0"
3
3
  end
data/spec/awesm_spec.rb CHANGED
@@ -1,20 +1,67 @@
1
1
  require 'spec_helper'
2
2
 
3
+ describe Awesm do
4
+ describe '.subscription_key=' do
5
+ it 'sets the subscription key' do
6
+ Awesm.subscription_key = '1234567890abcdef1234567890abcdef'
7
+ Awesm.subscription_key.should == '1234567890abcdef1234567890abcdef'
8
+ end
9
+ end
10
+
11
+ after(:each) { Awesm.subscription_key = nil }
12
+ end
13
+
3
14
  describe Awesm::Project do
4
- context '.new' do
15
+ let(:json_response) do
16
+ {
17
+ "request" => {
18
+ "json" => "{\"name\" =>\"Totally Awesome Project\"}",
19
+ "method" => "new",
20
+ "object" => "project",
21
+ "subscription_key" => "sub-xxxxxx"
22
+ },
23
+ "response" => {
24
+ "project" => {
25
+ "admins" => [],
26
+ "api_key" => "6xxxxxxxxx58xx0xxx74xx3x76xx83x6x34xx48x7xxxx55x167037818d65x66x",
27
+ "created_at" => "2011-10-25 00:43:49",
28
+ "default_domain" => "awe.sm",
29
+ "domains" => [],
30
+ "name" => "myNewProject",
31
+ "sharers" => [],
32
+ "updated_at" => "2011-10-25 00:43:49",
33
+ "viewers" => []
34
+ }
35
+ }
36
+ }.to_json
37
+ end
5
38
 
6
- before do
7
- stub_request(:post, "http://api.awe.sm/projects/new?json=%7B%22name%22:%22Totally%20Awesome%20Project%22%7D&subscription_key=sub-xxxxxx").
8
- to_return(:status => 200, :body => "", :headers => {})
9
- end
39
+ before do
40
+ Awesm.subscription_key = 'sub-xxxxxx'
41
+ stub_request(:post, "http://api.awe.sm/projects/new?json=%7B%22name%22:%22Totally%20Awesome%20Project%22%7D&subscription_key=sub-xxxxxx").
42
+ to_return(:status => 200, :body => json_response, :headers => { 'Content-Type' => 'application/json;charset=utf-8' })
43
+ end
44
+ after { Awesm.subscription_key = nil }
10
45
 
11
- it 'creates a project' do
12
- Awesm::Project.new(:subscription_key => "sub-xxxxxx", :name => "Totally Awesome Project").should be_an_instance_of(Awesm::Project)
46
+ context '.create' do
47
+ it 'returns an Awesm::Project' do
48
+ project = Awesm::Project.create(:name => "Totally Awesome Project")
49
+ project.should be_an_instance_of(Awesm::Project)
13
50
  end
14
51
 
15
52
  it 'posts to the awe.sm project creation api properly' do
16
- Awesm::Project.new({ :subscription_key => "sub-xxxxxx", :name => "Totally Awesome Project" })
17
- a_request(:post, "http://api.awe.sm/projects/new").with(:query => {:subscription_key => "sub-xxxxxx", :json => { "name" => "Totally Awesome Project" }.to_json }).should have_been_made.once
53
+ Awesm::Project.create({ :name => "Totally Awesome Project" })
54
+
55
+ a_request(:post, "http://api.awe.sm/projects/new").
56
+ with(:query => {:subscription_key => "sub-xxxxxx", :json => { "name" => "Totally Awesome Project" }.to_json }).
57
+ should have_been_made.once
58
+ end
59
+ end
60
+
61
+ describe '#api_key' do
62
+ it 'returns the awe.sm api_key' do
63
+ project = Awesm::Project.create({ :name => "Totally Awesome Project" })
64
+ project.api_key.should == '6xxxxxxxxx58xx0xxx74xx3x76xx83x6x34xx48x7xxxx55x167037818d65x66x'
18
65
  end
19
66
  end
20
67
  end
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'rubygems'
2
2
  Bundler.setup
3
3
 
4
+ require 'ruby-debug'
4
5
  require 'webmock/rspec'
5
6
 
6
7
  require 'awesm'
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: 29
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 0
9
8
  - 1
10
- version: 0.0.1
9
+ - 0
10
+ version: 0.1.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Sathya Sekaran
@@ -90,7 +90,7 @@ dependencies:
90
90
  version_requirements: *id005
91
91
  - !ruby/object:Gem::Dependency
92
92
  prerelease: false
93
- type: :runtime
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: httparty
103
+ name: hashie
104
104
  version_requirements: *id006
105
105
  - !ruby/object:Gem::Dependency
106
106
  prerelease: false
107
- type: :runtime
107
+ type: :development
108
108
  requirement: &id007 !ruby/object:Gem::Requirement
109
109
  none: false
110
110
  requirements:
@@ -114,8 +114,50 @@ dependencies:
114
114
  segments:
115
115
  - 0
116
116
  version: "0"
117
- name: json
117
+ name: ruby-debug
118
118
  version_requirements: *id007
119
+ - !ruby/object:Gem::Dependency
120
+ prerelease: false
121
+ type: :runtime
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
+ name: httparty
132
+ version_requirements: *id008
133
+ - !ruby/object:Gem::Dependency
134
+ prerelease: false
135
+ type: :runtime
136
+ requirement: &id009 !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ hash: 3
142
+ segments:
143
+ - 0
144
+ version: "0"
145
+ name: json
146
+ version_requirements: *id009
147
+ - !ruby/object:Gem::Dependency
148
+ prerelease: false
149
+ type: :runtime
150
+ requirement: &id010 !ruby/object:Gem::Requirement
151
+ none: false
152
+ requirements:
153
+ - - ">="
154
+ - !ruby/object:Gem::Version
155
+ hash: 3
156
+ segments:
157
+ - 0
158
+ version: "0"
159
+ name: hashie
160
+ version_requirements: *id010
119
161
  description: The 'awesm' gem is an interface for awe.sm (http://totally.awe.sm), a social link analytics tracking service.
120
162
  email:
121
163
  - sfsekaran@gmail.com
@@ -127,10 +169,11 @@ extensions: []
127
169
  extra_rdoc_files: []
128
170
 
129
171
  files:
172
+ - .gitignore
130
173
  - .rspec
131
174
  - Gemfile
132
175
  - Gemfile.lock
133
- - README
176
+ - README.md
134
177
  - Rakefile
135
178
  - awesm.gemspec
136
179
  - lib/awesm.rb
data/README DELETED
File without changes