Skip to content
This repository was archived by the owner on Aug 18, 2020. It is now read-only.

Commit 7b6b702

Browse files
committed
Updated the Requirement-API to return if unsetting was successful. Added requirement-deletion to the rest api.
1 parent 6769e36 commit 7b6b702

File tree

2 files changed

+43
-1
lines changed

2 files changed

+43
-1
lines changed

src/main/scala/org/codeoverflow/chatoverflow/ui/web/rest/plugin/PluginInstanceController.scala

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ class PluginInstanceController(implicit val swagger: Swagger) extends JsonServle
150150
if (!ConfigurationService.fulfillRequirementByDeserializing(instanceName, requirementID, targetType,
151151
value, chatOverflow.pluginInstanceRegistry, chatOverflow.typeRegistry)) {
152152

153-
ResultMessage(success = false, "Unable to set requirement.")
153+
ResultMessage(success = false, "Unable to set the requirement.")
154154
} else {
155155
chatOverflow.save()
156156
ResultMessage(success = true)
@@ -161,6 +161,40 @@ class PluginInstanceController(implicit val swagger: Swagger) extends JsonServle
161161
}
162162
}
163163

164+
delete("/:instanceName/requirements/:requirementID", operation(deleteRequirement)) {
165+
authKeyRequired {
166+
val instanceName = params("instanceName")
167+
val requirementID = params("requirementID")
168+
169+
if (!chatOverflow.isLoaded) {
170+
ResultMessage(success = false, "Framework not loaded.")
171+
172+
} else {
173+
val pluginInstance = chatOverflow.pluginInstanceRegistry.getPluginInstance(instanceName)
174+
175+
if (pluginInstance.isEmpty) {
176+
ResultMessage(success = false, "Plugin instance not found.")
177+
178+
} else if (pluginInstance.get.isRunning) {
179+
ResultMessage(success = false, "Plugin is running.")
180+
181+
} else if (!pluginInstance.get.getRequirements.getRequirementById(requirementID).isPresent) {
182+
ResultMessage(success = false, "Requirement not found.")
183+
} else {
184+
185+
if (!pluginInstance.get.getRequirements.unsetRequirementById(requirementID)) {
186+
187+
ResultMessage(success = false, "Unable to remove the requirement. Already removed.")
188+
} else {
189+
chatOverflow.save()
190+
ResultMessage(success = true)
191+
}
192+
}
193+
}
194+
195+
}
196+
}
197+
164198
get("/:instanceName/log", operation(getLog)) {
165199
authKeyRequired {
166200
val instanceName = params("instanceName")

src/main/scala/org/codeoverflow/chatoverflow/ui/web/rest/plugin/PluginInstanceControllerDefinition.scala

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,14 @@ trait PluginInstanceControllerDefinition extends SwaggerSupport with TagSupport
4444
parameter pathParam[String]("instanceName").description("The name of the plugin instance.")
4545
parameter pathParam[String]("requirementID").description("The unique id of the requirement.")
4646
parameter bodyParam[RequirementInfo]("body").description("Requires target type and serialized content."))
47+
val deleteRequirement: OperationBuilder =
48+
(apiOperation[ResultMessage]("deleteRequirement")
49+
summary "Removes a specific requirement."
50+
description "Removes a specific requirement by unseting its value."
51+
tags controllerTag
52+
parameter authHeader
53+
parameter pathParam[String]("instanceName").description("The name of the plugin instance.")
54+
parameter pathParam[String]("requirementID").description("The unique id of the requirement."))
4755
val getLog: OperationBuilder =
4856
(apiOperation[List[String]]("getLog")
4957
summary "Shows the log of a plugin instance."

0 commit comments

Comments
 (0)