Expose new Enhanced Permission APIs
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details

This commit is contained in:
Sarah Jamie Lewis 2024-01-15 10:14:52 -08:00
parent 32ea146ec0
commit 425c3e6030
3 changed files with 20 additions and 3 deletions

View File

@ -96,7 +96,9 @@ func main() {
case "profile": case "profile":
generatedBindings = generateProfileFunction(generatedBindings, fName, args) generatedBindings = generateProfileFunction(generatedBindings, fName, args)
case "(json)profile": case "(json)profile":
generatedBindings = generateJsonProfileFunction(generatedBindings, fName, args) generatedBindings = generateJsonProfileFunction(generatedBindings, fName, args, false)
case "(json-err)profile":
generatedBindings = generateJsonProfileFunction(generatedBindings, fName, args, true)
case "@profile-experiment": case "@profile-experiment":
experiment := args[0] experiment := args[0]
generatedBindings = generateExperimentalProfileFunction(generatedBindings, experiment, fName, args[1:]) generatedBindings = generateExperimentalProfileFunction(generatedBindings, experiment, fName, args[1:])
@ -382,7 +384,7 @@ func {{FNAME}}({{GO_ARGS_SPEC}}) {
return bindings return bindings
} }
func generateJsonProfileFunction(bindings string, name string, argsTypes []string) string { func generateJsonProfileFunction(bindings string, name string, argsTypes []string, handleErr bool) string {
appPrototype := ` appPrototype := `
//export c_{{FNAME}} //export c_{{FNAME}}
func c_{{FNAME}}({{C_ARGS}}) *C.char { func c_{{FNAME}}({{C_ARGS}}) *C.char {
@ -392,14 +394,26 @@ func c_{{FNAME}}({{C_ARGS}}) *C.char {
func {{FNAME}}({{GO_ARGS_SPEC}}) string { func {{FNAME}}({{GO_ARGS_SPEC}}) string {
cwtchProfile := application.GetPeer(profile) cwtchProfile := application.GetPeer(profile)
if cwtchProfile != nil { if cwtchProfile != nil {
return cwtchProfile.{{LIBNAME}}({{GO_ARG}}) {{HANDLE_FUNC}}
} }
return "" return ""
} }
` `
noErrorPrototype := `return cwtchProfile.{{LIBNAME}}({{GO_ARG}})`
withErrorPrototype := `res,err := cwtchProfile.{{LIBNAME}}({{GO_ARG}})
if err != nil {
log.Errorf("could not {{FNAME}} %v", err)
}
return res`
functionPrototype := noErrorPrototype
if handleErr {
functionPrototype = withErrorPrototype
}
cArgs, c2GoArgs, goSpec, gUse := mapArgs(argsTypes) cArgs, c2GoArgs, goSpec, gUse := mapArgs(argsTypes)
appPrototype = strings.ReplaceAll(appPrototype, "{{HANDLE_FUNC}}", functionPrototype)
appPrototype = strings.ReplaceAll(appPrototype, "{{FNAME}}", strings.TrimPrefix(name, "Enhanced")) appPrototype = strings.ReplaceAll(appPrototype, "{{FNAME}}", strings.TrimPrefix(name, "Enhanced"))
appPrototype = strings.ReplaceAll(appPrototype, "{{LIBNAME}}", name) appPrototype = strings.ReplaceAll(appPrototype, "{{LIBNAME}}", name)
// We need to prepend a set of profile handle arguments... // We need to prepend a set of profile handle arguments...

View File

@ -20,6 +20,7 @@ nilaway -include-pkgs="git.openprivacy.ca/cwtch.im/cwtch-autobindings,cwtch.im/c
echo "Time to format" echo "Time to format"
gofmt -l -s -w ./utils/* gofmt -l -s -w ./utils/*
gofmt -l -s -w ./generate/*
# ineffassign (https://github.com/gordonklaus/ineffassign) # ineffassign (https://github.com/gordonklaus/ineffassign)
# echo "Checking for ineffectual assignment of errors (unchecked errors...)" # echo "Checking for ineffectual assignment of errors (unchecked errors...)"

2
spec
View File

@ -22,6 +22,8 @@ profile UnblockConversation conversation
profile DeleteConversation conversation profile DeleteConversation conversation
profile PeerWithOnion string:handle profile PeerWithOnion string:handle
profile DisconnectFromPeer string:handle profile DisconnectFromPeer string:handle
(json-err)profile EnhancedGetConversationAccessControlList conversation
profile EnhancedUpdateConversationAccessControlList conversation string:json
# Search # Search
(json)profile SearchConversations string:pattern (json)profile SearchConversations string:pattern