gotosocial/internal/api
ewwwin 424f62dd70
[bugfix] Store and expose status content type (#3870)
* Add ContentType to internal models

* Add ContentType to API models StatusSource and StatusEdit

* Add helpers to convert between API/internal StatusContentType

* Write status content type on create/edit

* Add migration

* Update API docs

go run github.com/go-swagger/go-swagger/cmd/swagger generate spec --scan-models --exclude-deps --output docs/api/swagger.yaml

* ensure ContentType is updated anywhere Text is

* Update docs, take care of TODOs

* Set ContentType in more places where Text is set

* We don't actually use ContentType on the API status model

* Update StatusSource test

* Remove unused helper function I copied

* Revert change to StatusContentType swagger annotation

I'm going to include this in a follow-on PR instead.

* Add test for updating content type in edits

* Return a value from processContentType instead of modifying the existing status

Fixes an issue that was caught by the test I just added - the recorded edit would be marked with the *new* content type instead of the old one, which is obviously bad

* Add test for handling of statuses with no stored content type

* repurpose an existing test status instead of adding a new one to avoid breaking other tests

* Add test to ensure newly created statuses always have content type saved

* Do include content type on status API model actually

This is mostly important when deleting and redrafting.

The comment on `apimodel.Status.Text` implies that it's not sent except in response to status deletion, but actually this doesn't seem to be the case; it also appears to be present in responses to creations and normal fetches and stuff. So I'm treating `ContentType` the same here.

* Update new tests to check content type on API statuses

* Check content type of API statuses in all tests where text is checked

* update other api tests with status content type field

* Add test ensuring text and content type are returned when deleting a status

* Convert processContentType to free function and remove unused parameter

* check for the correct value in the deletion test

* Be explicit about this test status having an empty content type

* Use omitempty consistently on API models

* clean up the final diff a bit

* one more swagger regen for the road

* Handle nil statuses in processContentType

* Don't pass processContentType the entire edit form, it doesn't need it

* Move processContentType to common.go and use for creation as well

* Remove unused parameters to ContentTypeToAPIContentType
2025-03-06 16:31:52 +00:00
..
activitypub [feature] Refactor tokens, allow multiple app redirect_uris (#3849) 2025-03-03 15:03:36 +00:00
auth [feature] Refactor tokens, allow multiple app redirect_uris (#3849) 2025-03-03 15:03:36 +00:00
client [bugfix] Store and expose status content type (#3870) 2025-03-06 16:31:52 +00:00
fileserver [feature] Refactor tokens, allow multiple app redirect_uris (#3849) 2025-03-03 15:03:36 +00:00
health [feature] Add healthcheck endpoints /livez and /readyz (#2783) 2024-03-25 17:05:14 +00:00
metrics [chore] update otel libraries (#3740) 2025-02-06 12:14:37 +01:00
model [bugfix] Store and expose status content type (#3870) 2025-03-06 16:31:52 +00:00
nodeinfo [feature] Change instance-stats-randomize to instance-stats-mode with multiple options; implement nodeinfo 2.1 (#3734) 2025-02-04 16:52:42 +01:00
robots [feature] Use ETag for robots.txt to prevent mishaps (#3829) 2025-02-24 11:17:18 +01:00
util [feature] Refactor tokens, allow multiple app redirect_uris (#3849) 2025-03-03 15:03:36 +00:00
wellknown [feature] Refactor tokens, allow multiple app redirect_uris (#3849) 2025-03-03 15:03:36 +00:00
activitypub.go [feature/performance] Wrap incoming HTTP requests in timeout handler (#2353) 2023-11-13 19:48:51 +01:00
auth.go [feature/performance] Wrap incoming HTTP requests in timeout handler (#2353) 2023-11-13 19:48:51 +01:00
client.go [feature] Add token review / delete to backend + settings panel (#3845) 2025-03-04 10:01:25 +00:00
fileserver.go [feature] Ratelimit + serve emoji images on separate router group (#2548) 2024-01-22 15:17:04 +00:00
health.go [feature] Add healthcheck endpoints /livez and /readyz (#2783) 2024-03-25 17:05:14 +00:00
metrics.go [chore/bugfix] Fix double gzip on prometheus endpoint (#2383) 2023-11-23 19:10:51 +01:00
nodeinfo.go [feature] Use X-Robots-Tag headers to instruct scrapers/crawlers (#3737) 2025-02-05 12:47:13 +01:00
robots.go [feature] Use ETag for robots.txt to prevent mishaps (#3829) 2025-02-24 11:17:18 +01:00
wellknown.go [feature/performance] Wrap incoming HTTP requests in timeout handler (#2353) 2023-11-13 19:48:51 +01:00