1 /*
2  *  Make.org Core API
3  *  Copyright (C) 2018 Make.org
4  *
5  * This program is free software: you can redistribute it and/or modify
6  *  it under the terms of the GNU Affero General Public License as
7  *  published by the Free Software Foundation, either version 3 of the
8  *  License, or (at your option) any later version.
9  *
10  *  This program is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  *  GNU Affero General Public License for more details.
14  *
15  *  You should have received a copy of the GNU Affero General Public License
16  *  along with this program.  If not, see <https://www.gnu.org/licenses/>.
17  *
18  */
19 
20 package org.make.api.user
21 
22 import org.make.api.operation.OperationServiceComponent
23 import org.make.api.question.QuestionServiceComponent
24 import org.make.api.technical.MakeDirectives.MakeDirectivesDependencies
25 import org.make.api.user.DefaultPersistentUserServiceComponent.PersistentUser
26 import org.make.core._
27 import org.make.core.user._
28 
29 import akka.http.scaladsl.server._
30 import io.swagger.annotations._
31 
32 import javax.ws.rs.Path
33 
34 @Api(value = "Admin Dialogue Moderators")
35 @Path(value = "/admin/dialogue/moderators")
36 trait AdminDialogueModeratorApi extends Directives {
37 
38   @ApiOperation(
39     value = "get-dialogue-moderator",
40     httpMethod = "GET",
41     code = HttpCodes.OK,
42     authorizations = Array(
43       new Authorization(
44         value = "MakeApi",
45         scopes = Array(new AuthorizationScope(scope = "admin", description = "BO Admin"))
46       )
47     )
48   )
49   @ApiResponses(
50     value = Array(new ApiResponse(code = HttpCodes.OK, message = "Ok", response = classOf[DialogueModerator.Response]))
51   )
52   @ApiImplicitParams(
53     value = Array(
54       new ApiImplicitParam(
55         name = "moderatorId",
56         paramType = "path",
57         dataType = "string",
58         example = "11111111-2222-3333-4444-555555555555"
59       )
60     )
61   )
62   @Path(value = "/{moderatorId}")
63   def getDialogueModerator: Route
64 
65   @ApiOperation(
66     value = "get-dialogue-moderators",
67     httpMethod = "GET",
68     code = HttpCodes.OK,
69     authorizations = Array(
70       new Authorization(
71         value = "MakeApi",
72         scopes = Array(new AuthorizationScope(scope = "admin", description = "BO Admin"))
73       )
74     )
75   )
76   @ApiImplicitParams(
77     value = Array(
78       new ApiImplicitParam(
79         name = "_start",
80         paramType = "query",
81         dataType = "int",
82         allowableValues = "range[0, infinity]"
83       ),
84       new ApiImplicitParam(
85         name = "_end",
86         paramType = "query",
87         dataType = "int",
88         allowableValues = "range[0, infinity]"
89       ),
90       new ApiImplicitParam(
91         name = "_sort",
92         paramType = "query",
93         dataType = "string",
94         allowableValues = PersistentUser.swaggerAllowableValues
95       ),
96       new ApiImplicitParam(
97         name = "_order",
98         paramType = "query",
99         dataType = "string",
100         allowableValues = Order.swaggerAllowableValues
101       ),
102       new ApiImplicitParam(name = "id", paramType = "query", dataType = "string", allowMultiple = true),
103       new ApiImplicitParam(name = "email", paramType = "query", dataType = "string"),
104       new ApiImplicitParam(name = "firstName", paramType = "query", dataType = "string")
105     )
106   )
107   @ApiResponses(
108     value =
109       Array(new ApiResponse(code = HttpCodes.OK, message = "Ok", response = classOf[Array[DialogueModerator.Response]]))
110   )
111   @Path(value = "/")
112   def getDialogueModerators: Route
113 
114   @ApiOperation(
115     value = "create-dialogue-moderator",
116     httpMethod = "POST",
117     code = HttpCodes.OK,
118     authorizations = Array(
119       new Authorization(
120         value = "MakeApi",
121         scopes = Array(new AuthorizationScope(scope = "admin", description = "BO Admin"))
122       )
123     )
124   )
125   @ApiImplicitParams(
126     value = Array(
127       new ApiImplicitParam(
128         value = "body",
129         paramType = "body",
130         dataType = "org.make.api.user.EventScopedModerator.Request.Create"
131       )
132     )
133   )
134   @ApiResponses(
135     value = Array(new ApiResponse(code = HttpCodes.OK, message = "Ok", response = classOf[DialogueModerator.Response]))
136   )
137   @Path(value = "/")
138   def createDialogueModerator: Route
139 
140   @ApiOperation(
141     value = "update-dialogue-moderator",
142     httpMethod = "PUT",
143     code = HttpCodes.OK,
144     authorizations = Array(
145       new Authorization(
146         value = "MakeApi",
147         scopes = Array(
148           new AuthorizationScope(scope = "admin", description = "BO Admin"),
149           new AuthorizationScope(scope = "moderator", description = "BO Moderator")
150         )
151       )
152     )
153   )
154   @ApiImplicitParams(
155     value = Array(
156       new ApiImplicitParam(name = "moderatorId", paramType = "path", dataType = "string"),
157       new ApiImplicitParam(
158         value = "body",
159         paramType = "body",
160         dataType = "org.make.api.user.EventScopedModerator.Request.Update"
161       )
162     )
163   )
164   @ApiResponses(
165     value = Array(new ApiResponse(code = HttpCodes.OK, message = "Ok", response = classOf[DialogueModerator.Response]))
166   )
167   @Path(value = "/{moderatorId}")
168   def updateDialogueModerator: Route
169 
170   def routes: Route =
171     getDialogueModerator ~ getDialogueModerators ~ createDialogueModerator ~ updateDialogueModerator
172 }
173 
174 trait AdminDialogueModeratorApiComponent {
175   def adminDialogueModeratorApi: AdminDialogueModeratorApi
176 }
177 
178 trait DefaultAdminDialogueModeratorApiComponent
179     extends AdminDialogueModeratorApiComponent
180     with DefaultEventScopedModeratorApiComponent {
181 
182   this: MakeDirectivesDependencies
183     with UserServiceComponent
184     with PersistentUserServiceComponent
185     with QuestionServiceComponent
186     with OperationServiceComponent =>
187 
188   override lazy val adminDialogueModeratorApi: AdminDialogueModeratorApi = new DefaultAdminDialogueModeratorApi
189 
190   class DefaultAdminDialogueModeratorApi extends AdminDialogueModeratorApi {
191 
192     private val base: EventScopedModeratorApi =
193       new DefaultEventScopedModeratorApi(Role.RoleDialogueModerator, "dialogue", "DialogueModerator")
194 
195     override def getDialogueModerator: Route = base.getModerator
196     override def getDialogueModerators: Route = base.getModerators
197     override def createDialogueModerator: Route = base.createModerator
198     override def updateDialogueModerator: Route = base.updateModerator
199   }
200 }
201 
202 /** Kept as an alias of the shared models, so that existing imports and Swagger references keep working. */
203 object DialogueModerator {
204   object Request {
205     type Create = EventScopedModerator.Request.Create
206     val Create: EventScopedModerator.Request.Create.type = EventScopedModerator.Request.Create
207 
208     type Update = EventScopedModerator.Request.Update
209     val Update: EventScopedModerator.Request.Update.type = EventScopedModerator.Request.Update
210   }
211 
212   type Response = EventScopedModerator.Response
213   val Response: EventScopedModerator.Response.type = EventScopedModerator.Response
214 }
Line Stmt Id Pos Tree Symbol Tests Code
171 44084 5223 - 5319 Apply akka.http.scaladsl.server.RouteConcatenation.RouteWithConcatenation.~ org.make.api.user.admindialoguemoderatorapitest AdminDialogueModeratorApi.this._enhanceRouteWithConcatenation(AdminDialogueModeratorApi.this._enhanceRouteWithConcatenation(AdminDialogueModeratorApi.this._enhanceRouteWithConcatenation(AdminDialogueModeratorApi.this.getDialogueModerator).~(AdminDialogueModeratorApi.this.getDialogueModerators)).~(AdminDialogueModeratorApi.this.createDialogueModerator)).~(AdminDialogueModeratorApi.this.updateDialogueModerator)
171 31263 5296 - 5319 Select org.make.api.user.AdminDialogueModeratorApi.updateDialogueModerator org.make.api.user.admindialoguemoderatorapitest AdminDialogueModeratorApi.this.updateDialogueModerator
171 35168 5223 - 5293 Apply akka.http.scaladsl.server.RouteConcatenation.RouteWithConcatenation.~ org.make.api.user.admindialoguemoderatorapitest AdminDialogueModeratorApi.this._enhanceRouteWithConcatenation(AdminDialogueModeratorApi.this._enhanceRouteWithConcatenation(AdminDialogueModeratorApi.this.getDialogueModerator).~(AdminDialogueModeratorApi.this.getDialogueModerators)).~(AdminDialogueModeratorApi.this.createDialogueModerator)
171 45671 5223 - 5243 Select org.make.api.user.AdminDialogueModeratorApi.getDialogueModerator org.make.api.user.admindialoguemoderatorapitest AdminDialogueModeratorApi.this.getDialogueModerator
171 50599 5223 - 5267 Apply akka.http.scaladsl.server.RouteConcatenation.RouteWithConcatenation.~ org.make.api.user.admindialoguemoderatorapitest AdminDialogueModeratorApi.this._enhanceRouteWithConcatenation(AdminDialogueModeratorApi.this.getDialogueModerator).~(AdminDialogueModeratorApi.this.getDialogueModerators)
171 42994 5270 - 5293 Select org.make.api.user.AdminDialogueModeratorApi.createDialogueModerator org.make.api.user.admindialoguemoderatorapitest AdminDialogueModeratorApi.this.createDialogueModerator
171 38080 5246 - 5267 Select org.make.api.user.AdminDialogueModeratorApi.getDialogueModerators org.make.api.user.admindialoguemoderatorapitest AdminDialogueModeratorApi.this.getDialogueModerators
193 37291 5998 - 6093 Apply org.make.api.user.DefaultEventScopedModeratorApiComponent.DefaultEventScopedModeratorApi.<init> org.make.api.user.admindialoguemoderatorapitest new DefaultAdminDialogueModeratorApiComponent.this.DefaultEventScopedModeratorApi(org.make.core.user.Role.RoleDialogueModerator, "dialogue", "DialogueModerator")
193 42001 6073 - 6092 Literal <nosymbol> org.make.api.user.admindialoguemoderatorapitest "DialogueModerator"
193 36217 6033 - 6059 Select org.make.core.user.Role.RoleDialogueModerator org.make.api.user.admindialoguemoderatorapitest org.make.core.user.Role.RoleDialogueModerator
193 48995 6061 - 6071 Literal <nosymbol> org.make.api.user.admindialoguemoderatorapitest "dialogue"
195 50637 6142 - 6159 Select org.make.api.user.EventScopedModeratorApi.getModerator org.make.api.user.admindialoguemoderatorapitest DefaultAdminDialogueModeratorApi.this.base.getModerator
196 42734 6208 - 6226 Select org.make.api.user.EventScopedModeratorApi.getModerators org.make.api.user.admindialoguemoderatorapitest DefaultAdminDialogueModeratorApi.this.base.getModerators
197 34608 6277 - 6297 Select org.make.api.user.EventScopedModeratorApi.createModerator org.make.api.user.admindialoguemoderatorapitest DefaultAdminDialogueModeratorApi.this.base.createModerator
198 31310 6348 - 6368 Select org.make.api.user.EventScopedModeratorApi.updateModerator org.make.api.user.admindialoguemoderatorapitest DefaultAdminDialogueModeratorApi.this.base.updateModerator
206 43835 6643 - 6678 Select org.make.api.user.EventScopedModerator.Request.Create EventScopedModerator.Request.Create
209 36253 6793 - 6828 Select org.make.api.user.EventScopedModerator.Request.Update EventScopedModerator.Request.Update
213 49027 6935 - 6964 Select org.make.api.user.EventScopedModerator.Response EventScopedModerator.Response