SDK
SDK Go
Module Go, gestion de contexte et erreurs typées.
Version
Module `github.com/coffrify/coffrify-go` - Go ≥ 1.21. Utilise `net/http` standard, zéro dépendance externe.
Installation
terminal
$ go get github.com/coffrify/coffrify-gogo: added github.com/coffrify/coffrify-go v0.2.0
Client
main.gogo
package main
import (
"context"
"fmt"
"log"
"os"
coffrify "github.com/coffrify/coffrify-go"
)
func main() {
client := coffrify.NewClient(os.Getenv("COFFRIFY_API_KEY"),
coffrify.WithTimeout(30*time.Second),
coffrify.WithMaxRetries(2),
)
transfer, err := client.Transfers.Create(context.Background(), coffrify.CreateTransferParams{
Files: []coffrify.File{{Name: "contrat.pdf", Size: 1_048_576}},
ExpiresIn: "7d",
})
if err != nil {
log.Fatal(err)
}
fmt.Println(transfer.ShortCode)
fmt.Println(transfer.ShareURL)
}Upload & finalisation
data, _ := os.ReadFile("contrat.pdf")
req, _ := http.NewRequest(http.MethodPut, transfer.UploadURLs[0], bytes.NewReader(data))
req.Header.Set("Content-Type", "application/pdf")
http.DefaultClient.Do(req)
finalized, err := client.Transfers.Finalize(ctx, transfer.ID)Gestion des erreurs
var apiErr *coffrify.APIError
var rateLimitErr *coffrify.RateLimitError
if errors.As(err, &rateLimitErr) {
time.Sleep(time.Duration(rateLimitErr.RetryAfter) * time.Second)
} else if errors.As(err, &apiErr) {
fmt.Printf("%d %s: %s\n", apiErr.Status, apiErr.Code, apiErr.Message)
}