Authenticate Handler API and SDK, and much more (#183)
This commit is contained in:
1 parent
acce195dcb
commit
28dbcd84bd
89 files changed
+5296
-1943
No files matched your search
+86
-117
@@ -12,150 +12,119 @@ type structInfo struct {
|
||||
parentName string
|
||||
detailName string
|
||||
templateType templateType
|
||||
nameJsonMap map[string]string
|
||||
}
|
||||
|
||||
var inputStructs = []*structInfo{
|
||||
{
|
||||
os.Getenv("GEN_BASEPATH") + "/internal/gen/controller/api/error.pb.go",
|
||||
"Error",
|
||||
os.Getenv("GEN_BASEPATH") + "/api/error.gen.go",
|
||||
"Error",
|
||||
"api",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
templateTypeResource,
|
||||
inFile: os.Getenv("GEN_BASEPATH") + "/internal/gen/controller/api/error.pb.go",
|
||||
inName: "Error",
|
||||
outFile: os.Getenv("GEN_BASEPATH") + "/api/error.gen.go",
|
||||
outName: "Error",
|
||||
outPkg: "api",
|
||||
},
|
||||
{
|
||||
os.Getenv("GEN_BASEPATH") + "/internal/gen/controller/api/error.pb.go",
|
||||
"ErrorDetails",
|
||||
os.Getenv("GEN_BASEPATH") + "/api/error_details.gen.go",
|
||||
"ErrorDetails",
|
||||
"api",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
templateTypeResource,
|
||||
inFile: os.Getenv("GEN_BASEPATH") + "/internal/gen/controller/api/error.pb.go",
|
||||
inName: "ErrorDetails",
|
||||
outFile: os.Getenv("GEN_BASEPATH") + "/api/error_details.gen.go",
|
||||
outName: "ErrorDetails",
|
||||
outPkg: "api",
|
||||
},
|
||||
{
|
||||
os.Getenv("GEN_BASEPATH") + "/internal/gen/controller/api/error.pb.go",
|
||||
"FieldError",
|
||||
os.Getenv("GEN_BASEPATH") + "/api/field_error.gen.go",
|
||||
"FieldError",
|
||||
"api",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
templateTypeResource,
|
||||
inFile: os.Getenv("GEN_BASEPATH") + "/internal/gen/controller/api/error.pb.go",
|
||||
inName: "FieldError",
|
||||
outFile: os.Getenv("GEN_BASEPATH") + "/api/field_error.gen.go",
|
||||
outName: "FieldError",
|
||||
outPkg: "api",
|
||||
},
|
||||
{
|
||||
os.Getenv("GEN_BASEPATH") + "/internal/gen/controller/api/resources/hosts/host.pb.go",
|
||||
"Host",
|
||||
os.Getenv("GEN_BASEPATH") + "/api/hosts/host.gen.go",
|
||||
"Host",
|
||||
"hosts",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
templateTypeResource,
|
||||
inFile: os.Getenv("GEN_BASEPATH") + "/internal/gen/controller/api/resources/hosts/host.pb.go",
|
||||
inName: "Host",
|
||||
outFile: os.Getenv("GEN_BASEPATH") + "/api/hosts/host.gen.go",
|
||||
outName: "Host",
|
||||
outPkg: "hosts",
|
||||
},
|
||||
{
|
||||
os.Getenv("GEN_BASEPATH") + "/internal/gen/controller/api/resources/hosts/host_set.pb.go",
|
||||
"HostSet",
|
||||
os.Getenv("GEN_BASEPATH") + "/api/hosts/host_set.gen.go",
|
||||
"HostSet",
|
||||
"hosts",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
templateTypeResource,
|
||||
inFile: os.Getenv("GEN_BASEPATH") + "/internal/gen/controller/api/resources/hosts/host_set.pb.go",
|
||||
inName: "HostSet",
|
||||
outFile: os.Getenv("GEN_BASEPATH") + "/api/hosts/host_set.gen.go",
|
||||
outName: "HostSet",
|
||||
outPkg: "hosts",
|
||||
},
|
||||
{
|
||||
os.Getenv("GEN_BASEPATH") + "/internal/gen/controller/api/resources/hosts/host_catalog.pb.go",
|
||||
"HostCatalog",
|
||||
os.Getenv("GEN_BASEPATH") + "/api/hosts/host_catalog.gen.go",
|
||||
"HostCatalog",
|
||||
"hosts",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
templateTypeResource,
|
||||
inFile: os.Getenv("GEN_BASEPATH") + "/internal/gen/controller/api/resources/hosts/host_catalog.pb.go",
|
||||
inName: "HostCatalog",
|
||||
outFile: os.Getenv("GEN_BASEPATH") + "/api/hosts/host_catalog.gen.go",
|
||||
outName: "HostCatalog",
|
||||
outPkg: "hosts",
|
||||
},
|
||||
{
|
||||
os.Getenv("GEN_BASEPATH") + "/internal/gen/controller/api/resources/scopes/org.pb.go",
|
||||
"Org",
|
||||
os.Getenv("GEN_BASEPATH") + "/api/scopes/org.gen.go",
|
||||
"Org",
|
||||
"scopes",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
templateTypeResource,
|
||||
inFile: os.Getenv("GEN_BASEPATH") + "/internal/gen/controller/api/resources/scopes/org.pb.go",
|
||||
inName: "Org",
|
||||
outFile: os.Getenv("GEN_BASEPATH") + "/api/scopes/org.gen.go",
|
||||
outName: "Org",
|
||||
outPkg: "scopes",
|
||||
},
|
||||
{
|
||||
os.Getenv("GEN_BASEPATH") + "/internal/gen/controller/api/resources/scopes/project.pb.go",
|
||||
"Project",
|
||||
os.Getenv("GEN_BASEPATH") + "/api/scopes/project.gen.go",
|
||||
"Project",
|
||||
"scopes",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
templateTypeResource,
|
||||
inFile: os.Getenv("GEN_BASEPATH") + "/internal/gen/controller/api/resources/authtokens/authtoken.pb.go",
|
||||
inName: "AuthToken",
|
||||
outFile: os.Getenv("GEN_BASEPATH") + "/api/authtokens/authtoken.gen.go",
|
||||
outName: "AuthToken",
|
||||
outPkg: "authtokens",
|
||||
},
|
||||
{
|
||||
os.Getenv("GEN_BASEPATH") + "/internal/gen/controller/api/resources/users/user.pb.go",
|
||||
"User",
|
||||
os.Getenv("GEN_BASEPATH") + "/api/users/user.gen.go",
|
||||
"User",
|
||||
"users",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
templateTypeResource,
|
||||
inFile: os.Getenv("GEN_BASEPATH") + "/internal/gen/controller/api/resources/scopes/project.pb.go",
|
||||
inName: "Project",
|
||||
outFile: os.Getenv("GEN_BASEPATH") + "/api/scopes/project.gen.go",
|
||||
outName: "Project",
|
||||
outPkg: "scopes",
|
||||
},
|
||||
{
|
||||
os.Getenv("GEN_BASEPATH") + "/internal/gen/controller/api/resources/groups/group.pb.go",
|
||||
"Group",
|
||||
os.Getenv("GEN_BASEPATH") + "/api/groups/group.gen.go",
|
||||
"Group",
|
||||
"groups",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
templateTypeResource,
|
||||
inFile: os.Getenv("GEN_BASEPATH") + "/internal/gen/controller/api/resources/users/user.pb.go",
|
||||
inName: "User",
|
||||
outFile: os.Getenv("GEN_BASEPATH") + "/api/users/user.gen.go",
|
||||
outName: "User",
|
||||
outPkg: "users",
|
||||
},
|
||||
{
|
||||
os.Getenv("GEN_BASEPATH") + "/internal/gen/controller/api/resources/roles/role.pb.go",
|
||||
"Role",
|
||||
os.Getenv("GEN_BASEPATH") + "/api/roles/role.gen.go",
|
||||
"Role",
|
||||
"roles",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
templateTypeResource,
|
||||
inFile: os.Getenv("GEN_BASEPATH") + "/internal/gen/controller/api/resources/groups/group.pb.go",
|
||||
inName: "Group",
|
||||
outFile: os.Getenv("GEN_BASEPATH") + "/api/groups/group.gen.go",
|
||||
outName: "Group",
|
||||
outPkg: "groups",
|
||||
},
|
||||
{
|
||||
os.Getenv("GEN_BASEPATH") + "/internal/gen/controller/api/resources/hosts/host_catalog.pb.go",
|
||||
"StaticHostCatalogDetails",
|
||||
os.Getenv("GEN_BASEPATH") + "/api/hosts/static_host_catalog.gen.go",
|
||||
"StaticHostCatalogDetails",
|
||||
"hosts",
|
||||
"",
|
||||
"HostCatalog",
|
||||
"StaticHostCatalog",
|
||||
templateTypeDetail,
|
||||
inFile: os.Getenv("GEN_BASEPATH") + "/internal/gen/controller/api/resources/roles/role.pb.go",
|
||||
inName: "Role",
|
||||
outFile: os.Getenv("GEN_BASEPATH") + "/api/roles/role.gen.go",
|
||||
outName: "Role",
|
||||
outPkg: "roles",
|
||||
},
|
||||
{
|
||||
os.Getenv("GEN_BASEPATH") + "/internal/gen/controller/api/resources/hosts/host_catalog.pb.go",
|
||||
"AwsEc2HostCatalogDetails",
|
||||
os.Getenv("GEN_BASEPATH") + "/api/hosts/awsec2_host_catalog.gen.go",
|
||||
"AwsEc2HostCatalogDetails",
|
||||
"hosts",
|
||||
"",
|
||||
"HostCatalog",
|
||||
"AwsEc2HostCatalog",
|
||||
templateTypeDetail,
|
||||
inFile: os.Getenv("GEN_BASEPATH") + "/internal/gen/controller/api/resources/roles/role.pb.go",
|
||||
inName: "Principal",
|
||||
outFile: os.Getenv("GEN_BASEPATH") + "/api/roles/principal.gen.go",
|
||||
outName: "Principal",
|
||||
outPkg: "roles",
|
||||
},
|
||||
{
|
||||
inFile: os.Getenv("GEN_BASEPATH") + "/internal/gen/controller/api/resources/hosts/host_catalog.pb.go",
|
||||
inName: "StaticHostCatalogDetails",
|
||||
outFile: os.Getenv("GEN_BASEPATH") + "/api/hosts/static_host_catalog.gen.go",
|
||||
outName: "StaticHostCatalogDetails",
|
||||
outPkg: "hosts",
|
||||
parentName: "HostCatalog",
|
||||
detailName: "StaticHostCatalog",
|
||||
templateType: templateTypeDetail,
|
||||
},
|
||||
{
|
||||
inFile: os.Getenv("GEN_BASEPATH") + "/internal/gen/controller/api/resources/hosts/host_catalog.pb.go",
|
||||
inName: "AwsEc2HostCatalogDetails",
|
||||
outFile: os.Getenv("GEN_BASEPATH") + "/api/hosts/awsec2_host_catalog.gen.go",
|
||||
outName: "AwsEc2HostCatalogDetails",
|
||||
outPkg: "hosts",
|
||||
parentName: "HostCatalog",
|
||||
detailName: "AwsEc2HostCatalog",
|
||||
templateType: templateTypeDetail,
|
||||
},
|
||||
}
|
||||
@@ -38,6 +38,7 @@ func parsePBs() {
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
inputStruct.nameJsonMap = make(map[string]string)
|
||||
ast.Walk(visitFn(func(n ast.Node) {
|
||||
spec, ok := n.(*ast.TypeSpec)
|
||||
if !ok {
|
||||
@@ -114,11 +115,6 @@ func parsePBs() {
|
||||
var selectorExpr *ast.SelectorExpr
|
||||
switch typ := field.Type.(type) {
|
||||
case *ast.Ident:
|
||||
// Id values are immutable and should always exist, so
|
||||
// don't make it a pointer
|
||||
if field.Names[0].Name != "Id" {
|
||||
typ.Name = "*" + typ.Name
|
||||
}
|
||||
goto TAGMODIFY
|
||||
case *ast.ArrayType:
|
||||
goto TAGMODIFY
|
||||
@@ -222,7 +218,10 @@ func parsePBs() {
|
||||
}
|
||||
|
||||
TAGMODIFY:
|
||||
st.Fields.List[i].Tag.Value = "`" + regex.FindString(st.Fields.List[i].Tag.Value) + "`"
|
||||
tagString := regex.FindString(st.Fields.List[i].Tag.Value)
|
||||
st.Fields.List[i].Tag.Value = "`" + tagString + "`"
|
||||
tagString = strings.TrimSuffix(strings.TrimPrefix(tagString, `json:"`), `,omitempty"`)
|
||||
inputStruct.nameJsonMap[strings.ToLower(field.Names[0].Name)] = tagString
|
||||
}
|
||||
}), inAst)
|
||||
|
||||
|
||||
@@ -37,11 +37,6 @@ var readFuncs = map[string][]*readInfo{
|
||||
targetType: "users.User",
|
||||
path: "users",
|
||||
},
|
||||
{
|
||||
baseType: "Project",
|
||||
targetType: "hosts.HostCatalog",
|
||||
path: "host-catalogs",
|
||||
},
|
||||
{
|
||||
baseType: "Project",
|
||||
targetType: "groups.Group",
|
||||
@@ -52,6 +47,11 @@ var readFuncs = map[string][]*readInfo{
|
||||
targetType: "roles.Role",
|
||||
path: "roles",
|
||||
},
|
||||
{
|
||||
baseType: "Project",
|
||||
targetType: "hosts.HostCatalog",
|
||||
path: "host-catalogs",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -25,10 +25,12 @@ func writeStructTemplates() {
|
||||
Name string
|
||||
Package string
|
||||
StructFields string
|
||||
NameJsonMap map[string]string
|
||||
}{
|
||||
Name: inputStruct.outName,
|
||||
Package: inputStruct.outPkg,
|
||||
StructFields: inputStruct.structFields,
|
||||
NameJsonMap: inputStruct.nameJsonMap,
|
||||
})
|
||||
|
||||
case templateTypeDetail:
|
||||
@@ -61,11 +63,12 @@ func writeStructTemplates() {
|
||||
// TODO: Add documentation around SetDefault and how it behaves when the field corresponding to the provided key is already set.
|
||||
var structTemplate = template.Must(template.New("").Parse(
|
||||
`// Code generated by "make api"; DO NOT EDIT.
|
||||
package {{ .Package }}
|
||||
package {{ .Package }}
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"strings"
|
||||
|
||||
"github.com/fatih/structs"
|
||||
|
||||
@@ -82,11 +85,25 @@ type {{ .Name }} struct {
|
||||
}
|
||||
|
||||
func (s *{{ .Name }}) SetDefault(key string) {
|
||||
s.defaultFields = strutil.AppendIfMissing(s.defaultFields, key)
|
||||
lowerKey := strings.ToLower(key)
|
||||
validMap := {{ printf "%#v" .NameJsonMap }}
|
||||
for k, v := range validMap {
|
||||
if k == lowerKey || v == lowerKey {
|
||||
s.defaultFields = strutil.AppendIfMissing(s.defaultFields, v)
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (s *{{ .Name }}) UnsetDefault(key string) {
|
||||
s.defaultFields = strutil.StrListDelete(s.defaultFields, key)
|
||||
lowerKey := strings.ToLower(key)
|
||||
validMap := {{ printf "%#v" .NameJsonMap }}
|
||||
for k, v := range validMap {
|
||||
if k == lowerKey || v == lowerKey {
|
||||
s.defaultFields = strutil.StrListDelete(s.defaultFields, v)
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (s {{ .Name }}) MarshalJSON() ([]byte, error) {
|
||||
|
||||
Reference in new issue
Block a user