bigbluebutton_rails 0.0.5 → 0.0.6
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 +2 -0
- data/.rvmrc +6 -0
- data/.travis.yml +4 -0
- data/CHANGELOG.rdoc +9 -0
- data/Gemfile +18 -0
- data/Gemfile.lock +85 -65
- data/README.rdoc +23 -0
- data/Rakefile +17 -6
- data/app/controllers/bigbluebutton/rooms_controller.rb +79 -58
- data/app/controllers/bigbluebutton/servers_controller.rb +41 -24
- data/app/models/bigbluebutton_room.rb +45 -5
- data/app/models/bigbluebutton_server.rb +5 -7
- data/app/views/bigbluebutton/rooms/external.html.erb +24 -0
- data/app/views/bigbluebutton/rooms/join_mobile.html.erb +1 -1
- data/app/views/bigbluebutton/servers/_activity_list.html.erb +7 -7
- data/app/views/bigbluebutton/servers/activity.html.erb +1 -1
- data/bigbluebutton_rails.gemspec +2 -12
- data/config/locales/en.yml +3 -0
- data/lib/bigbluebutton_rails/rails/routes.rb +12 -6
- data/lib/bigbluebutton_rails/utils.rb +8 -0
- data/lib/bigbluebutton_rails/version.rb +1 -1
- data/lib/bigbluebutton_rails.rb +1 -0
- data/spec/bigbluebutton_rails_spec.rb +13 -0
- data/spec/controllers/bigbluebutton/rooms_controller_exception_handling_spec.rb +114 -0
- data/spec/controllers/bigbluebutton/rooms_controller_json_responses_spec.rb +167 -0
- data/spec/controllers/bigbluebutton/rooms_controller_spec.rb +213 -457
- data/spec/controllers/bigbluebutton/servers_controller_json_responses_spec.rb +148 -0
- data/spec/controllers/bigbluebutton/servers_controller_spec.rb +50 -76
- data/spec/factories/bigbluebutton_room.rb +1 -0
- data/spec/models/bigbluebutton_room_spec.rb +141 -17
- data/spec/models/bigbluebutton_server_spec.rb +27 -36
- data/spec/rails_app/app/controllers/application_controller.rb +4 -3
- data/spec/rails_app/config/initializers/rack_hotfix.rb +13 -0
- data/spec/rails_app/features/join_external_bigbluebutton_rooms.feature +19 -0
- data/spec/rails_app/features/manage_bigbluebutton_rooms.feature +3 -3
- data/spec/rails_app/features/manage_bigbluebutton_servers.feature +2 -2
- data/spec/rails_app/features/step_definitions/bigbluebutton_room_steps.rb +29 -3
- data/spec/rails_app/features/step_definitions/bigbluebutton_server_steps.rb +2 -7
- data/spec/rails_app/features/step_definitions/common_steps.rb +15 -2
- data/spec/rails_app/features/step_definitions/web_steps.rb +7 -3
- data/spec/rails_app/features/support/application_controller.rb +12 -0
- data/spec/rails_app/features/support/content.rb +10 -0
- data/spec/rails_app/features/support/env.rb +4 -4
- data/spec/rails_app/features/support/env_gem.rb +2 -1
- data/spec/rails_app/features/support/forms.rb +12 -0
- data/spec/rails_app/features/support/paths.rb +17 -8
- data/spec/rails_app/features/support/selectors.rb +57 -0
- data/spec/rails_app/features/support/within.rb +7 -0
- data/spec/routing/bigbluebutton/rooms_routing_spec.rb +60 -52
- data/spec/routing/bigbluebutton/servers_routing_spec.rb +8 -8
- data/spec/spec_helper.rb +5 -0
- data/spec/support/controllers/bigbluebutton/rooms_controller.rb +7 -0
- data/spec/support/matchers/shoulda/be_boolean.rb +1 -1
- data/spec/support/shared_examples/rooms_controller.rb +37 -0
- metadata +24 -110
- data/spec/rails_app/app/helpers/application_helper.rb +0 -2
data/.gitignore
CHANGED
data/.rvmrc
ADDED
data/.travis.yml
ADDED
data/CHANGELOG.rdoc
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
== 0.0.6
|
2
|
+
|
3
|
+
* After fetch_meetings, the rooms that are not found in the DB are *not* saved by default anymore.
|
4
|
+
* New action to join external rooms (rooms that are not in the DB but exist in the BBB server).
|
5
|
+
* Fixed some errors and warnings for Ruby 1.8.
|
6
|
+
* Some changes in the logic of RoomsController#auth to enable a user to join a room that has a blank password.
|
7
|
+
* Improvements in the mobile_join view to show a link that includes user authentication. But the QR code is still a bare link to the BBB server.
|
8
|
+
* Made some improvements based on tips by rails_best_practices and increased the test coverage to 100% for almost all classes.
|
9
|
+
|
1
10
|
== 0.0.5
|
2
11
|
|
3
12
|
* URLs for both servers and rooms are now defined with a string attribute (called "param") instead of the model ID.
|
data/Gemfile
CHANGED
@@ -2,3 +2,21 @@ source 'http://rubygems.org'
|
|
2
2
|
|
3
3
|
gemspec
|
4
4
|
|
5
|
+
group :development, :test do
|
6
|
+
gem "rspec-rails"
|
7
|
+
gem "factory_girl"
|
8
|
+
gem "sqlite3-ruby"
|
9
|
+
gem "generator_spec"
|
10
|
+
gem "shoulda-matchers"
|
11
|
+
gem "forgery"
|
12
|
+
gem "cucumber-rails"
|
13
|
+
gem "database_cleaner"
|
14
|
+
gem "rdoc"
|
15
|
+
gem "rails_best_practices"
|
16
|
+
end
|
17
|
+
|
18
|
+
group :test do
|
19
|
+
if RUBY_VERSION >= "1.9"
|
20
|
+
gem 'simplecov', '>= 0.4.0', :require => false
|
21
|
+
end
|
22
|
+
end
|
data/Gemfile.lock
CHANGED
@@ -1,20 +1,20 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
bigbluebutton_rails (0.0.
|
5
|
-
bigbluebutton-api-ruby (~> 0.0.
|
4
|
+
bigbluebutton_rails (0.0.6)
|
5
|
+
bigbluebutton-api-ruby (~> 0.0.11)
|
6
6
|
rails (>= 3.0.3)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: http://rubygems.org/
|
10
10
|
specs:
|
11
11
|
abstract (1.0.0)
|
12
|
-
actionmailer (3.0.
|
13
|
-
actionpack (= 3.0.
|
14
|
-
mail (~> 2.2.
|
15
|
-
actionpack (3.0.
|
16
|
-
activemodel (= 3.0.
|
17
|
-
activesupport (= 3.0.
|
12
|
+
actionmailer (3.0.9)
|
13
|
+
actionpack (= 3.0.9)
|
14
|
+
mail (~> 2.2.19)
|
15
|
+
actionpack (3.0.9)
|
16
|
+
activemodel (= 3.0.9)
|
17
|
+
activesupport (= 3.0.9)
|
18
18
|
builder (~> 2.1.2)
|
19
19
|
erubis (~> 2.6.6)
|
20
20
|
i18n (~> 0.5.0)
|
@@ -22,21 +22,21 @@ GEM
|
|
22
22
|
rack-mount (~> 0.6.14)
|
23
23
|
rack-test (~> 0.5.7)
|
24
24
|
tzinfo (~> 0.3.23)
|
25
|
-
activemodel (3.0.
|
26
|
-
activesupport (= 3.0.
|
25
|
+
activemodel (3.0.9)
|
26
|
+
activesupport (= 3.0.9)
|
27
27
|
builder (~> 2.1.2)
|
28
28
|
i18n (~> 0.5.0)
|
29
|
-
activerecord (3.0.
|
30
|
-
activemodel (= 3.0.
|
31
|
-
activesupport (= 3.0.
|
32
|
-
arel (~> 2.0.
|
29
|
+
activerecord (3.0.9)
|
30
|
+
activemodel (= 3.0.9)
|
31
|
+
activesupport (= 3.0.9)
|
32
|
+
arel (~> 2.0.10)
|
33
33
|
tzinfo (~> 0.3.23)
|
34
|
-
activeresource (3.0.
|
35
|
-
activemodel (= 3.0.
|
36
|
-
activesupport (= 3.0.
|
37
|
-
activesupport (3.0.
|
38
|
-
arel (2.0.
|
39
|
-
bigbluebutton-api-ruby (0.0.
|
34
|
+
activeresource (3.0.9)
|
35
|
+
activemodel (= 3.0.9)
|
36
|
+
activesupport (= 3.0.9)
|
37
|
+
activesupport (3.0.9)
|
38
|
+
arel (2.0.10)
|
39
|
+
bigbluebutton-api-ruby (0.0.11)
|
40
40
|
nokogiri (~> 1.4.0)
|
41
41
|
builder (2.1.2)
|
42
42
|
capybara (1.0.0)
|
@@ -46,63 +46,73 @@ GEM
|
|
46
46
|
rack-test (>= 0.5.4)
|
47
47
|
selenium-webdriver (~> 0.2.0)
|
48
48
|
xpath (~> 0.1.4)
|
49
|
-
childprocess (0.
|
49
|
+
childprocess (0.2.0)
|
50
50
|
ffi (~> 1.0.6)
|
51
|
-
|
51
|
+
colored (1.2)
|
52
|
+
cucumber (1.0.2)
|
52
53
|
builder (>= 2.1.2)
|
53
54
|
diff-lcs (>= 1.1.2)
|
54
|
-
gherkin (~> 2.4.
|
55
|
+
gherkin (~> 2.4.5)
|
55
56
|
json (>= 1.4.6)
|
56
57
|
term-ansicolor (>= 1.0.5)
|
57
|
-
cucumber-rails (0.
|
58
|
-
capybara (>= 1.0.0
|
59
|
-
cucumber (
|
60
|
-
nokogiri (>= 1.4.
|
61
|
-
rack-test (>= 0.5.7)
|
58
|
+
cucumber-rails (1.0.2)
|
59
|
+
capybara (>= 1.0.0)
|
60
|
+
cucumber (~> 1.0.0)
|
61
|
+
nokogiri (>= 1.4.6)
|
62
62
|
database_cleaner (0.6.7)
|
63
63
|
diff-lcs (1.1.2)
|
64
64
|
erubis (2.6.6)
|
65
65
|
abstract (>= 1.0.0)
|
66
|
-
factory_girl (
|
66
|
+
factory_girl (2.0.2)
|
67
67
|
ffi (1.0.9)
|
68
|
-
forgery (0.3.
|
68
|
+
forgery (0.3.12)
|
69
69
|
nokogiri (~> 1.4)
|
70
|
-
generator_spec (0.8.
|
70
|
+
generator_spec (0.8.3)
|
71
71
|
rails (~> 3.0)
|
72
72
|
rspec-rails
|
73
|
-
gherkin (2.4.
|
73
|
+
gherkin (2.4.5)
|
74
74
|
json (>= 1.4.6)
|
75
|
+
haml (3.1.2)
|
75
76
|
i18n (0.5.0)
|
76
|
-
json (1.5.
|
77
|
-
json_pure (1.5.
|
78
|
-
mail (2.2.
|
77
|
+
json (1.5.3)
|
78
|
+
json_pure (1.5.3)
|
79
|
+
mail (2.2.19)
|
79
80
|
activesupport (>= 2.3.6)
|
80
81
|
i18n (>= 0.4.0)
|
81
82
|
mime-types (~> 1.16)
|
82
83
|
treetop (~> 1.4.8)
|
83
84
|
mime-types (1.16)
|
84
|
-
nokogiri (1.4.
|
85
|
-
polyglot (0.3.
|
85
|
+
nokogiri (1.4.7)
|
86
|
+
polyglot (0.3.2)
|
86
87
|
rack (1.2.3)
|
87
88
|
rack-mount (0.6.14)
|
88
89
|
rack (>= 1.0.0)
|
89
90
|
rack-test (0.5.7)
|
90
91
|
rack (>= 1.0)
|
91
|
-
rails (3.0.
|
92
|
-
actionmailer (= 3.0.
|
93
|
-
actionpack (= 3.0.
|
94
|
-
activerecord (= 3.0.
|
95
|
-
activeresource (= 3.0.
|
96
|
-
activesupport (= 3.0.
|
92
|
+
rails (3.0.9)
|
93
|
+
actionmailer (= 3.0.9)
|
94
|
+
actionpack (= 3.0.9)
|
95
|
+
activerecord (= 3.0.9)
|
96
|
+
activeresource (= 3.0.9)
|
97
|
+
activesupport (= 3.0.9)
|
97
98
|
bundler (~> 1.0)
|
98
|
-
railties (= 3.0.
|
99
|
-
|
100
|
-
|
101
|
-
|
99
|
+
railties (= 3.0.9)
|
100
|
+
rails_best_practices (0.10.1)
|
101
|
+
activesupport
|
102
|
+
colored
|
103
|
+
erubis
|
104
|
+
haml
|
105
|
+
i18n
|
106
|
+
ruby-progressbar
|
107
|
+
ruby_parser
|
108
|
+
railties (3.0.9)
|
109
|
+
actionpack (= 3.0.9)
|
110
|
+
activesupport (= 3.0.9)
|
102
111
|
rake (>= 0.8.7)
|
112
|
+
rdoc (~> 3.4)
|
103
113
|
thor (~> 0.14.4)
|
104
|
-
rake (0.
|
105
|
-
rdoc (3.
|
114
|
+
rake (0.9.2)
|
115
|
+
rdoc (3.9.1)
|
106
116
|
rspec (2.6.0)
|
107
117
|
rspec-core (~> 2.6.0)
|
108
118
|
rspec-expectations (~> 2.6.0)
|
@@ -116,21 +126,29 @@ GEM
|
|
116
126
|
activesupport (~> 3.0)
|
117
127
|
railties (~> 3.0)
|
118
128
|
rspec (~> 2.6.0)
|
129
|
+
ruby-progressbar (0.0.10)
|
130
|
+
ruby_parser (2.0.6)
|
131
|
+
sexp_processor (~> 3.0)
|
119
132
|
rubyzip (0.9.4)
|
120
|
-
selenium-webdriver (0.2.
|
121
|
-
childprocess (>= 0.1.
|
133
|
+
selenium-webdriver (0.2.2)
|
134
|
+
childprocess (>= 0.1.9)
|
122
135
|
ffi (>= 1.0.7)
|
123
136
|
json_pure
|
124
137
|
rubyzip
|
125
|
-
|
126
|
-
|
138
|
+
sexp_processor (3.0.5)
|
139
|
+
shoulda-matchers (1.0.0.beta3)
|
140
|
+
simplecov (0.4.2)
|
141
|
+
simplecov-html (~> 0.4.4)
|
142
|
+
simplecov-html (0.4.5)
|
143
|
+
sqlite3 (1.3.4)
|
127
144
|
sqlite3-ruby (1.3.3)
|
128
145
|
sqlite3 (>= 1.3.3)
|
129
|
-
term-ansicolor (1.0.
|
146
|
+
term-ansicolor (1.0.6)
|
130
147
|
thor (0.14.6)
|
131
|
-
treetop (1.4.
|
148
|
+
treetop (1.4.10)
|
149
|
+
polyglot
|
132
150
|
polyglot (>= 0.3.1)
|
133
|
-
tzinfo (0.3.
|
151
|
+
tzinfo (0.3.29)
|
134
152
|
xpath (0.1.4)
|
135
153
|
nokogiri (~> 1.3)
|
136
154
|
|
@@ -139,12 +157,14 @@ PLATFORMS
|
|
139
157
|
|
140
158
|
DEPENDENCIES
|
141
159
|
bigbluebutton_rails!
|
142
|
-
cucumber-rails
|
143
|
-
database_cleaner
|
144
|
-
factory_girl
|
145
|
-
forgery
|
146
|
-
generator_spec
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
160
|
+
cucumber-rails
|
161
|
+
database_cleaner
|
162
|
+
factory_girl
|
163
|
+
forgery
|
164
|
+
generator_spec
|
165
|
+
rails_best_practices
|
166
|
+
rdoc
|
167
|
+
rspec-rails
|
168
|
+
shoulda-matchers
|
169
|
+
simplecov (>= 0.4.0)
|
170
|
+
sqlite3-ruby
|
data/README.rdoc
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
= BigBlueButton on Rails
|
2
|
+
http://travis-ci.org/mconf/bigbluebutton_rails.png {(more...)}[http://travis-ci.org/#!/mconf/bigbluebutton_rails]
|
2
3
|
|
3
4
|
{BigBlueButton}[http://bigbluebutton.org] integration for Ruby on Rails 3.
|
4
5
|
|
@@ -181,6 +182,28 @@ Run the tests:
|
|
181
182
|
rake spec
|
182
183
|
rake cucumber
|
183
184
|
|
185
|
+
Or simply:
|
186
|
+
|
187
|
+
rake
|
188
|
+
|
184
189
|
Develop. :)
|
185
190
|
|
186
191
|
If you want your code to be integrated in this repository, please create a branch with your modifications and submit a pull request.
|
192
|
+
|
193
|
+
=== Test Coverage
|
194
|
+
|
195
|
+
Coverage is analyzed by default when you run:
|
196
|
+
|
197
|
+
rake spec
|
198
|
+
|
199
|
+
Run it and look at the file <tt>coverage/index.html</tt>.
|
200
|
+
|
201
|
+
=== Best Practices
|
202
|
+
|
203
|
+
We use the gem <tt>rails_best_practices</tt> to get some nice tips on how to improve the code.
|
204
|
+
|
205
|
+
Run:
|
206
|
+
|
207
|
+
rake best_practices
|
208
|
+
|
209
|
+
And look at the file <tt>rails_best_practices_output.html</tt> to see the tips.
|
data/Rakefile
CHANGED
@@ -30,23 +30,25 @@ end
|
|
30
30
|
desc 'Setup RailsApp used in tests.'
|
31
31
|
namespace :setup do
|
32
32
|
task :rails_app do |app|
|
33
|
-
cd "spec
|
33
|
+
cd File.join(File.dirname(__FILE__), "spec", "rails_app")
|
34
34
|
sh "rails destroy bigbluebutton_rails:install"
|
35
35
|
sh "rails generate bigbluebutton_rails:install"
|
36
|
+
cd File.dirname(__FILE__)
|
36
37
|
end
|
37
38
|
|
38
39
|
namespace :rails_app do |app|
|
39
40
|
task :db do
|
41
|
+
cd File.join(File.dirname(__FILE__), "spec", "rails_app")
|
40
42
|
# base
|
41
|
-
cd "spec/rails_app/"
|
42
43
|
sh "rake db:drop:all"
|
43
44
|
sh "rake db:create:all"
|
44
|
-
# test
|
45
|
-
sh "rake db:migrate RAILS_ENV=test"
|
46
|
-
sh "rake db:test:prepare RAILS_ENV=test"
|
47
45
|
# development
|
48
46
|
sh "rake db:migrate RAILS_ENV=development"
|
49
47
|
sh "rake db:seed RAILS_ENV=development"
|
48
|
+
# test
|
49
|
+
sh "rake db:migrate RAILS_ENV=test"
|
50
|
+
sh "rake db:test:prepare RAILS_ENV=test"
|
51
|
+
cd File.dirname(__FILE__)
|
50
52
|
end
|
51
53
|
end
|
52
54
|
end
|
@@ -57,7 +59,9 @@ task :cucumber do
|
|
57
59
|
sh %{ cucumber features/ }
|
58
60
|
end
|
59
61
|
puts "* Dummy app features"
|
60
|
-
|
62
|
+
cd File.join(File.dirname(__FILE__), "spec", "rails_app")
|
63
|
+
sh "cucumber features/"
|
64
|
+
cd File.dirname(__FILE__)
|
61
65
|
end
|
62
66
|
|
63
67
|
task :notes do
|
@@ -88,3 +92,10 @@ namespace :spec do
|
|
88
92
|
sh "rails destroy bigbluebutton_rails:install 0.0.4"
|
89
93
|
end
|
90
94
|
end
|
95
|
+
|
96
|
+
task :best_practices do |app|
|
97
|
+
sh "rails_best_practices -f html --spec &>/dev/null"
|
98
|
+
puts
|
99
|
+
puts "Output will be in the file rails_best_practices_output.html"
|
100
|
+
puts
|
101
|
+
end
|
@@ -1,10 +1,11 @@
|
|
1
|
-
require '
|
1
|
+
require 'bigbluebutton_api'
|
2
2
|
|
3
3
|
class Bigbluebutton::RoomsController < ApplicationController
|
4
4
|
|
5
5
|
before_filter :find_server
|
6
|
+
before_filter :find_room, :only => [:show, :edit, :update, :destroy, :join, :invite, :running, :end, :destroy, :end, :join_mobile]
|
6
7
|
respond_to :html, :except => :running
|
7
|
-
respond_to :json, :only => [:running, :show, :new, :index, :create, :update
|
8
|
+
respond_to :json, :only => [:running, :show, :new, :index, :create, :update]
|
8
9
|
|
9
10
|
def index
|
10
11
|
# TODO restrict to rooms belonging to the selected server
|
@@ -12,7 +13,7 @@ class Bigbluebutton::RoomsController < ApplicationController
|
|
12
13
|
end
|
13
14
|
|
14
15
|
def show
|
15
|
-
respond_with(@room
|
16
|
+
respond_with(@room)
|
16
17
|
end
|
17
18
|
|
18
19
|
def new
|
@@ -20,14 +21,13 @@ class Bigbluebutton::RoomsController < ApplicationController
|
|
20
21
|
end
|
21
22
|
|
22
23
|
def edit
|
23
|
-
respond_with(@room
|
24
|
+
respond_with(@room)
|
24
25
|
end
|
25
26
|
|
26
27
|
def create
|
27
28
|
@room = BigbluebuttonRoom.new(params[:bigbluebutton_room])
|
28
29
|
@room.server = @server
|
29
30
|
|
30
|
-
# TODO Generate a random meetingid everytime a room is created
|
31
31
|
if !params[:bigbluebutton_room].has_key?(:meetingid) or
|
32
32
|
params[:bigbluebutton_room][:meetingid].blank?
|
33
33
|
@room.meetingid = @room.name
|
@@ -47,7 +47,7 @@ class Bigbluebutton::RoomsController < ApplicationController
|
|
47
47
|
message = t('bigbluebutton_rails.rooms.notice.create.failure')
|
48
48
|
redirect_to params[:redir_url], :error => message
|
49
49
|
else
|
50
|
-
render :
|
50
|
+
render :new
|
51
51
|
end
|
52
52
|
}
|
53
53
|
format.json { render :json => @room.errors.full_messages, :status => :unprocessable_entity }
|
@@ -56,8 +56,6 @@ class Bigbluebutton::RoomsController < ApplicationController
|
|
56
56
|
end
|
57
57
|
|
58
58
|
def update
|
59
|
-
@room = BigbluebuttonRoom.find_by_param(params[:id])
|
60
|
-
|
61
59
|
if !params[:bigbluebutton_room].has_key?(:meetingid) or
|
62
60
|
params[:bigbluebutton_room][:meetingid].blank?
|
63
61
|
params[:bigbluebutton_room][:meetingid] = params[:bigbluebutton_room][:name]
|
@@ -77,7 +75,7 @@ class Bigbluebutton::RoomsController < ApplicationController
|
|
77
75
|
message = t('bigbluebutton_rails.rooms.notice.update.failure')
|
78
76
|
redirect_to params[:redir_url], :error => message
|
79
77
|
else
|
80
|
-
render :
|
78
|
+
render :edit
|
81
79
|
end
|
82
80
|
}
|
83
81
|
format.json { render :json => @room.errors.full_messages, :status => :unprocessable_entity }
|
@@ -86,8 +84,6 @@ class Bigbluebutton::RoomsController < ApplicationController
|
|
86
84
|
end
|
87
85
|
|
88
86
|
def destroy
|
89
|
-
@room = BigbluebuttonRoom.find_by_param(params[:id])
|
90
|
-
|
91
87
|
# TODO Destroy the room record even if end_meeting failed?
|
92
88
|
|
93
89
|
error = false
|
@@ -119,8 +115,6 @@ class Bigbluebutton::RoomsController < ApplicationController
|
|
119
115
|
|
120
116
|
# Used by logged users to join public rooms.
|
121
117
|
def join
|
122
|
-
@room = BigbluebuttonRoom.find_by_param(params[:id])
|
123
|
-
|
124
118
|
role = bigbluebutton_role(@room)
|
125
119
|
if role.nil?
|
126
120
|
raise BigbluebuttonRails::RoomAccessDenied.new
|
@@ -136,8 +130,6 @@ class Bigbluebutton::RoomsController < ApplicationController
|
|
136
130
|
|
137
131
|
# Used to join private rooms or to invited anonymous users (not logged)
|
138
132
|
def invite
|
139
|
-
@room = BigbluebuttonRoom.find_by_param(params[:id])
|
140
|
-
|
141
133
|
respond_with @room do |format|
|
142
134
|
|
143
135
|
role = bigbluebutton_role(@room)
|
@@ -156,9 +148,54 @@ class Bigbluebutton::RoomsController < ApplicationController
|
|
156
148
|
end
|
157
149
|
|
158
150
|
# Authenticates an user using name and password passed in the params from #invite
|
151
|
+
# Uses params[:id] to get the target room
|
159
152
|
def auth
|
160
|
-
@room = BigbluebuttonRoom.find_by_param(params[:id])
|
153
|
+
@room = BigbluebuttonRoom.find_by_param(params[:id]) unless params[:id].blank?
|
154
|
+
if @room.nil?
|
155
|
+
message = t('bigbluebutton_rails.rooms.errors.auth.wrong_params')
|
156
|
+
redirect_to request.referer, :notice => message
|
157
|
+
return
|
158
|
+
end
|
159
|
+
|
160
|
+
name = bigbluebutton_user.nil? ? params[:user][:name] : bigbluebutton_user.name
|
161
|
+
role = bigbluebutton_role(@room)
|
162
|
+
if role.nil?
|
163
|
+
raise BigbluebuttonRails::RoomAccessDenied.new
|
164
|
+
elsif role == :password
|
165
|
+
role = @room.user_role(params[:user])
|
166
|
+
end
|
167
|
+
|
168
|
+
unless role.nil? or name.nil?
|
169
|
+
join_internal(name, role, :invite)
|
170
|
+
else
|
171
|
+
flash[:error] = t('bigbluebutton_rails.rooms.errors.auth.failure')
|
172
|
+
render :invite, :status => :unauthorized
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
def external
|
177
|
+
if params[:meeting].blank?
|
178
|
+
message = t('bigbluebutton_rails.rooms.errors.external.blank_meetingid')
|
179
|
+
params[:redir_url] ||= bigbluebutton_server_rooms_path(@server)
|
180
|
+
redirect_to params[:redir_url], :notice => message
|
181
|
+
end
|
182
|
+
@room = BigbluebuttonRoom.new(:meetingid => params[:meeting])
|
183
|
+
end
|
184
|
+
|
185
|
+
# Authenticates an user using name and password passed in the params from #external
|
186
|
+
# Uses params[:meeting] to get the meetingID of the target room
|
187
|
+
def external_auth
|
188
|
+
@room = nil
|
189
|
+
if !params[:meeting].blank? && !params[:user].blank?
|
190
|
+
@server.fetch_meetings
|
191
|
+
@room = @server.meetings.select{ |r| r.meetingid == params[:meeting] }.first
|
192
|
+
else
|
193
|
+
message = t('bigbluebutton_rails.rooms.errors.auth.wrong_params')
|
194
|
+
redirect_to request.referer, :notice => message
|
195
|
+
return
|
196
|
+
end
|
161
197
|
|
198
|
+
# This is just to check if the room is not blocked, not to get the actual role
|
162
199
|
raise BigbluebuttonRails::RoomAccessDenied.new if bigbluebutton_role(@room).nil?
|
163
200
|
|
164
201
|
# if there's a user logged, use his name instead of the name in the params
|
@@ -166,16 +203,21 @@ class Bigbluebutton::RoomsController < ApplicationController
|
|
166
203
|
role = @room.user_role(params[:user])
|
167
204
|
|
168
205
|
unless role.nil? or name.nil?
|
169
|
-
|
206
|
+
@room.fetch_meeting_info
|
207
|
+
if @room.is_running?
|
208
|
+
join_url = @room.join_url(name, role)
|
209
|
+
redirect_to(join_url)
|
210
|
+
else
|
211
|
+
flash[:error] = t('bigbluebutton_rails.rooms.errors.auth.not_running')
|
212
|
+
render :external
|
213
|
+
end
|
170
214
|
else
|
171
215
|
flash[:error] = t('bigbluebutton_rails.rooms.errors.auth.failure')
|
172
|
-
render :
|
216
|
+
render :external, :status => :unauthorized
|
173
217
|
end
|
174
218
|
end
|
175
219
|
|
176
220
|
def running
|
177
|
-
@room = BigbluebuttonRoom.find_by_param(params[:id])
|
178
|
-
|
179
221
|
begin
|
180
222
|
@room.fetch_is_running?
|
181
223
|
rescue BigBlueButton::BigBlueButtonException => e
|
@@ -184,12 +226,9 @@ class Bigbluebutton::RoomsController < ApplicationController
|
|
184
226
|
else
|
185
227
|
render :json => { :running => "#{@room.is_running?}" }
|
186
228
|
end
|
187
|
-
|
188
229
|
end
|
189
230
|
|
190
231
|
def end
|
191
|
-
@room = BigbluebuttonRoom.find_by_param(params[:id])
|
192
|
-
|
193
232
|
error = false
|
194
233
|
begin
|
195
234
|
@room.fetch_is_running?
|
@@ -225,13 +264,21 @@ class Bigbluebutton::RoomsController < ApplicationController
|
|
225
264
|
end
|
226
265
|
|
227
266
|
def join_mobile
|
228
|
-
@
|
229
|
-
@join_url
|
230
|
-
|
267
|
+
@join_url = join_bigbluebutton_server_room_path(@server, @room, :mobile => '1')
|
268
|
+
@join_url.gsub!(/http:\/\//i, "bigbluebutton://")
|
269
|
+
|
270
|
+
# TODO: we can't use the mconf url because the mobile client scanning the qrcode is not
|
271
|
+
# logged. so we are using the full BBB url for now.
|
272
|
+
@qrcode_url = @room.join_url(bigbluebutton_user.name, bigbluebutton_role(@room))
|
273
|
+
@qrcode_url.gsub!("http://", "bigbluebutton://")
|
231
274
|
end
|
232
275
|
|
233
276
|
protected
|
234
277
|
|
278
|
+
def find_room
|
279
|
+
@room = BigbluebuttonRoom.find_by_param(params[:id])
|
280
|
+
end
|
281
|
+
|
235
282
|
def find_server
|
236
283
|
if params.has_key?(:server_id)
|
237
284
|
@server = BigbluebuttonServer.find_by_param(params[:server_id])
|
@@ -241,45 +288,19 @@ class Bigbluebutton::RoomsController < ApplicationController
|
|
241
288
|
end
|
242
289
|
|
243
290
|
def join_internal(username, role, wait_action)
|
244
|
-
|
245
291
|
begin
|
246
|
-
@room.
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
if role == :moderator
|
251
|
-
|
252
|
-
add_domain_to_logout_url(@room, request.protocol, request.host)
|
253
|
-
|
254
|
-
@room.send_create unless @room.is_running?
|
255
|
-
join_url = @room.join_url(username, role)
|
256
|
-
redirect_to(join_url)
|
257
|
-
|
258
|
-
# normal user only joins if the conference is running
|
259
|
-
# if it's not, wait for a moderator to create the conference
|
292
|
+
url = @room.perform_join(username, role, request)
|
293
|
+
unless url.nil?
|
294
|
+
url.gsub!(/http:\/\//i, "bigbluebutton://") if BigbluebuttonRails::value_to_boolean(params[:mobile])
|
295
|
+
redirect_to(url)
|
260
296
|
else
|
261
|
-
|
262
|
-
|
263
|
-
redirect_to(join_url)
|
264
|
-
else
|
265
|
-
flash[:error] = t('bigbluebutton_rails.rooms.errors.auth.not_running')
|
266
|
-
render :action => wait_action
|
267
|
-
end
|
297
|
+
flash[:error] = t('bigbluebutton_rails.rooms.errors.auth.not_running')
|
298
|
+
render wait_action
|
268
299
|
end
|
269
|
-
|
270
300
|
rescue BigBlueButton::BigBlueButtonException => e
|
271
301
|
flash[:error] = e.to_s
|
272
302
|
redirect_to request.referer
|
273
303
|
end
|
274
304
|
end
|
275
305
|
|
276
|
-
def add_domain_to_logout_url(room, protocol, host)
|
277
|
-
unless @room.logout_url.nil? or @room.logout_url =~ /^[a-z]+:\/\// # matches the protocol
|
278
|
-
unless @room.logout_url =~ /^[a-z0-9]+([\-\.]{ 1}[a-z0-9]+)*/ # matches the host domain
|
279
|
-
@room.logout_url = host + @room.logout_url
|
280
|
-
end
|
281
|
-
@room.logout_url = protocol + @room.logout_url
|
282
|
-
end
|
283
|
-
end
|
284
|
-
|
285
306
|
end
|