upload-example.go
// Command upload-example uploads a document using airplan's Go API.
package main
import (
"context"
"fmt"
"os"
"path/filepath"
"time"
"github.com/jimeh/airplan/airplan"
)
func main() {
if err := run(os.Args[1:]); err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
}
func run(args []string) error {
if len(args) != 1 {
return fmt.Errorf("usage: upload-example DOCUMENT")
}
file, err := os.Open(args[0])
if err != nil {
return err
}
defer func() { _ = file.Close() }()
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()
cfg, err := airplan.LoadConfig(airplan.ConfigOptions{})
if err != nil {
return err
}
client, err := airplan.New(ctx, cfg)
if err != nil {
return err
}
result, err := client.Upload(ctx, airplan.Input{
Reader: file,
Name: filepath.Base(file.Name()),
})
if err != nil {
return err
}
for _, warning := range result.Warnings {
fmt.Fprintf(os.Stderr, "airplan: warning: %s\n", warning)
}
fmt.Println(result.URL)
return nil
}