bigbluebutton_rails 1.4.0 → 2.0.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.
Files changed (125) hide show
  1. checksums.yaml +7 -0
  2. data/.ruby-version +1 -1
  3. data/.travis.yml +10 -1
  4. data/CHANGELOG.md +259 -0
  5. data/Gemfile +14 -19
  6. data/Gemfile.lock +194 -188
  7. data/README.md +416 -0
  8. data/Rakefile +12 -12
  9. data/TODO.md +13 -0
  10. data/app/controllers/bigbluebutton/playback_types_controller.rb +44 -0
  11. data/app/controllers/bigbluebutton/recordings_controller.rb +17 -10
  12. data/app/controllers/bigbluebutton/rooms_controller.rb +65 -36
  13. data/app/controllers/bigbluebutton/servers_controller.rb +12 -8
  14. data/app/models/bigbluebutton_metadata.rb +1 -1
  15. data/app/models/bigbluebutton_playback_format.rb +22 -1
  16. data/app/models/bigbluebutton_playback_type.rb +29 -0
  17. data/app/models/bigbluebutton_recording.rb +38 -19
  18. data/app/models/bigbluebutton_room.rb +150 -73
  19. data/app/models/bigbluebutton_room_options.rb +10 -7
  20. data/app/models/bigbluebutton_server.rb +69 -13
  21. data/app/models/bigbluebutton_server_config.rb +49 -0
  22. data/app/views/bigbluebutton/recordings/_form.html.erb +4 -0
  23. data/app/views/bigbluebutton/recordings/_recordings.html.erb +10 -3
  24. data/app/views/bigbluebutton/rooms/_form.html.erb +18 -6
  25. data/app/views/bigbluebutton/rooms/_rooms.html.erb +6 -3
  26. data/app/views/bigbluebutton/rooms/invite.html.erb +5 -5
  27. data/app/views/bigbluebutton/rooms/show.html.erb +18 -6
  28. data/app/views/bigbluebutton/servers/_form.html.erb +1 -1
  29. data/app/views/bigbluebutton/servers/show.html.erb +5 -0
  30. data/app/workers/bigbluebutton_finish_meetings.rb +11 -0
  31. data/app/workers/bigbluebutton_update_recordings.rb +11 -0
  32. data/app/workers/bigbluebutton_update_server_configs.rb +18 -0
  33. data/bigbluebutton_rails.gemspec +8 -7
  34. data/config/locales/en.yml +52 -7
  35. data/config/locales/pt-br.yml +162 -0
  36. data/config/resque/resque.rake +27 -0
  37. data/config/resque/workers_schedule.yml +17 -0
  38. data/lib/bigbluebutton_rails.rb +30 -2
  39. data/lib/bigbluebutton_rails/background_tasks.rb +31 -0
  40. data/lib/bigbluebutton_rails/controller_methods.rb +12 -8
  41. data/lib/bigbluebutton_rails/dial_number.rb +48 -0
  42. data/lib/bigbluebutton_rails/rails/routes.rb +9 -2
  43. data/lib/bigbluebutton_rails/utils.rb +9 -2
  44. data/lib/bigbluebutton_rails/version.rb +1 -1
  45. data/lib/generators/bigbluebutton_rails/install_generator.rb +0 -8
  46. data/lib/generators/bigbluebutton_rails/templates/migration.rb +28 -6
  47. data/lib/generators/bigbluebutton_rails/templates/migration_2_0_0.rb +56 -0
  48. data/lib/tasks/bigbluebutton_rails/meetings.rake +1 -13
  49. data/lib/tasks/bigbluebutton_rails/recordings.rake +1 -12
  50. data/lib/tasks/bigbluebutton_rails/server_configs.rake +10 -0
  51. data/spec/bigbluebutton_rails_spec.rb +0 -13
  52. data/spec/controllers/bigbluebutton/playback_types_controller_spec.rb +76 -0
  53. data/spec/controllers/bigbluebutton/recordings_controller_spec.rb +109 -37
  54. data/spec/controllers/bigbluebutton/rooms_controller_exception_handling_spec.rb +1 -0
  55. data/spec/controllers/bigbluebutton/rooms_controller_json_responses_spec.rb +27 -3
  56. data/spec/controllers/bigbluebutton/rooms_controller_spec.rb +338 -77
  57. data/spec/controllers/bigbluebutton/servers_controller_json_responses_spec.rb +8 -0
  58. data/spec/controllers/bigbluebutton/servers_controller_spec.rb +182 -47
  59. data/spec/factories/bigbluebutton_meeting.rb +2 -2
  60. data/spec/factories/bigbluebutton_playback_format.rb +2 -2
  61. data/spec/factories/bigbluebutton_playback_type.rb +7 -0
  62. data/spec/factories/bigbluebutton_recording.rb +8 -0
  63. data/spec/factories/bigbluebutton_room.rb +10 -3
  64. data/spec/factories/bigbluebutton_server.rb +6 -1
  65. data/spec/factories/bigbluebutton_server_config.rb +6 -0
  66. data/spec/generators/install_generator_spec.rb +0 -16
  67. data/spec/lib/bigbluebutton_rails/background_tasks_spec.rb +61 -0
  68. data/spec/lib/bigbluebutton_rails/dial_number_spec.rb +78 -0
  69. data/spec/lib/bigbluebutton_rails/utils_spec.rb +56 -0
  70. data/spec/lib/tasks/meetings_rake_spec.rb +14 -1
  71. data/spec/lib/tasks/recordings_rake_spec.rb +14 -1
  72. data/spec/models/bigbluebutton_meeting_db_spec.rb +3 -3
  73. data/spec/models/bigbluebutton_meeting_spec.rb +4 -4
  74. data/spec/models/bigbluebutton_playback_format_db_spec.rb +0 -1
  75. data/spec/models/bigbluebutton_playback_format_spec.rb +75 -4
  76. data/spec/models/bigbluebutton_playback_type_db_spec.rb +14 -0
  77. data/spec/models/bigbluebutton_playback_type_spec.rb +76 -0
  78. data/spec/models/bigbluebutton_recording_db_spec.rb +3 -1
  79. data/spec/models/bigbluebutton_recording_spec.rb +234 -58
  80. data/spec/models/bigbluebutton_room_db_spec.rb +8 -6
  81. data/spec/models/bigbluebutton_room_options_db_spec.rb +1 -0
  82. data/spec/models/bigbluebutton_room_options_spec.rb +137 -38
  83. data/spec/models/bigbluebutton_room_spec.rb +540 -153
  84. data/spec/models/bigbluebutton_server_config_spec.rb +115 -0
  85. data/spec/models/bigbluebutton_server_spec.rb +180 -23
  86. data/spec/rails_app/app/controllers/my_playback_types_controller.rb +7 -0
  87. data/spec/rails_app/app/views/frontpage/show.html.erb +1 -0
  88. data/spec/rails_app/app/views/my_playback_types/index.html.erb +33 -0
  89. data/spec/rails_app/config/application.rb +0 -3
  90. data/spec/rails_app/config/database.yml.travis +10 -0
  91. data/spec/rails_app/config/environments/development.rb +1 -6
  92. data/spec/rails_app/config/environments/production.rb +2 -0
  93. data/spec/rails_app/config/environments/test.rb +2 -0
  94. data/spec/rails_app/config/routes.rb +5 -2
  95. data/spec/rails_app/db/seeds.rb +1 -1
  96. data/spec/rails_app/features/config.yml.example +3 -4
  97. data/spec/rails_app/features/join_rooms.feature +14 -14
  98. data/spec/rails_app/features/step_definitions/activity_monitor_servers_step.rb +2 -2
  99. data/spec/rails_app/features/step_definitions/create_rooms_steps.rb +4 -4
  100. data/spec/rails_app/features/step_definitions/destroy_rooms_steps.rb +2 -2
  101. data/spec/rails_app/features/step_definitions/join_rooms_steps.rb +10 -10
  102. data/spec/rails_app/features/step_definitions/web_steps.rb +2 -2
  103. data/spec/rails_app/features/support/configurations.rb +1 -1
  104. data/spec/rails_app/features/support/templates.rb +12 -12
  105. data/spec/rails_app/lib/tasks/db/populate.rake +19 -6
  106. data/spec/routing/bigbluebutton/custom_controllers_routing_spec.rb +1 -1
  107. data/spec/routing/bigbluebutton/recordings_only_routing_spec.rb +2 -2
  108. data/spec/routing/bigbluebutton/recordings_routing_spec.rb +2 -2
  109. data/spec/routing/bigbluebutton/rooms_only_routing_spec.rb +1 -1
  110. data/spec/routing/bigbluebutton/rooms_routing_spec.rb +15 -1
  111. data/spec/routing/bigbluebutton/servers_only_routing_spec.rb +1 -1
  112. data/spec/routing/bigbluebutton/servers_routing_spec.rb +1 -1
  113. data/spec/spec_helper.rb +23 -31
  114. data/spec/support/matchers/delegate_matcher.rb +8 -1
  115. data/spec/support/matchers/shoulda/respond_with_json_matcher.rb +2 -2
  116. data/spec/support/mocked_server.rb +2 -0
  117. data/spec/support/shared_contexts/rake.rb +23 -0
  118. data/spec/workers/bigbluebutton_finish_meetings_spec.rb +14 -0
  119. data/spec/workers/bigbluebutton_update_recordings_spec.rb +14 -0
  120. data/spec/workers/bigbluebutton_update_server_configs_spec.rb +47 -0
  121. metadata +70 -59
  122. data/CHANGELOG.rdoc +0 -111
  123. data/README.rdoc +0 -319
  124. data/TODO.rdoc +0 -16
  125. data/config/schedule.rb +0 -7
@@ -0,0 +1,31 @@
1
+ module BigbluebuttonRails
2
+
3
+ # Helper methods to execute tasks that run in resque and rake.
4
+ class BackgroundTasks
5
+
6
+ def self.finish_meetings
7
+ BigbluebuttonMeeting.where(running: true).find_each do |meeting|
8
+ Rails.logger.info "BackgroundTasks: Checking if the meeting has ended: #{meeting.inspect}"
9
+ if meeting.room and !meeting.room.fetch_is_running?
10
+ Rails.logger.info "BackgroundTasks: Setting meeting as ended: #{meeting.inspect}"
11
+ meeting.update_attributes(running: false)
12
+ end
13
+ end
14
+ end
15
+
16
+ def self.update_recordings
17
+ BigbluebuttonServer.find_each do |server|
18
+ begin
19
+ server.fetch_recordings
20
+ Rails.logger.info "BackgroundTasks: List of recordings from #{server.url} updated successfully"
21
+ rescue Exception => e
22
+ Rails.logger.info "BackgroundTasks: Failure fetching recordings from #{server.inspect}"
23
+ Rails.logger.info "BackgroundTasks: #{e.inspect}"
24
+ Rails.logger.info "BackgroundTasks: #{e.backtrace.join("\n")}"
25
+ end
26
+ end
27
+ end
28
+
29
+ end
30
+
31
+ end
@@ -29,12 +29,12 @@ module BigbluebuttonRails
29
29
  # Returns the role that the current user has in the room 'room'. Return values:
30
30
  # :moderator # the user has attendee permissions
31
31
  # :attendee # the user has moderator permissions
32
- # :password # the user must enter a password that will define his role
32
+ # :key # the user must enter a key that will define his role
33
33
  # nil # no role at all (the room is blocked to this user)
34
34
  #
35
35
  # Returning :moderator or :attendee means that the current user has access
36
36
  # to the room and has moderator or attendee privileges, respectively.
37
- # Returning :password indicates that the user must enter a password to define
37
+ # Returning :key indicates that the user must enter a key to define
38
38
  # his role in the room.
39
39
  # At last, returning nil means that the user cannot access access this room
40
40
  # at all. BigbluebuttonRails::RoomController will thrown an exception of the
@@ -51,7 +51,7 @@ module BigbluebuttonRails
51
51
  # You may want to redefine this method in your application to define
52
52
  # real roles to the users. By default, if the room is not private and the user
53
53
  # is logged, he will have moderator permissions. Otherwise, he must enter
54
- # a password. Redefine it in your ApplicationController to make it available
54
+ # a key. Redefine it in your ApplicationController to make it available
55
55
  # to all controllers. For example:
56
56
  #
57
57
  # def bigbluebutton_role(@room)
@@ -63,7 +63,7 @@ module BigbluebuttonRails
63
63
  # # only friends are allowed to enter
64
64
  # elsif @room.owner.friends.include? bigbluebutton_user
65
65
  # if @room.private
66
- # :password # with password if the room is private
66
+ # :key # with key if the room is private
67
67
  # else
68
68
  # :attendee
69
69
  # end
@@ -77,7 +77,7 @@ module BigbluebuttonRails
77
77
  #
78
78
  def bigbluebutton_role(room)
79
79
  if room.private or bigbluebutton_user.nil?
80
- :password # ask for a password
80
+ :key # ask for a key
81
81
  else
82
82
  :moderator
83
83
  end
@@ -107,18 +107,22 @@ module BigbluebuttonRails
107
107
  end
108
108
 
109
109
  # Method called right before a meeting is created to get options that should receive
110
- # priority over the options saved in the database when sending the <tt>create</tt>API
111
- # call.
110
+ # priority over the options saved in the database when sending the <tt>create</tt>
111
+ # API call.
112
112
  # The parameter 'room' is the BigbluebuttonRoom where the meeting is about
113
113
  # to be created.
114
114
  #
115
- # By default, all options send in a 'create' API call are taken from the
115
+ # By default, all options sent in a 'create' API call are taken from the
116
116
  # options saved in the database for the target room. This includes, for example,
117
117
  # the meeting's name, dial number, welcome message, if it should be recorded or not.
118
118
  # This method can return a hash of options to force some of these options to be
119
119
  # different from what is stored in the database. For example, if a room should *not* be
120
120
  # recorded in case unprivileged users create it, this method can return <tt>{ record: false }</tt>
121
121
  # to force the <tt>record</tt> flag to be false.
122
+ # The keys used in this hash should correspond to the attributes sent in the <tt>CREATE</tt>
123
+ # API call, not the the attributes stored in the database! See the method
124
+ # <tt>create_meeting</tt> in the gem <tt>bigbluebutton-api-ruby</tt> for examples.
125
+ # (https://github.com/mconf/bigbluebutton-api-ruby/blob/master/lib/bigbluebutton_api.rb#L156)
122
126
  #
123
127
  # You may want to override this in your ApplicationController to implement your own
124
128
  # own logic, if needed. For example:
@@ -0,0 +1,48 @@
1
+ module BigbluebuttonRails
2
+ class DialNumber
3
+
4
+ # Generates a random dial number based on the `pattern` (e.g. '123x-xxxx')
5
+ def self.randomize(pattern=nil, opt={})
6
+ return nil if pattern.nil?
7
+ sym = get_symbol(opt)
8
+ size = pattern.count(sym)
9
+
10
+ # e.g. random from 0 to 999 if the pattern has 3 x's
11
+ num = SecureRandom.random_number((10 ** size) - 1)
12
+
13
+ get_dial_number_from_ordinal(num, pattern, opt)
14
+ end
15
+
16
+ def self.get_dial_number_from_ordinal(ordinal, pattern=nil, opt={})
17
+ return nil if pattern.nil?
18
+ sym = get_symbol(opt)
19
+
20
+ number_size = pattern.count(sym)
21
+ ordinal_str = ordinal.to_s.rjust(number_size,'0').reverse
22
+ dial_number = pattern.reverse
23
+
24
+ ordinal_str.each_char do |n|
25
+ dial_number.sub!(sym, n)
26
+ end
27
+
28
+ dial_number.reverse
29
+ end
30
+
31
+ def self.get_ordinal_from_dial_number(number, pattern=nil, opt={})
32
+ return nil if pattern.nil?
33
+ sym = get_symbol(opt)
34
+
35
+ regexp = Regexp.new(pattern.gsub(sym, '([0-9])')) # make a pattern to capture only the numbers
36
+ match = regexp.match(number) # extract only the numbers
37
+
38
+ # join the numbers and turn then into an ordinal integer
39
+ ordinal = match[1, match.size].join.to_i if match.present?
40
+
41
+ ordinal
42
+ end
43
+
44
+ def self.get_symbol opt
45
+ opt[:symbol] || 'x'
46
+ end
47
+ end
48
+ end
@@ -43,7 +43,8 @@ module ActionDispatch::Routing
43
43
  # bigbluebutton_routes :default,
44
44
  # :controllers => { :servers => "custom_servers",
45
45
  # :rooms => "custom_rooms",
46
- # :recordings => "custom_recordings" }
46
+ # :recordings => "custom_recordings",
47
+ # :playback_types => "custom_playback_types }
47
48
  #
48
49
  # ==== Room matchers
49
50
  #
@@ -84,13 +85,14 @@ module ActionDispatch::Routing
84
85
  options = params.extract_options!
85
86
  options_scope = options.has_key?(:scope) ? options[:scope] : BigbluebuttonRails.routing_scope
86
87
  options_as = options.has_key?(:as) ? options[:as] : options_scope
87
- options_only = options.has_key?(:only) ? options[:only] : ["servers", "rooms", "recordings"]
88
+ options_only = options.has_key?(:only) ? options[:only] : ["servers", "rooms", "recordings", "playback_types"]
88
89
  BigbluebuttonRails.set_controllers(options[:controllers])
89
90
 
90
91
  scope options_scope, :as => options_as do
91
92
  add_routes_for_servers if options_only.include?("servers")
92
93
  add_routes_for_rooms if options_only.include?("rooms")
93
94
  add_routes_for_recordings if options_only.include?("recordings")
95
+ add_routes_for_playback_types if options_only.include?("playback_types")
94
96
  end
95
97
  end
96
98
 
@@ -109,6 +111,7 @@ module ActionDispatch::Routing
109
111
  post :join
110
112
  post :fetch_recordings
111
113
  get :recordings
114
+ post :generate_dial_number
112
115
  end
113
116
  end
114
117
  end
@@ -137,5 +140,9 @@ module ActionDispatch::Routing
137
140
  end
138
141
  end
139
142
 
143
+ def add_routes_for_playback_types #:nodoc:
144
+ resources :playback_types, :only => [:update],
145
+ :controller => BigbluebuttonRails.controllers[:playback_types]
146
+ end
140
147
  end
141
148
  end
@@ -1,8 +1,15 @@
1
+ require 'browser'
2
+
1
3
  module BigbluebuttonRails
2
4
 
3
- # just a wrapper around the Rails method to convert values to boolean
5
+ # Returns whether the current client should use the mobile client
6
+ # or the desktop client.
7
+ def self.use_mobile_client?(browser)
8
+ browser.mobile? || browser.tablet?
9
+ end
10
+
11
+ # Just a wrapper around the Rails method to convert values to boolean
4
12
  def self.value_to_boolean(value)
5
13
  ActiveRecord::ConnectionAdapters::Column.value_to_boolean(value)
6
14
  end
7
-
8
15
  end
@@ -1,3 +1,3 @@
1
1
  module BigbluebuttonRails
2
- VERSION = "1.4.0".freeze
2
+ VERSION = "2.0.0".freeze
3
3
  end
@@ -26,14 +26,6 @@ module BigbluebuttonRails
26
26
  end
27
27
  end
28
28
 
29
- def create_schedule
30
- unless options.migration_only?
31
- create_file 'config/schedule.rb'
32
- content = File.read(File.expand_path("../../../../config/schedule.rb", __FILE__))
33
- append_file 'config/schedule.rb', "\n#{content}" unless behavior == :revoke
34
- end
35
- end
36
-
37
29
  protected
38
30
 
39
31
  def migration_path
@@ -16,8 +16,8 @@ class CreateBigbluebuttonRails < ActiveRecord::Migration
16
16
  t.string :owner_type
17
17
  t.string :meetingid
18
18
  t.string :name
19
- t.string :attendee_password
20
- t.string :moderator_password
19
+ t.string :attendee_key
20
+ t.string :moderator_key
21
21
  t.string :welcome_msg
22
22
  t.string :logout_url
23
23
  t.string :voice_bridge
@@ -26,13 +26,18 @@ class CreateBigbluebuttonRails < ActiveRecord::Migration
26
26
  t.boolean :private, :default => false
27
27
  t.boolean :external, :default => false
28
28
  t.string :param
29
- t.boolean :record, :default => false
29
+ t.boolean :record_meeting, :default => false
30
30
  t.integer :duration, :default => 0
31
+ t.string :attendee_api_password
32
+ t.string :moderator_api_password
33
+ t.decimal :create_time, precision: 14, scale: 0
34
+ t.string :moderator_only_message
35
+ t.boolean :auto_start_recording, default: false
36
+ t.boolean :allow_start_stop_recording, default: true
31
37
  t.timestamps
32
38
  end
33
39
  add_index :bigbluebutton_rooms, :server_id
34
40
  add_index :bigbluebutton_rooms, :meetingid, :unique => true
35
- add_index :bigbluebutton_rooms, :voice_bridge, :unique => true
36
41
 
37
42
  create_table :bigbluebutton_room_options do |t|
38
43
  t.integer :room_id
@@ -40,6 +45,7 @@ class CreateBigbluebuttonRails < ActiveRecord::Migration
40
45
  t.boolean :presenter_share_only
41
46
  t.boolean :auto_start_video
42
47
  t.boolean :auto_start_audio
48
+ t.string :background
43
49
  t.timestamps
44
50
  end
45
51
  add_index :bigbluebutton_room_options, :room_id
@@ -56,6 +62,7 @@ class CreateBigbluebuttonRails < ActiveRecord::Migration
56
62
  t.datetime :end_time
57
63
  t.boolean :available, :default => true
58
64
  t.string :description
65
+ t.integer :size, limit: 8, default: 0
59
66
  t.timestamps
60
67
  end
61
68
  add_index :bigbluebutton_recordings, :room_id
@@ -71,12 +78,19 @@ class CreateBigbluebuttonRails < ActiveRecord::Migration
71
78
 
72
79
  create_table :bigbluebutton_playback_formats do |t|
73
80
  t.integer :recording_id
74
- t.string :format_type
81
+ t.integer :playback_type_id
75
82
  t.string :url
76
83
  t.integer :length
77
84
  t.timestamps
78
85
  end
79
86
 
87
+ create_table :bigbluebutton_playback_types do |t|
88
+ t.string :identifier
89
+ t.boolean :visible, :default => false
90
+ t.boolean :default, :default => false
91
+ t.timestamps
92
+ end
93
+
80
94
  create_table :bigbluebutton_meetings do |t|
81
95
  t.integer :server_id
82
96
  t.integer :room_id
@@ -84,22 +98,30 @@ class CreateBigbluebuttonRails < ActiveRecord::Migration
84
98
  t.string :name
85
99
  t.datetime :start_time
86
100
  t.boolean :running, :default => false
87
- t.boolean :record, :default => false
101
+ t.boolean :recorded, :default => false
88
102
  t.integer :creator_id
89
103
  t.string :creator_name
90
104
  t.timestamps
91
105
  end
92
106
  add_index :bigbluebutton_meetings, [:meetingid, :start_time], :unique => true
107
+
108
+ create_table :bigbluebutton_server_configs do |t|
109
+ t.integer :server_id
110
+ t.text :available_layouts
111
+ t.timestamps
112
+ end
93
113
  end
94
114
 
95
115
  def self.down
96
116
  drop_table :bigbluebutton_meetings
97
117
  drop_table :bigbluebutton_playback_formats
118
+ drop_table :bigbluebutton_playback_types
98
119
  drop_table :bigbluebutton_metadata
99
120
  drop_table :bigbluebutton_recordings
100
121
  drop_table :bigbluebutton_rooms
101
122
  drop_table :bigbluebutton_rooms_options
102
123
  drop_table :bigbluebutton_servers
124
+ drop_table :bigbluebutton_server_configs
103
125
  end
104
126
 
105
127
  end
@@ -0,0 +1,56 @@
1
+ class BigbluebuttonRailsTo200 < ActiveRecord::Migration
2
+
3
+ def self.up
4
+ create_table :bigbluebutton_playback_types do |t|
5
+ t.string :identifier
6
+ t.boolean :visible, default: false
7
+ t.boolean :default, default: false
8
+ t.timestamps
9
+ end
10
+
11
+ rename_column :bigbluebutton_rooms, :record, :record_meeting
12
+ rename_column :bigbluebutton_meetings, :record, :recorded
13
+ rename_column :bigbluebutton_rooms, :attendee_password, :attendee_key
14
+ rename_column :bigbluebutton_rooms, :moderator_password, :moderator_key
15
+ add_column :bigbluebutton_rooms, :moderator_api_password, :string
16
+ add_column :bigbluebutton_rooms, :attendee_api_password, :string
17
+ add_column :bigbluebutton_rooms, :create_time, :decimal, precision: 14, scale: 0
18
+ remove_column :bigbluebutton_playback_formats, :format_type
19
+ add_column :bigbluebutton_playback_formats, :playback_type_id, :integer
20
+ remove_index :bigbluebutton_rooms, :voice_bridge
21
+
22
+ create_table :bigbluebutton_server_configs do |t|
23
+ t.integer :server_id
24
+ t.text :available_layouts
25
+ t.timestamps
26
+ end
27
+
28
+ add_column :bigbluebutton_rooms, :moderator_only_message, :string
29
+ add_column :bigbluebutton_rooms, :auto_start_recording, :boolean, default: false
30
+ add_column :bigbluebutton_rooms, :allow_start_stop_recording, :boolean, default: true
31
+
32
+ add_column :bigbluebutton_room_options, :background, :string
33
+
34
+ add_column :bigbluebutton_recordings, :size, :integer, limit: 8, default: 0
35
+ end
36
+
37
+ def self.down
38
+ drop_table :bigbluebutton_playback_types
39
+ rename_column :bigbluebutton_rooms, :record_meeting, :record
40
+ rename_column :bigbluebutton_meetings, :recorded, :record
41
+ rename_column :bigbluebutton_rooms, :attendee_key, :attendee_password
42
+ rename_column :bigbluebutton_rooms, :moderator_key, :moderator_password
43
+ remove_column :bigbluebutton_rooms, :moderator_api_password
44
+ remove_column :bigbluebutton_rooms, :attendee_api_password
45
+ remove_column :bigbluebutton_rooms, :create_time
46
+ add_column :bigbluebutton_playback_formats, :format_type, :string
47
+ remove_column :bigbluebutton_playback_formats, :playback_type_id
48
+ add_index :bigbluebutton_rooms, :voice_bridge, :unique => true
49
+ drop_table :bigbluebutton_server_configs
50
+ remove_column :bigbluebutton_rooms, :moderator_only_message
51
+ remove_column :bigbluebutton_rooms, :auto_start_recording
52
+ remove_column :bigbluebutton_rooms, :allow_start_stop_recording
53
+ remove_column :bigbluebutton_room_options, :background
54
+ remove_column :bigbluebutton_recordings, :size, :integer
55
+ end
56
+ end
@@ -2,21 +2,9 @@ require 'bigbluebutton_exception'
2
2
 
3
3
  namespace :bigbluebutton_rails do
4
4
  namespace :meetings do
5
-
6
5
  desc "Checks all meetings with running==true to see if they have finished"
7
6
  task :finish => :environment do
8
- BigbluebuttonMeeting.where(:running => true).all.each do |meeting|
9
- begin
10
- puts "[rake bigbluebutton_rails:meetings:finish] Getting meeting info for: #{meeting.inspect}"
11
- meeting.room.fetch_meeting_info
12
- rescue BigBlueButton::BigBlueButtonException => e
13
-
14
- # it will fail with an exception if the meeting ended because the meetingID is not found
15
- puts "[rake bigbluebutton_rails:meetings:finish] Setting meeting as not running: #{meeting.inspect}"
16
- meeting.update_attributes(:running => false)
17
- end
18
- end
7
+ BigbluebuttonRails::BackgroundTasks.finish_meetings
19
8
  end
20
-
21
9
  end
22
10
  end
@@ -1,19 +1,8 @@
1
1
  namespace :bigbluebutton_rails do
2
2
  namespace :recordings do
3
-
4
3
  desc "Fetch recordings in all servers"
5
4
  task :update => :environment do
6
- BigbluebuttonServer.all.each do |server|
7
- begin
8
- server.fetch_recordings
9
- puts "[rake bigbluebutton_rails:recordings:update] List of recordings from #{server.url} updated successfully"
10
- rescue Exception => e
11
- puts "[rake bigbluebutton_rails:recordings:update] Failure fetching recordings from #{server.inspect}"
12
- puts e.inspect
13
- puts e.backtrace.join "\n"
14
- end
15
- end
5
+ BigbluebuttonRails::BackgroundTasks.update_recordings
16
6
  end
17
-
18
7
  end
19
8
  end
@@ -0,0 +1,10 @@
1
+ namespace :bigbluebutton_rails do
2
+ namespace :server_configs do
3
+ desc "Fetch server configs for all servers"
4
+ task :update => :environment do
5
+ BigbluebuttonServer.all.each do |s|
6
+ s.update_config
7
+ end
8
+ end
9
+ end
10
+ end
@@ -8,17 +8,4 @@ describe BigbluebuttonRails do
8
8
  it "should have be an engine" do
9
9
  BigbluebuttonRails::Engine.should be < Rails::Engine
10
10
  end
11
-
12
- describe "#value_to_boolean" do
13
- it { BigbluebuttonRails::value_to_boolean("true").should be_true }
14
- it { BigbluebuttonRails::value_to_boolean("1").should be_true }
15
- it { BigbluebuttonRails::value_to_boolean(1).should be_true }
16
- it { BigbluebuttonRails::value_to_boolean(true).should be_true }
17
- it { BigbluebuttonRails::value_to_boolean("t").should be_true }
18
- it { BigbluebuttonRails::value_to_boolean("false").should be_false }
19
- it { BigbluebuttonRails::value_to_boolean("0").should be_false }
20
- it { BigbluebuttonRails::value_to_boolean(0).should be_false }
21
- it { BigbluebuttonRails::value_to_boolean(false).should be_false }
22
- it { BigbluebuttonRails::value_to_boolean("f").should be_false }
23
- end
24
11
  end