diff --git a/src/main/scala/gitbucket/core/api/ApiPlugin.scala b/src/main/scala/gitbucket/core/api/ApiPlugin.scala new file mode 100644 index 0000000..ac4003a --- /dev/null +++ b/src/main/scala/gitbucket/core/api/ApiPlugin.scala @@ -0,0 +1,17 @@ +package gitbucket.core.api + +import gitbucket.core.plugin.{PluginRegistry, PluginInfo} + +case class ApiPlugin( + id: String, + name: String, + versino: String, + description: String, + jarFileName: String +) + +object ApiPlugin{ + def apply(plugin: PluginInfo): ApiPlugin = { + ApiPlugin(plugin.pluginId, plugin.pluginName, plugin.pluginVersion, plugin.description, plugin.pluginJar.getName) + } +} diff --git a/src/main/scala/gitbucket/core/controller/ApiController.scala b/src/main/scala/gitbucket/core/controller/ApiController.scala index 9054dfa..7d0f979 100644 --- a/src/main/scala/gitbucket/core/controller/ApiController.scala +++ b/src/main/scala/gitbucket/core/controller/ApiController.scala @@ -10,6 +10,7 @@ import gitbucket.core.util.JGitUtil._ import gitbucket.core.util.SyntaxSugars._ import gitbucket.core.util._ +import gitbucket.core.plugin.PluginRegistry import gitbucket.core.view.helpers.{isRenderable, renderMarkup} import org.eclipse.jgit.api.Git import org.eclipse.jgit.revwalk.RevWalk @@ -717,5 +718,11 @@ } }) + /** + * non-GitHub compatible API for listing plugins + */ + get("/api/v3/plugins"){ + PluginRegistry().getPlugins().map{ApiPlugin(_)} + } }