From db9c114bfe519a864d8c176b05ef393e109a61a8 Mon Sep 17 00:00:00 2001 From: FernandoJVideira <03.pleaser-minster@icloud.com> Date: Fri, 1 Aug 2025 00:34:03 +0100 Subject: [PATCH] Added docs --- API_DOCS.md | 96 +++++++++++++++++++++++++++++++++++++ Dockerfile | 4 +- generators/modernenglish.go | 7 +-- 3 files changed, 102 insertions(+), 5 deletions(-) create mode 100644 API_DOCS.md diff --git a/API_DOCS.md b/API_DOCS.md new file mode 100644 index 0000000..ebf02f2 --- /dev/null +++ b/API_DOCS.md @@ -0,0 +1,96 @@ +# NameGen API Documentation + +## Base URL + +``` +http://localhost:8080/v1 +``` + +## Fantasy Name Endpoints + +| Race/Type | Endpoint | Query Parameters | +|-------------------|----------------------------------|---------------------------| +| Elf | /fantasy/elf-names | gender=male|female|child | +| Dwarf | /fantasy/dwarf-names | gender=male|female | +| Arakocra | /fantasy/arakocra-names | - | +| Aasimar | /fantasy/aasimar-names | gender=male|female | +| Bugbear | /fantasy/bugbear-names | - | +| Centaur | /fantasy/centaur-names | gender=male|female | +| Changeling | /fantasy/changeling-names | - | +| Deep Gnome | /fantasy/deep-gnome-names | gender=male|female | +| Deva | /fantasy/deva-names | gender=male|female | +| Dragonborn | /fantasy/dragonborn-names | gender=male|female|surname| +| Drow | /fantasy/drow-names | gender=male|female|surname| +| Duergar | /fantasy/duergar-names | gender=male|female | +| Eladrin | /fantasy/eladrin-names | gender=male|female | +| Fairy | /fantasy/fairy-names | gender=male|female | +| Firbolg | /fantasy/firbolg-names | gender=male|female|child | +| Genasi | /fantasy/genasi-names | - | +| Githyanki | /fantasy/githyanki-names | gender=male|female | +| Githzerai | /fantasy/githzerai-names | gender=male|female | +| Gnome | /fantasy/gnome-names | gender=male|female | +| Goblin | /fantasy/goblin-names | gender=male|female | +| Goliath | /fantasy/goliath-names | gender=male|female | +| Grung | /fantasy/grung-names | - | +| Half-Elf | /fantasy/half-elf-names | gender=male|female | +| Half-Orc | /fantasy/half-orc-names | gender=male|female | +| Halfling | /fantasy/halfling-names | gender=male|female | +| Harengon | /fantasy/harengon-names | gender=male|female | +| Hobgoblin | /fantasy/hobgoblin-names | - | +| Human | /fantasy/human-names | gender=male|female | +| Kalashtar | /fantasy/kalashtar-names | - | +| Kenku | /fantasy/kenku-names | - | +| Kobold | /fantasy/kobold-names | - | +| Leonin | /fantasy/leonin-names | gender=male|female | +| Lizardfolk | /fantasy/lizardfolk-names | gender=male|female | +| Locathah | /fantasy/locathah-names | - | +| Loxodon | /fantasy/loxodon-names | gender=male|female | +| Minotaur | /fantasy/minotaur-names | gender=male|female | +| Orc | /fantasy/orc-names | gender=male|female | +| Satyr | /fantasy/satyr-names | gender=male|female|child | +| Shadar-Kai | /fantasy/shadar-kai-names | gender=male|female | +| Shardmind | /fantasy/shardmind-names | - | +| Shifter | /fantasy/shifter-names | gender=male|female | +| Simic Hybrid | /fantasy/simic-hybrid-names | gender=male|female | +| Tabaxi | /fantasy/tabaxi-names | gender=male|female | +| Tiefling | /fantasy/tiefling-names | gender=male|female|virtue | +| Tortle | /fantasy/tortle-names | - | +| Triton | /fantasy/triton-names | gender=male|female | +| Vedalken | /fantasy/vedalken-names | gender=male|female | +| Verdan | /fantasy/verdan-names | - | +| Warforged | /fantasy/warforged-names | - | +| Wilden | /fantasy/wilden-names | gender=male|female | +| Yuan-Ti | /fantasy/yuan-ti-names | - | + +## Modern Name Endpoints + +| Language/Type | Endpoint | Query Parameters | +|----------------------|-----------------------------|---------------------------| +| Modern English | /modern/english | gender=male|female|unisex | +| Modern Portuguese (EU)| /modern/portuguese | gender=male|female|unisex | + +## How to Query the API + +- All endpoints return a JSON object with a `names` array. +- Use the `gender` query parameter where supported (e.g., `?gender=female`). +- Example request: + +``` +GET http://localhost:8080/v1/fantasy/elf-names?gender=female +``` + +``` +GET http://localhost:8080/v1/modern/english?gender=unisex +``` + +## Example Response + +```json +{ + "names": [ + "Aelene Galanodel", + "Lia Siannodel", + ... + ] +} +``` diff --git a/Dockerfile b/Dockerfile index 7f93384..89c1f08 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,9 @@ # Start from the official Golang image for building -FROM golang:1.22-alpine AS builder +FROM golang:1.23.11-alpine AS builder WORKDIR /app COPY . . RUN go mod download -RUN go build -o app main.go +RUN go build -o app . # Use a minimal image for running FROM alpine:latest diff --git a/generators/modernenglish.go b/generators/modernenglish.go index 404dcbc..95be868 100644 --- a/generators/modernenglish.go +++ b/generators/modernenglish.go @@ -35,7 +35,8 @@ func GenerateModernEnglishNames(arr *ModernEnglishArrays, swear func(string) boo var names []string for i := 0; i < 10; i++ { var name string - if t == 1 { + switch t { + case 1: if i < 5 { rnd := rand.Intn(len(arr.Nm2)) rnd2 := rand.Intn(len(arr.Nm3)) @@ -45,7 +46,7 @@ func GenerateModernEnglishNames(arr *ModernEnglishArrays, swear func(string) boo rnd2 := rand.Intn(len(arr.Nm6)) name = arr.Nm5[rnd] + " " + arr.Nm6[rnd2] } - } else if t == 2 { + case 2: if i < 5 { rnd := rand.Intn(len(arr.Nm7)) rnd2 := rand.Intn(len(arr.Nm3)) @@ -55,7 +56,7 @@ func GenerateModernEnglishNames(arr *ModernEnglishArrays, swear func(string) boo rnd2 := rand.Intn(len(arr.Nm6)) name = arr.Nm7[rnd] + " " + arr.Nm6[rnd2] } - } else { + default: if i < 5 { rnd := rand.Intn(len(arr.Nm1)) rnd2 := rand.Intn(len(arr.Nm3))