A Go client library for the EarthRanger HTTP API.
EarthRanger is a software solution that helps protected area managers, ecologists, and wildlife biologists make informed operational decisions for wildlife conservation.
This is a Go port of the Python earthranger-client.
- Go 100%
| erclient | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| README.md | ||
EarthRanger Client (Go)
A Go client library for the EarthRanger HTTP API. EarthRanger is a software solution that helps protected area managers, ecologists, and wildlife biologists make informed operational decisions for wildlife conservation.
This is a Go port of the Python earthranger-client.
Installation
go get git.telementary.net/telementary/er-client-go
Usage
package main
import (
"context"
"fmt"
"log"
"git.telementary.net/telementary/er-client-go/erclient"
)
func main() {
ctx := context.Background()
client, err := erclient.New(
"https://sandbox.pamdas.org",
erclient.WithCredentials("username", "password", "client_id"),
)
if err != nil {
log.Fatal(err)
}
// Get current user
me, err := client.GetMe(ctx)
if err != nil {
log.Fatal(err)
}
fmt.Println(me)
// Post an observation
obs := map[string]interface{}{
"recorded_at": "2024-01-01T00:00:00Z",
"location": map[string]float64{
"latitude": -1.234,
"longitude": 36.789,
},
}
result, err := client.PostObservation(ctx, obs)
if err != nil {
log.Fatal(err)
}
fmt.Println(result)
}
Token-based auth
client, err := erclient.New(
"https://sandbox.pamdas.org",
erclient.WithToken("your-token"),
)
Paginated iteration (channels)
ch, errCh := client.GetObservations(ctx, map[string]string{
"subject_id": "subject-uuid",
"since": "2024-01-01T00:00:00Z",
})
for obs := range ch {
fmt.Println(obs)
}
if err := <-errCh; err != nil {
log.Fatal(err)
}
API Coverage
| Method | Description |
|---|---|
Pulse |
API status check |
GetMe, GetUsers |
User info |
GetEvents, GetEvent, PostEvent, PatchEvent, DeleteEvent |
Event CRUD |
GetEventTypes, GetEventType, PostEventType, PatchEventType |
Event type management |
GetEventCategories, PostEventCategory, PatchEventCategory |
Event categories |
GetObservations, PostObservation, PostSensorObservation |
Observation management |
GetSubjects, GetSubject, PostSubject, PatchSubject, DeleteSubject |
Subject CRUD |
GetSubjectGroups, AddSubjectsToSubjectGroup, RemoveSubjectsFromSubjectGroup |
Subject groups |
GetSources, GetSourceByID, PostSource, DeleteSource |
Source management |
GetPatrols, PostPatrol, DeletePatrol |
Patrol management |
GetMessages, PostMessage, DeleteMessage |
Message management |
GetFile |
File download |
PostEventFile, DeleteEventFile |
Event file attachments |
PostEventNote, DeleteEventNote |
Event notes |
GetSourceAssignments |
Source-subject assignments |
GetFeatureGroup |
Spatial feature groups |
ExportObservationsToCSV |
CSV export |
GPX Export via GPXExporter |
Export events and tracks to GPX |
CSV Loading via CSVObservationLoader |
Parse observation CSV files |
License
GNU Affero General Public License v3.0 or later. See LICENSE.