4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
# 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
param = params[:page]
if param
if param[:size]
size = Integer(param[:size]) rescue nil
return if size.nil? || size < 1
end
if param[:number]
page = Integer(param[:number]) rescue nil
return if page.nil? || page < 1
end
end
end
def (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 (current)
original = request.original_url
uri = URI.parse(original)
query = Rack::Utils.parse_query(uri.query)
uri.query = Rack::Utils.build_query(query)
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
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
|