mirror of
https://github.com/hanzoai/forge.git
synced 2026-10-30 15:00:39 +00:00
Source files keep their SPDX-License-Identifier and Hanzo copyright line; the Gitea, Gogs and LFS Test Server copyrights they used to repeat now live once in NOTICE, alongside LICENSE. The header lint accepts any copyright line above the SPDX line, so it no longer demands an upstream one. Co-authored-by: Hanzo Dev <[email protected]>
76 lines
2.2 KiB
Go
76 lines
2.2 KiB
Go
// Copyright 2026 Hanzo AI, Inc. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package misc
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
"net/url"
|
|
|
|
"github.com/hanzoai/git/modules/options"
|
|
repo_module "github.com/hanzoai/git/modules/repository"
|
|
"github.com/hanzoai/git/modules/setting"
|
|
api "github.com/hanzoai/git/modules/structs"
|
|
"github.com/hanzoai/git/modules/util"
|
|
"github.com/hanzoai/git/services/context"
|
|
)
|
|
|
|
// Returns a list of all License templates
|
|
func ListLicenseTemplates(ctx *context.APIContext) {
|
|
// swagger:operation GET /licenses miscellaneous listLicenseTemplates
|
|
// ---
|
|
// summary: Returns a list of all license templates
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// "200":
|
|
// "$ref": "#/responses/LicenseTemplateList"
|
|
response := make([]api.LicensesTemplateListEntry, len(repo_module.Licenses))
|
|
for i, license := range repo_module.Licenses {
|
|
response[i] = api.LicensesTemplateListEntry{
|
|
Key: license,
|
|
Name: license,
|
|
URL: fmt.Sprintf("%sv1/licenses/%s", setting.AppURL, url.PathEscape(license)),
|
|
}
|
|
}
|
|
ctx.JSON(http.StatusOK, response)
|
|
}
|
|
|
|
func GetLicenseTemplateInfo(ctx *context.APIContext) {
|
|
// swagger:operation GET /licenses/{name} miscellaneous getLicenseTemplateInfo
|
|
// ---
|
|
// summary: Returns information about a license template
|
|
// produces:
|
|
// - application/json
|
|
// parameters:
|
|
// - name: name
|
|
// in: path
|
|
// description: name of the license
|
|
// type: string
|
|
// required: true
|
|
// responses:
|
|
// "200":
|
|
// "$ref": "#/responses/LicenseTemplateInfo"
|
|
// "404":
|
|
// "$ref": "#/responses/notFound"
|
|
name := util.PathJoinRelX(ctx.PathParam("name"))
|
|
|
|
text, err := options.License(name)
|
|
if err != nil {
|
|
ctx.APIErrorNotFound()
|
|
return
|
|
}
|
|
|
|
response := api.LicenseTemplateInfo{
|
|
Key: name,
|
|
Name: name,
|
|
URL: fmt.Sprintf("%sv1/licenses/%s", setting.AppURL, url.PathEscape(name)),
|
|
Body: string(text),
|
|
// This is for combatibilty with the GitHub API. This Text is for some reason added to each License response.
|
|
Implementation: "Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file",
|
|
}
|
|
|
|
ctx.JSON(http.StatusOK, response)
|
|
}
|