diff --git a/plugin/api/init.go b/plugin/api/init.go index 281f3e27..79162e3c 100644 --- a/plugin/api/init.go +++ b/plugin/api/init.go @@ -1,6 +1,7 @@ package api import ( + "infini.sh/console/plugin/api/license" "path" "infini.sh/console/config" @@ -72,4 +73,6 @@ func Init(cfg *config.AppConfig) { insight.InitAPI() layout.InitAPI() notification.InitAPI() + + license.InitAPI() } diff --git a/plugin/api/license/api.go b/plugin/api/license/api.go new file mode 100644 index 00000000..27f058be --- /dev/null +++ b/plugin/api/license/api.go @@ -0,0 +1,42 @@ +/* Copyright © INFINI LTD. All rights reserved. + * Web: https://infinilabs.com + * Email: hello#infini.ltd */ + +package license + +import ( + "infini.sh/framework/core/api" + httprouter "infini.sh/framework/core/api/router" + "infini.sh/framework/core/util" + "infini.sh/license" + "net/http" +) + +type LicenseAPI struct { + api.Handler +} +func InitAPI() { + handler := LicenseAPI{} + api.HandleAPIMethod(api.POST, "/_license/request_trial", handler.RequestTrialLicense) +} + +func (handler *LicenseAPI) RequestTrialLicense(w http.ResponseWriter, req *http.Request, p httprouter.Params) { + body, err := handler.GetRawBody(req) + if err != nil { + handler.Error500(w, err.Error()) + return + } + + v := license.TrialRequest{} + util.FromJSONBytes(body, &v) + + //TODO implement config for the api endpoint + request:=util.NewPostRequest("https://api.infini.sh/_license/request_trial", util.MustToJSONBytes(v)) + response,err:=util.ExecuteRequest(request) + if err!=nil{ + handler.WriteError(w,err.Error(),response.StatusCode) + return + } + w.WriteHeader(response.StatusCode) + w.Write(response.Body) +} \ No newline at end of file