awesm 0.0.1 → 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.
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