GoGeek is a lightweight, easy-to-use Go module designed to streamline interactions with the BoardGameGeek API (XML API2).
- 🔄 Simple Request Handling: GoGeek abstracts the BGG API request process, allowing you to focus on utilising the data rather than managing HTTP requests.
- 📄 Data Parsing: Automatically converts and normalises XML responses from the BGG API into Go structs, so you can work with structured data effortlessly.
⚠️ Error Handling: Robust error handling for common issues like network errors, rate limiting, queued requests and unexpected response formats.
To setup GoGeek, use the following go get
command:
go get github.com/kkjdaniel/gogeek
Getting started with GoGeek is easy. Here’s a quick example to fetch details about specific board games:
package main
import (
"fmt"
"log"
"github.com/kkjdaniel/gogeek/thing"
)
func main() {
games, err := thing.Query([]int{13, 12, 3})
if err != nil {
log.Fatal(err)
}
for _, game := range games.Items {
fmt.Printf("Name: %s\nYear Published: %d\n", game.Name[0].Value, game.YearPublished.Value)
}
}
Name: CATAN
Year Published: 1995
Name: Ra
Year Published: 1999
Name: Samurai
Year Published: 1998
The thing
query allows you to fetch details about a specific or multiple board games by BGG ID.
Note: There is a query limit of 20 IDs per query due to restrictions of the BGG API. If you wish to fetch multiple games you will need to batch your requests.
For the full documentation please see the GoDoc here. Details on how to use each query function as well as the interfaces for each of the APIs can be found within their respective packages.
Contributions are welcome! Please feel free to submit a pull request or open an issue on GitHub to help improve GoGeek.