github.com/rclone/rclone@v1.66.1-0.20240517100346-7b89735ae726/librclone/gomobile/gomobile.go (about) 1 // Package gomobile exports shims for gomobile use 2 package gomobile 3 4 import ( 5 "github.com/rclone/rclone/librclone/librclone" 6 7 _ "github.com/rclone/rclone/backend/all" // import all backends 8 _ "github.com/rclone/rclone/lib/plugin" // import plugins 9 10 _ "golang.org/x/mobile/event/key" // make go.mod add this as a dependency 11 ) 12 13 // RcloneInitialize initializes rclone as a library 14 func RcloneInitialize() { 15 librclone.Initialize() 16 } 17 18 // RcloneFinalize finalizes the library 19 func RcloneFinalize() { 20 librclone.Finalize() 21 } 22 23 // RcloneRPCResult is returned from RcloneRPC 24 // 25 // Output will be returned as a serialized JSON object 26 // Status is a HTTP status return (200=OK anything else fail) 27 type RcloneRPCResult struct { 28 Output string 29 Status int 30 } 31 32 // RcloneRPC has an interface optimised for gomobile, in particular 33 // the function signature is valid under gobind rules. 34 // 35 // https://pkg.go.dev/golang.org/x/mobile/cmd/gobind#hdr-Type_restrictions 36 func RcloneRPC(method string, input string) (result *RcloneRPCResult) { //nolint:deadcode 37 output, status := librclone.RPC(method, input) 38 return &RcloneRPCResult{ 39 Output: output, 40 Status: status, 41 } 42 }