-
Notifications
You must be signed in to change notification settings - Fork 42
Expand file tree
/
Copy pathapidocs_controller.rb
More file actions
207 lines (201 loc) · 6.76 KB
/
apidocs_controller.rb
File metadata and controls
207 lines (201 loc) · 6.76 KB
1
2
3
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
# frozen_string_literal: true
module Api
module V8
class ApidocsController < ActionController::Base
include Swagger::Blocks
swagger_root do
key :swagger, '2.0'
info do
key :version, '8'
key :title, 'TMC API documentation'
key :description, 'TMC API documentation'
contact do
key :name, 'TestMyCode'
key :url, 'https://cs.helsinki.fi'
end
license do
key :name, 'GPLv2'
key :url, 'https://www.gnu.org/licenses/gpl-2.0.html'
end
end
tag do
key :name, 'api'
key :description, 'API operations'
end
security_definition :api_key do
key :type, :apiKey
key :name, :Authorization
key :in, :header
end
security do
key :api_key, []
end
parameter :path_organization_slug do
key :name, :organization_slug
key :in, :path
key :description, "Organization's slug"
key :required, true
key :type, :string
end
parameter :path_course_id do
key :name, :course_id
key :in, :path
key :description, "Course's id"
key :required, true
key :type, :integer
end
parameter :path_course_name do
key :name, :course_name
key :in, :path
key :description, "Course's name"
key :required, true
key :type, :string
end
parameter :path_user_id do
key :name, :user_id
key :in, :path
key :description, "User's id"
key :required, true
key :type, :integer
end
parameter :path_user_email do
key :name, :user_email
key :in, :path
key :description, "User's email"
key :required, true
key :type, :string
end
parameter :path_exercise_id do
key :name, :exercise_id
key :in, :path
key :description, "Exercise's id"
key :required, true
key :type, :integer
end
parameter :path_exercise_name do
key :name, :exercise_name
key :in, :path
key :description, "Exercise's name"
key :required, true
key :type, :string
end
parameter :path_submission_id do
key :name, :submission_id
key :in, :path
key :description, "Submission's id"
key :required, true
key :type, :integer
end
parameter :review_body do
key :name, 'review[review_body]'
key :in, :formData
key :description, "Review's body"
key :required, true
key :type, :string
end
parameter :points do
key :name, 'review[points]'
key :in, :formData
key :description, 'Points for submission'
key :type, :string
end
parameter :path_review_id do
key :name, :review_id
key :in, :path
key :description, "Review's id"
key :required, true
key :type, :integer
end
parameter :header_update_review do
key :name, 'review[review_body]'
key :in, :formData
key :description, 'Update review text'
key :required, false
key :type, :string
end
parameter :header_mark_review_as_read do
key :name, :mark_as_read
key :in, :formData
key :description, 'Mark review as read'
key :required, false
key :type, :string
end
parameter :header_mark_review_as_unread do
key :name, :mark_as_unread
key :in, :formData
key :description, 'Mark review as unread'
key :required, false
key :type, :string
end
response :error do
key :description, 'An error occurred'
schema do
key :title, :errors
key :description, 'A list of error messages'
key :type, :array
items do
key :type, :string
end
end
end
key :host, 'localhost:3000'
key :schemes, %w[http https]
key :consumes, ['application/json']
key :produces, ['application/json']
end
# A list of all classes that have swagger_* declarations.
# The order of the swagered_classes affects the order they are shown in swaggerUI
SWAGGERED_CLASSES = [
Api::V8::UsersController,
Api::V8::CoursesController,
Api::V8::Courses::PointsController,
Api::V8::Courses::SubmissionsController,
Api::V8::Courses::ExercisesController,
Api::V8::Courses::Exercises::PointsController,
Api::V8::Courses::Exercises::Users::PointsController,
Api::V8::Courses::Submissions::LastHourController,
Api::V8::Courses::Users::PointsController,
Api::V8::Courses::Users::SubmissionsController,
Api::V8::Exercises::Users::SubmissionsController,
Api::V8::OrganizationsController,
Api::V8::Organizations::CoursesController,
Api::V8::Organizations::Courses::PointsController,
Api::V8::Organizations::Courses::SubmissionsController,
Api::V8::Organizations::Courses::ExercisesController,
Api::V8::Organizations::Courses::StudyrightEligibilityController,
Api::V8::Organizations::Courses::Exercises::PointsController,
Api::V8::Organizations::Courses::Exercises::Users::PointsController,
Api::V8::Organizations::Courses::Users::PointsController,
Api::V8::Organizations::Courses::Users::SubmissionsController,
Api::V8::Organizations::MembershipsController,
Api::V8::Users::AssistantshipsController,
Api::V8::Users::BasicInfoByUsernamesController,
Api::V8::Users::BasicInfoByEmailsController,
Api::V8::Users::TeachershipsController,
Api::V8::Core::CoursesController,
Api::V8::Core::Courses::ReviewsController,
Api::V8::Core::Courses::UnlocksController,
Api::V8::Core::ExercisesController,
Api::V8::Core::Exercises::DetailsController,
Api::V8::Core::Exercises::SolutionsController,
Api::V8::Core::Exercises::SubmissionsController,
Api::V8::Core::Organizations::CoursesController,
Api::V8::Core::SubmissionsController,
Api::V8::Core::Submissions::FeedbackController,
Api::V8::Core::Submissions::ReviewsController,
AvailablePoint,
AwardedPoint,
Course,
Exercise,
Organization,
Review,
Submission,
User,
self
].freeze
def index
render json: Swagger::Blocks.build_root_json(SWAGGERED_CLASSES)
end
end
end
end