sinatra-geoloqi 0.9.1

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/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ source :rubygems
2
+
3
+ gemspec
4
+
5
+ platform :jruby do
6
+ gem 'jruby-openssl'
7
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,90 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ sinatra-geoloqi (0.9.0)
5
+ geoloqi (>= 0.9.33)
6
+ sinatra (>= 1.0)
7
+
8
+ GEM
9
+ remote: http://rubygems.org/
10
+ specs:
11
+ ParseTree (3.0.8)
12
+ RubyInline (>= 3.7.0)
13
+ sexp_processor (>= 3.0.0)
14
+ RubyInline (3.11.0)
15
+ ZenTest (~> 4.3)
16
+ ZenTest (4.6.2)
17
+ addressable (2.2.6)
18
+ bouncy-castle-java (1.5.0146.1)
19
+ crack (0.3.1)
20
+ diff-lcs (1.1.3)
21
+ faraday (0.7.5)
22
+ addressable (~> 2.2.6)
23
+ multipart-post (~> 1.1.3)
24
+ rack (>= 1.1.0, < 2)
25
+ file-tail (1.0.7)
26
+ tins (~> 0.3)
27
+ geoloqi (0.9.33)
28
+ faraday (>= 0.6.1)
29
+ json
30
+ jruby-openssl (0.7.4)
31
+ bouncy-castle-java
32
+ json (1.6.1)
33
+ json (1.6.1-java)
34
+ minitest (2.8.1)
35
+ multipart-post (1.1.3)
36
+ predicated (0.2.6)
37
+ rack (1.3.5)
38
+ rack-protection (1.1.4)
39
+ rack
40
+ rack-test (0.5.7)
41
+ rack (>= 1.0)
42
+ rake (0.9.2.2)
43
+ ruby2ruby (1.3.1)
44
+ ruby_parser (~> 2.0)
45
+ sexp_processor (~> 3.0)
46
+ ruby_parser (2.0.6)
47
+ sexp_processor (~> 3.0)
48
+ sexp_processor (3.0.8)
49
+ sinatra (1.3.1)
50
+ rack (~> 1.3, >= 1.3.4)
51
+ rack-protection (~> 1.1, >= 1.1.2)
52
+ tilt (~> 1.3, >= 1.3.3)
53
+ sourcify (0.5.0)
54
+ file-tail (>= 1.0.5)
55
+ ruby2ruby (>= 1.2.5)
56
+ ruby_parser (>= 2.0.5)
57
+ sexp_processor (>= 3.0.5)
58
+ tilt (1.3.3)
59
+ tins (0.3.2)
60
+ webmock (1.7.7)
61
+ addressable (~> 2.2, > 2.2.5)
62
+ crack (>= 0.1.7)
63
+ wrong (0.5.0)
64
+ ParseTree (~> 3.0)
65
+ diff-lcs (~> 1.1.2)
66
+ file-tail (~> 1.0)
67
+ predicated (>= 0.2.2)
68
+ ruby2ruby (~> 1.2)
69
+ ruby_parser (~> 2.0.4)
70
+ sexp_processor (~> 3.0)
71
+ sourcify (>= 0.3.0)
72
+ wrong (0.5.0-java)
73
+ diff-lcs (~> 1.1.2)
74
+ predicated (>= 0.2.2)
75
+ ruby2ruby (~> 1.2)
76
+ ruby_parser (~> 2.0.4)
77
+ sexp_processor (~> 3.0)
78
+
79
+ PLATFORMS
80
+ java
81
+ ruby
82
+
83
+ DEPENDENCIES
84
+ jruby-openssl
85
+ minitest
86
+ rack-test (= 0.5.7)
87
+ rake
88
+ sinatra-geoloqi!
89
+ webmock (= 1.7.7)
90
+ wrong (= 0.5.0)
data/README.markdown ADDED
@@ -0,0 +1,43 @@
1
+ Geoloqi plugin for Sinatra [![](https://secure.travis-ci.org/geoloqi/sinatra-geoloqi.png)](http://travis-ci.org/geoloqi/sinatra-geoloqi)
2
+ ===
3
+ Easy drop-in [Sinatra](http://sinatrarb.com) plugin for Geoloqi. All you need to do is require it, configure the settings and you're ready to go with Geoloqi application development!
4
+
5
+ Installation
6
+ ---
7
+
8
+ gem install sinatra-geoloqi
9
+
10
+ Usage
11
+ ---
12
+ First, go to the [Geoloqi Developers Site](https://developers.geoloqi.com) and create an application on the "Your Apps" page.
13
+
14
+ Then, you can use it like this. This is the standard way with classic mode:
15
+
16
+ require 'sinatra'
17
+ require 'sinatra/geoloqi'
18
+
19
+ set :geoloqi_client_id, 'YOUR_APP_ID_GOES_HERE'
20
+ set :geoloqi_client_secret, 'YOUR_APP_SECRET_GOES_HERE'
21
+ set :geoloqi_redirect_uri, 'http://127.0.0.1:4567'
22
+ set :session_secret, 'ENTER_RANDOM_TEXT_HERE'
23
+
24
+ before do
25
+ require_geoloqi_login
26
+ end
27
+
28
+ get '/?' do
29
+ username = geoloqi.get('account/username')['username']
30
+ "You have successfully logged in as #{username}!"
31
+ end
32
+
33
+ For "classy mode", don't forget to register the plugin explicitly:
34
+
35
+ register Sinatra::Geoloqi
36
+
37
+ Found a bug?
38
+ ---
39
+ Let us know! Send a pull request or a patch. Questions? Ask! We're here to help. File issues, we'll respond to them!
40
+
41
+ Authors
42
+ ---
43
+ * [Kyle Drake](https://github.com/kyledrake)
data/Rakefile ADDED
@@ -0,0 +1,13 @@
1
+ require 'bundler'
2
+ require 'rake/testtask'
3
+
4
+ Bundler::GemHelper.install_tasks
5
+
6
+ Rake::TestTask.new do |t|
7
+ t.libs = ['lib','test']
8
+ t.test_files = Dir.glob("spec/**/*_spec.rb").sort
9
+ t.verbose = true
10
+ end
11
+
12
+ task :default => [:test]
13
+ task :spec => [:test]
@@ -0,0 +1,29 @@
1
+ require 'sinatra/base'
2
+ require 'geoloqi'
3
+
4
+ module Sinatra
5
+ module Geoloqi
6
+ def self.registered(app)
7
+ app.enable :sessions unless app.test?
8
+
9
+ app.after do
10
+ session[:_geoloqi_auth] = @_geoloqi.auth unless session[:_geoloqi_auth].nil? && @_geoloqi.nil?
11
+ end
12
+
13
+ app.helpers do
14
+ def geoloqi
15
+ @_geoloqi ||= ::Geoloqi::Session.new :auth => session[:_geoloqi_auth],
16
+ :config => {:client_id => settings.geoloqi_client_id,
17
+ :client_secret => settings.geoloqi_client_secret}
18
+ end
19
+
20
+ def require_geoloqi_login
21
+ geoloqi.get_auth(params[:code], settings.geoloqi_redirect_uri) if params[:code] && !geoloqi.access_token?
22
+ redirect geoloqi.authorize_url(settings.geoloqi_redirect_uri) unless geoloqi.access_token?
23
+ end
24
+ end
25
+ end
26
+ end
27
+
28
+ register Geoloqi
29
+ end
@@ -0,0 +1,86 @@
1
+ ENV['RACK_ENV'] = 'test'
2
+ require File.join(File.join(File.expand_path(File.dirname(__FILE__))), '..', 'lib', 'sinatra', 'geoloqi')
3
+ require 'rack/test'
4
+ require 'minitest/autorun'
5
+ require 'wrong/adapters/minitest'
6
+ require 'webmock'
7
+ Wrong.config.alias_assert :expect_that
8
+
9
+ include WebMock::API
10
+
11
+ def auth
12
+ {'display_name' => 'Captain Ron',
13
+ 'username' => 'isthegreatestmoviever',
14
+ 'user_id' => '31337',
15
+ 'is_anonymous' => 0,
16
+ 'access_token' => 'access_token1234',
17
+ 'scope' => nil,
18
+ 'expires_in' => 3600,
19
+ 'refresh_token' => 'refresh_token1234'}
20
+ end
21
+
22
+ def app
23
+ @app ||= Sinatra.new do
24
+ set :geoloqi_client_id, 'ABCD'
25
+ set :geoloqi_client_secret, 'EFGH'
26
+ set :geoloqi_redirect_uri, 'http://example.org/test'
27
+
28
+ register Sinatra::Geoloqi
29
+
30
+ get '/' do
31
+ geoloqi.class.to_s
32
+ end
33
+
34
+ get '/redirect' do
35
+ require_geoloqi_login
36
+ end
37
+
38
+ get '/test' do
39
+ require_geoloqi_login
40
+ geoloqi.access_token
41
+ end
42
+
43
+ get '/calltest' do
44
+ require_geoloqi_login
45
+ geoloqi.get('account/profile')['result']
46
+ end
47
+ end
48
+ end
49
+
50
+ describe 'A mock app' do
51
+ include Rack::Test::Methods
52
+
53
+ it 'returns geoloqi object' do
54
+ get '/'
55
+ expect_that { last_response.ok? }
56
+ expect_that { last_response.body == 'Geoloqi::Session' }
57
+ end
58
+
59
+ it 'returns a geoloqi object on request' do
60
+ get '/redirect'
61
+ expect_that { last_response.redirect? }
62
+ expect_that { last_response.headers['Location'] == 'https://geoloqi.com/oauth/authorize?response_type=code&client_id=ABCD&redirect_uri=http%3A%2F%2Fexample.org%2Ftest' }
63
+ end
64
+
65
+ it 'processes the geoloqi return' do
66
+ stub_request(:post, "https://api.geoloqi.com/1/oauth/token").
67
+ with(:body => "{\"client_id\":\"ABCD\",\"client_secret\":\"EFGH\",\"grant_type\":\"authorization_code\",\"code\":\"code1234\",\"redirect_uri\":\"http://example.org/test\"}").
68
+ to_return(:status => 200,
69
+ :body => auth.to_json)
70
+
71
+ get '/test?state=&code=code1234'
72
+ expect_that { last_response.ok? }
73
+ expect_that { last_response.body == 'access_token1234' }
74
+ end
75
+
76
+ it 'calls successfully' do
77
+ stub_request(:get, "https://api.geoloqi.com/1/account/profile").
78
+ with(:headers => {'Authorization' => 'OAuth access_token1234'}).
79
+ to_return(:status => 200, :body => {'result' => 'ok'}.to_json, :headers => {})
80
+
81
+ get '/calltest', {}, 'rack.session' => {:'_geoloqi_auth' => auth}
82
+
83
+ expect_that { last_response.status == 200 }
84
+ expect_that { last_response.body == 'ok' }
85
+ end
86
+ end
metadata ADDED
@@ -0,0 +1,136 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sinatra-geoloqi
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.9.1
6
+ platform: ruby
7
+ authors:
8
+ - Kyle Drake
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-11-19 00:00:00 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: sinatra
17
+ prerelease: false
18
+ requirement: &id001 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "1.0"
24
+ type: :runtime
25
+ version_requirements: *id001
26
+ - !ruby/object:Gem::Dependency
27
+ name: geoloqi
28
+ prerelease: false
29
+ requirement: &id002 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: 0.9.33
35
+ type: :runtime
36
+ version_requirements: *id002
37
+ - !ruby/object:Gem::Dependency
38
+ name: rake
39
+ prerelease: false
40
+ requirement: &id003 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: "0"
46
+ type: :development
47
+ version_requirements: *id003
48
+ - !ruby/object:Gem::Dependency
49
+ name: rack-test
50
+ prerelease: false
51
+ requirement: &id004 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - "="
55
+ - !ruby/object:Gem::Version
56
+ version: 0.5.7
57
+ type: :development
58
+ version_requirements: *id004
59
+ - !ruby/object:Gem::Dependency
60
+ name: wrong
61
+ prerelease: false
62
+ requirement: &id005 !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - "="
66
+ - !ruby/object:Gem::Version
67
+ version: 0.5.0
68
+ type: :development
69
+ version_requirements: *id005
70
+ - !ruby/object:Gem::Dependency
71
+ name: webmock
72
+ prerelease: false
73
+ requirement: &id006 !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - "="
77
+ - !ruby/object:Gem::Version
78
+ version: 1.7.7
79
+ type: :development
80
+ version_requirements: *id006
81
+ - !ruby/object:Gem::Dependency
82
+ name: minitest
83
+ prerelease: false
84
+ requirement: &id007 !ruby/object:Gem::Requirement
85
+ none: false
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: "0"
90
+ type: :development
91
+ version_requirements: *id007
92
+ description: Geoloqi adapter for Sinatra, quickly allows you to make applications
93
+ email:
94
+ - kyledrake@gmail.com
95
+ executables: []
96
+
97
+ extensions: []
98
+
99
+ extra_rdoc_files: []
100
+
101
+ files:
102
+ - lib/sinatra/geoloqi.rb
103
+ - spec/sinatra_geoloqi_spec.rb
104
+ - Gemfile
105
+ - Gemfile.lock
106
+ - Rakefile
107
+ - README.markdown
108
+ homepage: https://github.com/geoloqi/sinatra-geoloqi
109
+ licenses: []
110
+
111
+ post_install_message:
112
+ rdoc_options: []
113
+
114
+ require_paths:
115
+ - lib
116
+ required_ruby_version: !ruby/object:Gem::Requirement
117
+ none: false
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ version: "0"
122
+ required_rubygems_version: !ruby/object:Gem::Requirement
123
+ none: false
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ version: 1.3.4
128
+ requirements: []
129
+
130
+ rubyforge_project: sinatra-geoloqi
131
+ rubygems_version: 1.8.9
132
+ signing_key:
133
+ specification_version: 3
134
+ summary: Geoloqi adapter for Sinatra
135
+ test_files: []
136
+