Add module wrappers for APIs

This commit is contained in:
Alex D. 2022-11-27 14:19:47 +00:00
parent c13d3bcd82
commit 4c162a9f75
Signed by: caskd
GPG Key ID: F92BA85F61F4C173
1 changed files with 19 additions and 11 deletions

30
main.go
View File

@ -13,6 +13,7 @@ import (
"log" "log"
"os" "os"
"strings" "strings"
"time"
"git.redxen.eu/caskd/goboru" "git.redxen.eu/caskd/goboru"
"git.redxen.eu/caskd/goboru/modules/e621" "git.redxen.eu/caskd/goboru/modules/e621"
@ -21,27 +22,34 @@ import (
func main() { func main() {
var ( var (
jobs uint ji uint
module string tout uint
api_key, uname, module string
) )
flag.UintVar(&jobs, "maxjobs", 10, "Maximum concurrent page fetch jobs") flag.UintVar(&ji, "maxjobs", 10, "Maximum concurrent page fetch jobs")
flag.UintVar(&tout, "timeout", 10, "Seconds to time out page fetches")
flag.StringVar(&module, "module", "gelbooru", "Module to use") flag.StringVar(&module, "module", "gelbooru", "Module to use")
flag.StringVar(&api_key, "api_key", "", "API Key for requests")
flag.StringVar(&uname, "username", "", "Username for requests")
flag.Parse() flag.Parse()
var ( var (
media []goboru.Media media []goboru.Media
err error err error
rtout time.Duration = time.Duration(tout) * time.Second
tags []string = flag.Args()
jobs = goboru.Jobs(ji)
) )
qFunc := map[string](goboru.QueryFunc){ switch module {
"e621": e621.Query, case "e621":
"gelbooru": gelbooru.Query, media, err = e621.Query(uname, api_key, tags, jobs, rtout)
}[module] case "gelbooru":
if qFunc == nil { fallthrough
qFunc = gelbooru.Query default: // Fallback to gelbooru
media, err = gelbooru.Query(tags, jobs)
} }
if err != nil {
if media, err = qFunc(flag.Args(), goboru.Jobs(jobs)); err != nil {
log.Fatal(err) log.Fatal(err)
} }