RubyApp 0.6.31 → 0.6.32

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.
@@ -14,6 +14,13 @@ default:
14
14
  authentication_document:
15
15
  access_key: 'ABC'
16
16
  secret_key: '123'
17
+ o_auth:
18
+ git_hub_authentication_document:
19
+ access_key: 'ABC'
20
+ secret_key: '123'
21
+ url: 'https://api.github.com'
22
+ authorize_url: 'https://github.com/login/oauth/authorize'
23
+ access_token_url: 'https://github.com/login/oauth/access_token'
17
24
  open_id:
18
25
  ax_authentication_document:
19
26
  attributes:
@@ -0,0 +1,5 @@
1
+ :sass
2
+ /* #{__FILE__}
3
+ .ui-icon-git-hub
4
+ background-image: url('/ruby_app/resources/elements/mobile/buttons/git_hub_button.png')
5
+ = yield
@@ -0,0 +1,27 @@
1
+ module RubyApp
2
+
3
+ module Elements
4
+
5
+ module Mobile
6
+
7
+ module Buttons
8
+ require 'ruby_app/elements/mobile/button'
9
+
10
+ class GitHubButton < RubyApp::Elements::Mobile::Button
11
+
12
+ template_path(:all, File.dirname(__FILE__))
13
+
14
+ def initialize
15
+ super
16
+ self.attributes.merge!('data-icon' => 'git-hub')
17
+ end
18
+
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+
25
+ end
26
+
27
+ end
@@ -1,4 +1,5 @@
1
1
  = RubyApp::Elements::Mobile::Buttons::FacebookButton.render(:css)
2
+ = RubyApp::Elements::Mobile::Buttons::GitHubButton.render(:css)
2
3
  = RubyApp::Elements::Mobile::Buttons::GoogleButton.render(:css)
3
4
  = RubyApp::Elements::Mobile::Buttons::MyOpenIDButton.render(:css)
4
5
  = RubyApp::Elements::Mobile::Buttons::YahooButton.render(:css)
@@ -12,6 +12,8 @@
12
12
  - else
13
13
  You are not logged in.
14
14
  %div{'data-role' => 'controlgroup'}
15
+ = @github_authentication_link.render(:html) do |element|
16
+ - element.content_for(:html, :link, 'GitHub')
15
17
  = @facebook_authentication_link.render(:html) do |element|
16
18
  - element.content_for(:html, :link, 'Facebook')
17
19
  = @google_authentication_link.render(:html) do |element|
@@ -1,4 +1,5 @@
1
1
  = RubyApp::Elements::Mobile::Buttons::FacebookButton.render(:js)
2
+ = RubyApp::Elements::Mobile::Buttons::GitHubButton.render(:js)
2
3
  = RubyApp::Elements::Mobile::Buttons::GoogleButton.render(:js)
3
4
  = RubyApp::Elements::Mobile::Buttons::MyOpenIDButton.render(:js)
4
5
  = RubyApp::Elements::Mobile::Buttons::YahooButton.render(:js)
@@ -11,10 +11,12 @@ module RubyApp
11
11
  module Authentications
12
12
  require 'ruby_app'
13
13
  require 'ruby_app/elements/mobile/buttons/facebook_button'
14
+ require 'ruby_app/elements/mobile/buttons/git_hub_button'
14
15
  require 'ruby_app/elements/mobile/buttons/google_button'
15
16
  require 'ruby_app/elements/mobile/buttons/my_open_id_button'
16
17
  require 'ruby_app/elements/mobile/buttons/yahoo_button'
17
18
  require 'ruby_app/elements/mobile/documents/authentication/facebook/email_authentication_document'
19
+ require 'ruby_app/elements/mobile/documents/authentication/o_auth/git_hub_authentication_document'
18
20
  require 'ruby_app/elements/mobile/documents/authentication/open_id/google_authentication_document'
19
21
  require 'ruby_app/elements/mobile/documents/authentication/open_id/my_open_id_authentication_document'
20
22
  require 'ruby_app/elements/mobile/documents/authentication/open_id/yahoo_authentication_document'
@@ -30,6 +32,12 @@ module RubyApp
30
32
 
31
33
  @back_button = RubyApp::Elements::Mobile::Navigation::BackButton.new
32
34
 
35
+ @github_authentication_link = RubyApp::Elements::Mobile::Buttons::GitHubButton.new
36
+ @github_authentication_link.clicked do |element, event|
37
+ RubyApp::Session.documents.push(RubyApp::Elements::Mobile::Documents::Authentication::OAuth::GitHubAuthenticationDocument.new)
38
+ event.refresh_browser
39
+ end
40
+
33
41
  @facebook_authentication_link = RubyApp::Elements::Mobile::Buttons::FacebookButton.new
34
42
  @facebook_authentication_link.clicked do |element, event|
35
43
  RubyApp::Session.documents.push(RubyApp::Elements::Mobile::Documents::Authentication::Facebook::EmailAuthenticationDocument.new)
@@ -0,0 +1,68 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ require 'oauth2'
5
+
6
+ module RubyApp
7
+
8
+ module Elements
9
+
10
+ module Mobile
11
+
12
+ module Documents
13
+
14
+ module Authentication
15
+
16
+ module OAuth
17
+ require 'ruby_app'
18
+ require 'ruby_app/elements/mobile/document'
19
+
20
+ class AuthenticationDocument < RubyApp::Elements::Mobile::Document
21
+
22
+ template_path(:all, File.dirname(__FILE__))
23
+
24
+ def initialize(access_key, secret_key, scope, options)
25
+ super()
26
+
27
+ self.loaded do |element, event|
28
+
29
+ unless @client
30
+ RubyApp::Log.debug("OAUTH scope=#{scope.inspect}")
31
+ RubyApp::Log.debug("OAUTH options=#{options.inspect}")
32
+ @client = ::OAuth2::Client.new(access_key, secret_key, options)
33
+ url = @client.auth_code.authorize_url(:redirect_uri => RubyApp::Request.url,
34
+ :scope => scope.join(','))
35
+ RubyApp::Log.debug("OAUTH --> #{url.inspect}")
36
+ event.go(url)
37
+ else
38
+ RubyApp::Log.debug("OAUTH <-- #{RubyApp::Request.url.inspect}")
39
+ code = RubyApp::Request.query['code']
40
+ access_token = @client.auth_code.get_token(code, :redirect_uri => RubyApp::Request.url)
41
+ RubyApp::Log.debug("OAUTH token=#{access_token.token.inspect}")
42
+ user = JSON.parse(access_token.get('/user').body)
43
+ RubyApp::Log.debug("OAUTH user=#{user.inspect}")
44
+ RubyApp::Session.identity = self.create_identity_from_user(user)
45
+ RubyApp::Session.documents.pop
46
+ event.go('/')
47
+ end
48
+ end
49
+
50
+ end
51
+
52
+ def create_identity_from_user(user)
53
+ RubyApp::Session::Identity.new(user['email'])
54
+ end
55
+
56
+ end
57
+
58
+ end
59
+
60
+ end
61
+
62
+ end
63
+
64
+ end
65
+
66
+ end
67
+
68
+ end
@@ -0,0 +1,41 @@
1
+ module RubyApp
2
+
3
+ module Elements
4
+
5
+ module Mobile
6
+
7
+ module Documents
8
+
9
+ module Authentication
10
+
11
+ module OAuth
12
+ require 'ruby_app/elements/mobile/documents/authentication/o_auth/authentication_document'
13
+
14
+ class GitHubAuthenticationDocument < RubyApp::Elements::Mobile::Documents::Authentication::OAuth::AuthenticationDocument
15
+
16
+ template_path(:all, File.dirname(__FILE__))
17
+
18
+ def initialize(access_key = ENV['GITHUB_ACCESS_KEY'] || RubyApp::Elements::Mobile::Documents::Authentication::OAuth::GitHubAuthenticationDocument.configuration.access_key,
19
+ secret_key = ENV['GITHUB_SECRET_KEY'] || RubyApp::Elements::Mobile::Documents::Authentication::OAuth::GitHubAuthenticationDocument.configuration.secret_key,
20
+ scope = [],
21
+ options = {})
22
+ _scope = ['user'] + scope
23
+ _options = {:site => RubyApp::Elements::Mobile::Documents::Authentication::OAuth::GitHubAuthenticationDocument.configuration.url,
24
+ :authorize_url => RubyApp::Elements::Mobile::Documents::Authentication::OAuth::GitHubAuthenticationDocument.configuration.authorize_url,
25
+ :token_url => RubyApp::Elements::Mobile::Documents::Authentication::OAuth::GitHubAuthenticationDocument.configuration.access_token_url}.merge(options)
26
+ super(access_key, secret_key, _scope, _options)
27
+ end
28
+
29
+ end
30
+
31
+ end
32
+
33
+ end
34
+
35
+ end
36
+
37
+ end
38
+
39
+ end
40
+
41
+ end
@@ -1,4 +1,5 @@
1
1
  load_script! 'default'
2
+ load_script! 'elements/authentications/o_auth/git_hub'
2
3
  load_script! 'elements/buttons'
3
4
  load_script! 'elements/calendars/month'
4
5
  load_script! 'elements/dialogs'
@@ -0,0 +1,6 @@
1
+ load_script! 'common/features'
2
+
3
+ add_step! (RubyApp::Element::Event) { |event| event.assert_exists_link('Authentications') }
4
+ add_step! (RubyApp::Element::AssertedEvent) { |event| event.click_link('Authentications') }
5
+ add_step! (RubyApp::Elements::Mobile::Page::ShownEvent) { |event| event.assert_exists_text('Authentications') }
6
+ add_step! (RubyApp::Element::AssertedEvent) { |event| event.execute {} }
@@ -0,0 +1,8 @@
1
+ load_script! 'common/features/authentications'
2
+
3
+ add_step! (RubyApp::Element::Event) { |event| event.assert_exists_link('GitHub') }
4
+ add_step! (RubyApp::Element::AssertedEvent) { |event| event.click_link('GitHub') }
5
+ add_step! (RubyApp::Elements::Mobile::Page::LoadedEvent) { |event| event.assert_exists_text('You are logged in as') }
6
+ add_step! (RubyApp::Element::AssertedEvent) { |event| event.click_link('Back') }
7
+ add_step! (RubyApp::Elements::Mobile::Page::ShownEvent) { |event| event.click_link('Back') }
8
+ add_step! (RubyApp::Elements::Mobile::Page::ShownEvent) { |event| event.execute {} }
@@ -1,4 +1,4 @@
1
1
  module RubyApp
2
- VERSION = "0.6.31"
2
+ VERSION = "0.6.32"
3
3
  ROOT = File.expand_path(File.dirname(__FILE__))
4
4
  end
data/ruby_app.gemspec CHANGED
@@ -25,6 +25,7 @@ Gem::Specification.new do |s|
25
25
  s.add_dependency 'json'
26
26
  s.add_dependency 'koala'
27
27
  s.add_dependency 'mime-types'
28
+ s.add_dependency 'oauth2'
28
29
  s.add_dependency 'r18n-core'
29
30
  s.add_dependency 'rack'
30
31
  s.add_dependency 'ruby-event'
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: RubyApp
3
3
  version: !ruby/object:Gem::Version
4
- hash: 57
4
+ hash: 71
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 6
9
- - 31
10
- version: 0.6.31
9
+ - 32
10
+ version: 0.6.32
11
11
  platform: ruby
12
12
  authors:
13
13
  - Frank G. Ficnar
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-10-15 00:00:00 Z
18
+ date: 2012-10-17 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  version_requirements: &id001 !ruby/object:Gem::Requirement
@@ -155,7 +155,7 @@ dependencies:
155
155
  version: "0"
156
156
  prerelease: false
157
157
  type: :runtime
158
- name: r18n-core
158
+ name: oauth2
159
159
  requirement: *id010
160
160
  - !ruby/object:Gem::Dependency
161
161
  version_requirements: &id011 !ruby/object:Gem::Requirement
@@ -169,7 +169,7 @@ dependencies:
169
169
  version: "0"
170
170
  prerelease: false
171
171
  type: :runtime
172
- name: rack
172
+ name: r18n-core
173
173
  requirement: *id011
174
174
  - !ruby/object:Gem::Dependency
175
175
  version_requirements: &id012 !ruby/object:Gem::Requirement
@@ -183,7 +183,7 @@ dependencies:
183
183
  version: "0"
184
184
  prerelease: false
185
185
  type: :runtime
186
- name: ruby-event
186
+ name: rack
187
187
  requirement: *id012
188
188
  - !ruby/object:Gem::Dependency
189
189
  version_requirements: &id013 !ruby/object:Gem::Requirement
@@ -197,7 +197,7 @@ dependencies:
197
197
  version: "0"
198
198
  prerelease: false
199
199
  type: :runtime
200
- name: ruby-openid
200
+ name: ruby-event
201
201
  requirement: *id013
202
202
  - !ruby/object:Gem::Dependency
203
203
  version_requirements: &id014 !ruby/object:Gem::Requirement
@@ -211,7 +211,7 @@ dependencies:
211
211
  version: "0"
212
212
  prerelease: false
213
213
  type: :runtime
214
- name: sass
214
+ name: ruby-openid
215
215
  requirement: *id014
216
216
  - !ruby/object:Gem::Dependency
217
217
  version_requirements: &id015 !ruby/object:Gem::Requirement
@@ -225,7 +225,7 @@ dependencies:
225
225
  version: "0"
226
226
  prerelease: false
227
227
  type: :runtime
228
- name: system_timer
228
+ name: sass
229
229
  requirement: *id015
230
230
  - !ruby/object:Gem::Dependency
231
231
  version_requirements: &id016 !ruby/object:Gem::Requirement
@@ -239,7 +239,7 @@ dependencies:
239
239
  version: "0"
240
240
  prerelease: false
241
241
  type: :runtime
242
- name: term-ansicolor
242
+ name: system_timer
243
243
  requirement: *id016
244
244
  - !ruby/object:Gem::Dependency
245
245
  version_requirements: &id017 !ruby/object:Gem::Requirement
@@ -253,7 +253,7 @@ dependencies:
253
253
  version: "0"
254
254
  prerelease: false
255
255
  type: :runtime
256
- name: terminal-table
256
+ name: term-ansicolor
257
257
  requirement: *id017
258
258
  - !ruby/object:Gem::Dependency
259
259
  version_requirements: &id018 !ruby/object:Gem::Requirement
@@ -267,7 +267,7 @@ dependencies:
267
267
  version: "0"
268
268
  prerelease: false
269
269
  type: :runtime
270
- name: yajl-ruby
270
+ name: terminal-table
271
271
  requirement: *id018
272
272
  - !ruby/object:Gem::Dependency
273
273
  version_requirements: &id019 !ruby/object:Gem::Requirement
@@ -280,9 +280,23 @@ dependencies:
280
280
  - 0
281
281
  version: "0"
282
282
  prerelease: false
283
+ type: :runtime
284
+ name: yajl-ruby
285
+ requirement: *id019
286
+ - !ruby/object:Gem::Dependency
287
+ version_requirements: &id020 !ruby/object:Gem::Requirement
288
+ none: false
289
+ requirements:
290
+ - - ">="
291
+ - !ruby/object:Gem::Version
292
+ hash: 3
293
+ segments:
294
+ - 0
295
+ version: "0"
296
+ prerelease: false
283
297
  type: :development
284
298
  name: rake
285
- requirement: *id019
299
+ requirement: *id020
286
300
  description: A mobile web application framework in Ruby
287
301
  email:
288
302
  - frank.ficnar@gmail.com
@@ -312,6 +326,8 @@ files:
312
326
  - lib/ruby_app/elements/mobile/button.rb
313
327
  - lib/ruby_app/elements/mobile/buttons/facebook_button.css.haml
314
328
  - lib/ruby_app/elements/mobile/buttons/facebook_button.rb
329
+ - lib/ruby_app/elements/mobile/buttons/git_hub_button.css.haml
330
+ - lib/ruby_app/elements/mobile/buttons/git_hub_button.rb
315
331
  - lib/ruby_app/elements/mobile/buttons/google_button.css.haml
316
332
  - lib/ruby_app/elements/mobile/buttons/google_button.rb
317
333
  - lib/ruby_app/elements/mobile/buttons/my_open_id_button.css.haml
@@ -411,6 +427,8 @@ files:
411
427
  - lib/ruby_app/elements/mobile/document.rb
412
428
  - lib/ruby_app/elements/mobile/documents/authentication/facebook/authentication_document.rb
413
429
  - lib/ruby_app/elements/mobile/documents/authentication/facebook/email_authentication_document.rb
430
+ - lib/ruby_app/elements/mobile/documents/authentication/o_auth/authentication_document.rb
431
+ - lib/ruby_app/elements/mobile/documents/authentication/o_auth/git_hub_authentication_document.rb
414
432
  - lib/ruby_app/elements/mobile/documents/authentication/open_id/authentication_document.rb
415
433
  - lib/ruby_app/elements/mobile/documents/authentication/open_id/ax_authentication_document.rb
416
434
  - lib/ruby_app/elements/mobile/documents/authentication/open_id/email_authentication_document.rb
@@ -545,6 +563,8 @@ files:
545
563
  - lib/ruby_app/request.rb
546
564
  - lib/ruby_app/resources/elements/mobile/buttons/facebook_button.ico
547
565
  - lib/ruby_app/resources/elements/mobile/buttons/facebook_button.png
566
+ - lib/ruby_app/resources/elements/mobile/buttons/git_hub_button.ico
567
+ - lib/ruby_app/resources/elements/mobile/buttons/git_hub_button.png
548
568
  - lib/ruby_app/resources/elements/mobile/buttons/google_button.ico
549
569
  - lib/ruby_app/resources/elements/mobile/buttons/google_button.png
550
570
  - lib/ruby_app/resources/elements/mobile/buttons/my_open_id_button.ico
@@ -562,8 +582,10 @@ files:
562
582
  - lib/ruby_app/scripts/all_continuous.rb
563
583
  - lib/ruby_app/scripts/all_once.rb
564
584
  - lib/ruby_app/scripts/common/features.rb
585
+ - lib/ruby_app/scripts/common/features/authentications.rb
565
586
  - lib/ruby_app/scripts/common/reset.rb
566
587
  - lib/ruby_app/scripts/default.rb
588
+ - lib/ruby_app/scripts/elements/authentications/o_auth/git_hub.rb
567
589
  - lib/ruby_app/scripts/elements/buttons.rb
568
590
  - lib/ruby_app/scripts/elements/calendars/month.rb
569
591
  - lib/ruby_app/scripts/elements/dialogs.rb