Flare has a Go SDK available on Github. It is a light wrapper around
net/http.Client
that automatically manages API authentication.
Links
Installing
go get github.com/Flared/go-flareio
Basic Usage
The flareio
package provides the NewApiClient
method that can be used
to create a Flare API client.
The client exposes Get
and Post
methods that have a similar API to net/http.Client
with the exception that they accept paths as parameters instead of full URLs.
package main
import (
"fmt"
"io"
"os"
"github.com/Flared/go-flareio"
)
func main ( ) {
client := flareio. NewApiClient (
os. Getenv ( "FLARE_API_KEY" ) ,
)
resp, err := client. Get (
"/tokens/test" , nil ,
)
if err != nil {
fmt. Printf ( "failed to test token: %s\n" , err)
os. Exit ( 1 )
}
defer resp. Body. Close ( )
if _ , err := io. Copy ( os. Stdout, resp. Body) ; err != nil {
fmt. Printf ( "failed to print response: %s\n" , err)
os. Exit ( 1 )
}
}
Specifying a Tenant Id
The Api Client can be configured to use a specific tenant id using the WithTenantId
option.
client := flareio. NewApiClient (
os. Getenv ( "FLARE_API_KEY" ) ,
flareio. WithTenantId ( 42 ) ,
)
Paging Util
The ApiClient
has IterGet
and IterPostJson
methods that return iterators implementing the
Flare standard paging pattern
.
The paging util leverages Go iterators which require Go version >= 1.23.
package main
import (
"fmt"
"os"
"time"
"github.com/Flared/go-flareio"
)
func main ( ) {
client := flareio. NewApiClient (
os. Getenv ( "FLARE_API_KEY" ) ,
)
fetchedPages := 0
for result, err := range client. IterGet (
"/leaksdb/v2/sources" , nil ,
) {
time. Sleep ( time. Second * 1 )
if err != nil {
fmt. Printf ( "unexpected error: %s\n" , err)
os. Exit ( 1 )
}
result. Response. Body. Close ( )
fetchedPages = fetchedPages + 1
fmt. Printf (
"Fetched %d page(s) of LeaksDB Sources, next=%s\n" ,
fetchedPages,
result. Next,
)
}
}