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 ,
) {
// Rate Limiting
time . Sleep ( time . Second * 1 )
if err != nil {
fmt . Printf ( "unexpected error: %s \n " , err )
os . Exit ( 1 )
}
// Handle the response...
result . Response . Body . Close ()
// Print the status
fetchedPages = fetchedPages + 1
fmt . Printf (
"Fetched %d page(s) of LeaksDB Sources, next= %s \n " ,
fetchedPages ,
result . Next ,
)
}
}