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  }