21871a387c
generic: return content length alongside body
...
This increases efficiency for bigger response bodies.
Signed-off-by: Yonah <contrib@gensokyo.uk>
2025-09-18 06:06:52 +09:00
00b50dab08
cmd/msrfetch: save enriched compound data
...
This implementation of cmd/msrfetch is only temporary, used to fetch the
testdata. At this point we have all metadata present in the repo and all
that is left is to fetch the media.
Signed-off-by: Yonah <contrib@gensokyo.uk>
2025-09-18 05:55:19 +09:00
343a8c5f45
generic: provide configured encoder
...
This encoder emits data identical to upstream API response body.
Signed-off-by: Yonah <contrib@gensokyo.uk>
2025-09-18 04:53:12 +09:00
bb1164d081
song: enrich metadata from API
...
This should be the last of the API interactions we need.
Signed-off-by: Yonah <contrib@gensokyo.uk>
2025-09-18 04:10:38 +09:00
d4789d958b
composite: flatten album and song data
...
This establishes relation between album and song.
Signed-off-by: Yonah <contrib@gensokyo.uk>
2025-09-18 01:46:07 +09:00
2d6b87702d
generic: move StringInt padding to string method
...
This allows the implementation to be reused for url and filename
formatting in the downloader.
Signed-off-by: Yonah <contrib@gensokyo.uk>
2025-09-17 08:02:18 +09:00
ea54772c03
song: struct for /api/song/%d
...
This also includes tests against a sample response from the
https://monster-siren.hypergryph.com/api/song/048794 endpoint.
Signed-off-by: Yonah <contrib@gensokyo.uk>
2025-09-17 07:49:06 +09:00
c2c4171a3a
generic: emulate nullable string behaviour
...
This fills the gap for nullable strings returned by the API.
Signed-off-by: Yonah <contrib@gensokyo.uk>
2025-09-17 07:47:57 +09:00
7dd470f9ae
generic: struct for response common fields
...
This is common across all responses.
Signed-off-by: Yonah <contrib@gensokyo.uk>
2025-09-17 06:57:16 +09:00
033357459f
songs: struct for /api/songs
...
This also includes tests against a sample response from the
https://monster-siren.hypergryph.com/api/songs endpoint.
Signed-off-by: Yonah <contrib@gensokyo.uk>
2025-09-17 06:41:57 +09:00
b001ef50aa
generic: pad for different lengths
...
This can be autodetected based on existing string.
Signed-off-by: Yonah <contrib@gensokyo.uk>
2025-09-17 06:40:35 +09:00
2f34599823
generic: generalise json check
...
This code is shared for all json checks.
Signed-off-by: Yonah <contrib@gensokyo.uk>
2025-09-17 06:33:11 +09:00
821e46d405
albums: struct for /api/albums
...
This also includes tests against a sample response from the
https://monster-siren.hypergryph.com/api/albums endpoint.
Signed-off-by: Yonah <contrib@gensokyo.uk>
2025-09-17 06:15:59 +09:00
cc45f04800
generic: pad string representation
...
This replicates api behaviour.
Signed-off-by: Yonah <contrib@gensokyo.uk>
2025-09-17 06:01:00 +09:00
5b9d1e4fe8
generic: parse string representation of integer
...
This makes the data easier to handle down the pipeline.
Signed-off-by: Yonah <contrib@gensokyo.uk>
2025-09-17 05:41:40 +09:00
bddce42723
go: initialise go module
...
Signed-off-by: Yonah <contrib@gensokyo.uk>
2025-09-17 04:51:52 +09:00