gomobile.go 1.2 KB

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