module BigbluebuttonRails::APIControllerMethods
Public Class Methods
included(base)
click to toggle source
# File lib/bigbluebutton_rails/api_controller_methods.rb, line 4 def self.included(base) base.class_eval do def map_sort(param, default, allowed=[]) return default if param.blank? || param.empty? param.split(',').inject('') do |memo, obj| if obj[0] == '-' attr = obj.gsub(/^-/, '') order = 'DESC' else attr = obj order = 'ASC' end if allowed.blank? || allowed.include?(attr) memo = "#{memo}," unless memo.blank? memo = "#{memo} #{attr} #{order}" else memo end end end def validate_pagination param = params[:page] if param if param[:size] size = Integer(param[:size]) rescue nil return error_invalid_pagination if size.nil? || size < 1 end if param[:number] page = Integer(param[:number]) rescue nil return error_invalid_pagination if page.nil? || page < 1 end end end def map_pagination(param, default) limit = default if param && param[:size] limit = Integer(param[:size]) rescue nil end limit = default if !limit || limit < 1 offset = 0 page = 1 if param && param[:number] page = Integer(param[:number]) rescue nil page ||= 1 offset = (page-1)*limit offset = 0 if offset < 0 end [limit, offset, page] end def map_pagination_links(current) original = request.original_url uri = URI.parse(original) query = Rack::Utils.parse_query(uri.query) uri.query = Rack::Utils.build_query(query) # just to encode the params links = { self: uri.to_s } if current - 1 > 0 query["page[number]"] = current - 1 uri.query = Rack::Utils.build_query(query) links.merge!({ prev: uri.to_s }) end query["page[number]"] = current + 1 uri.query = Rack::Utils.build_query(query) links.merge!({ next: uri.to_s }) query["page[number]"] = 1 uri.query = Rack::Utils.build_query(query) links.merge!({ first: uri.to_s }) links end def map_search(param) if param && param[:terms] param[:terms].split(',').map(&:strip) end end def error_room_not_found msg = t('bigbluebutton_rails.api.errors.room_not_found.msg') title = t('bigbluebutton_rails.api.errors.room_not_found.title') @errors = [BigbluebuttonRails::APIError.new(msg, 404, title)] render 'bigbluebutton/api/error' end def error_room_not_running msg = t('bigbluebutton_rails.api.errors.room_not_running.msg') title = t('bigbluebutton_rails.api.errors.room_not_running.title') @errors = [BigbluebuttonRails::APIError.new(msg, 400, title)] render 'bigbluebutton/api/error' end def error_missing_params msg = t('bigbluebutton_rails.api.errors.missing_params.msg') title = t('bigbluebutton_rails.api.errors.missing_params.title') @errors = [BigbluebuttonRails::APIError.new(msg, 400, title)] render 'bigbluebutton/api/error' end def error_forbidden msg = t('bigbluebutton_rails.api.errors.forbidden.msg') title = t('bigbluebutton_rails.api.errors.forbidden.title') @errors = [BigbluebuttonRails::APIError.new(msg, 403, title)] render 'bigbluebutton/api/error' end def error_invalid_key msg = t('bigbluebutton_rails.api.errors.invalid_key.msg') title = t('bigbluebutton_rails.api.errors.invalid_key.title') @errors = [BigbluebuttonRails::APIError.new(msg, 403, title)] render 'bigbluebutton/api/error' end def error_invalid_pagination msg = t('bigbluebutton_rails.api.errors.invalid_pagination.msg') title = t('bigbluebutton_rails.api.errors.invalid_pagination.title') @errors = [BigbluebuttonRails::APIError.new(msg, 400, title)] render 'bigbluebutton/api/error' end end end
Public Instance Methods
error_forbidden()
click to toggle source
# File lib/bigbluebutton_rails/api_controller_methods.rb, line 113 def error_forbidden msg = t('bigbluebutton_rails.api.errors.forbidden.msg') title = t('bigbluebutton_rails.api.errors.forbidden.title') @errors = [BigbluebuttonRails::APIError.new(msg, 403, title)] render 'bigbluebutton/api/error' end
error_invalid_key()
click to toggle source
# File lib/bigbluebutton_rails/api_controller_methods.rb, line 120 def error_invalid_key msg = t('bigbluebutton_rails.api.errors.invalid_key.msg') title = t('bigbluebutton_rails.api.errors.invalid_key.title') @errors = [BigbluebuttonRails::APIError.new(msg, 403, title)] render 'bigbluebutton/api/error' end
error_invalid_pagination()
click to toggle source
# File lib/bigbluebutton_rails/api_controller_methods.rb, line 127 def error_invalid_pagination msg = t('bigbluebutton_rails.api.errors.invalid_pagination.msg') title = t('bigbluebutton_rails.api.errors.invalid_pagination.title') @errors = [BigbluebuttonRails::APIError.new(msg, 400, title)] render 'bigbluebutton/api/error' end
error_missing_params()
click to toggle source
# File lib/bigbluebutton_rails/api_controller_methods.rb, line 106 def error_missing_params msg = t('bigbluebutton_rails.api.errors.missing_params.msg') title = t('bigbluebutton_rails.api.errors.missing_params.title') @errors = [BigbluebuttonRails::APIError.new(msg, 400, title)] render 'bigbluebutton/api/error' end
error_room_not_found()
click to toggle source
# File lib/bigbluebutton_rails/api_controller_methods.rb, line 92 def error_room_not_found msg = t('bigbluebutton_rails.api.errors.room_not_found.msg') title = t('bigbluebutton_rails.api.errors.room_not_found.title') @errors = [BigbluebuttonRails::APIError.new(msg, 404, title)] render 'bigbluebutton/api/error' end
error_room_not_running()
click to toggle source
# File lib/bigbluebutton_rails/api_controller_methods.rb, line 99 def error_room_not_running msg = t('bigbluebutton_rails.api.errors.room_not_running.msg') title = t('bigbluebutton_rails.api.errors.room_not_running.title') @errors = [BigbluebuttonRails::APIError.new(msg, 400, title)] render 'bigbluebutton/api/error' end
map_pagination(param, default)
click to toggle source
# File lib/bigbluebutton_rails/api_controller_methods.rb, line 41 def map_pagination(param, default) limit = default if param && param[:size] limit = Integer(param[:size]) rescue nil end limit = default if !limit || limit < 1 offset = 0 page = 1 if param && param[:number] page = Integer(param[:number]) rescue nil page ||= 1 offset = (page-1)*limit offset = 0 if offset < 0 end [limit, offset, page] end
map_pagination_links(current)
click to toggle source
# File lib/bigbluebutton_rails/api_controller_methods.rb, line 60 def map_pagination_links(current) original = request.original_url uri = URI.parse(original) query = Rack::Utils.parse_query(uri.query) uri.query = Rack::Utils.build_query(query) # just to encode the params links = { self: uri.to_s } if current - 1 > 0 query["page[number]"] = current - 1 uri.query = Rack::Utils.build_query(query) links.merge!({ prev: uri.to_s }) end query["page[number]"] = current + 1 uri.query = Rack::Utils.build_query(query) links.merge!({ next: uri.to_s }) query["page[number]"] = 1 uri.query = Rack::Utils.build_query(query) links.merge!({ first: uri.to_s }) links end
map_search(param)
click to toggle source
# File lib/bigbluebutton_rails/api_controller_methods.rb, line 86 def map_search(param) if param && param[:terms] param[:terms].split(',').map(&:strip) end end
map_sort(param, default, allowed=[])
click to toggle source
# File lib/bigbluebutton_rails/api_controller_methods.rb, line 7 def map_sort(param, default, allowed=[]) return default if param.blank? || param.empty? param.split(',').inject('') do |memo, obj| if obj[0] == '-' attr = obj.gsub(/^-/, '') order = 'DESC' else attr = obj order = 'ASC' end if allowed.blank? || allowed.include?(attr) memo = "#{memo}," unless memo.blank? memo = "#{memo} #{attr} #{order}" else memo end end end
validate_pagination()
click to toggle source
# File lib/bigbluebutton_rails/api_controller_methods.rb, line 27 def validate_pagination param = params[:page] if param if param[:size] size = Integer(param[:size]) rescue nil return error_invalid_pagination if size.nil? || size < 1 end if param[:number] page = Integer(param[:number]) rescue nil return error_invalid_pagination if page.nil? || page < 1 end end end