summaryrefslogtreecommitdiff
path: root/internal/api
AgeCommit message (Collapse)AuthorFiles
2022-10-03[performance] add user cache and database (#879)Libravatar tobi5
* go fmt * add + use user cache and database * fix import * update tests * remove unused relation
2022-09-29[bugfix] Fix incorrect use of bun.Ident (#866)Libravatar tobi1
* remove misused bun.Ident * test status delete via API * fix test
2022-09-29[feature] Add `meta robots` tag; allow robots to index profile card if user ↵Libravatar tobi1
is Discoverable (#842) * rework robots.txt response * don't let robots snippet from statuses/threads * allow robots to index if user is Discoverable * add license text
2022-09-29[chore] simplify generating log entry caller information (#863)Libravatar kim1
* vastly simplify logging caller information Signed-off-by: kim <grufwub@gmail.com> * fix failing test due to multiple calls to processor.Start() Signed-off-by: kim <grufwub@gmail.com> Signed-off-by: kim <grufwub@gmail.com>
2022-09-28[chore] update dependencies, bump to Go 1.19.1 (#826)Libravatar kim68
* update dependencies, bump Go version to 1.19 * bump test image Go version * update golangci-lint * update gotosocial-drone-build * sign * linting, go fmt * update swagger docs * update swagger docs * whitespace * update contributing.md * fuckin whoopsie doopsie * linterino, linteroni * fix followrequest test not starting processor * fix other api/client tests not starting processor * fix remaining tests where processor not started * bump go-runners version * don't check last-webfingered-at, processor may have updated this * update swagger command * update bun to latest version * fix embed to work the same as before with new bun Signed-off-by: kim <grufwub@gmail.com> Co-authored-by: tsmethurst <tobi.smethurst@protonmail.com>
2022-09-26[feature] Show + federate emojis in accounts (#837)Libravatar tobi2
* Start adding account emoji * get emojis serialized + deserialized nicely * update tests * set / retrieve emojis on accounts * show account emojis in web view * fetch emojis from db based on ids * fix typo in test * lint * fix pg migration * update tests * update emoji checking logic * update comment * clarify comments + add some spacing * tidy up loops a lil (thanks kim)
2022-09-19[bugfix] Server and closer bugfixes (#839)Libravatar tobi1
* defer streaming from storage more forcefully * shut down Server more gracefully * use command context as server BaseContext
2022-09-17[bugfix] Fix domains not being unblockable, log internal server errors from ↵Libravatar tobi1
API (#833) * log internal server errors from 500 api calls * don't exec into nil dest * don't exec into nil dest * log error in router logger not api errorhandling * update logging a tad * linter
2022-09-13[docs] Swagger document `/api/v1/custom_emojis` (#824)Libravatar tobi1
2022-09-12[feature] Allow users to set custom css for their profiles + threads (#808)Libravatar tobi5
* add custom css account property + db func to fetch * allow account to get/set custom css * serve custom css for an account * go fmt * use monospace for customcss, add link * add custom css to account cache * fix broken field * add custom css docs to user guide * add `accounts-allow-custom-css` config flag * add allow custom css to /api/v1/instance response * only show/set custom css if allowed to do so * only set/serve custom account css if enabled * update swagger docs * chain promise * make bool a bit clearer * use cache for GetAccountCustomCSSByUsername
2022-09-12[feature] Fetch + display custom emoji in statuses from remote instances (#807)Libravatar tobi1
* start implementing remote emoji fetcher * update status where pk * aaa * tidy up a little * check size limits for emojis * thank you linter, i love you <3 * update swagger docs * add emoji dereference test * make emoji max sizes configurable * normalize db.ErrAlreadyExists
2022-09-08[bugfix] Fix preposterous characters reserved per URL amount (#809)Libravatar tobi2
* clarify docs * tidy up consts, set reserved chars much lower * update tests
2022-09-06[feature] Custom emoji updates (serve emoji via s2s api, tune db models) (#805)Libravatar tobi4
* migrate emojis * add get emoji to s2s (federation) API * add new emoji db + cache functions * add shortcodeDomain lookup for emojis * check existing emojis w/cache, not w/constraints * go fmt * add putEmoji func * use new db emoji funcs instead of where * remove emojistringstotags func * add unique constraint back in * fix up broken migration * update index
2022-09-04[bugfix] Use 'Image' instead of unrecognized 'Gif' type for media ↵Libravatar tobi1
attachments (#801) * Store gifs as Image type * remove Gif attachment type, add Gifv type * update test
2022-09-04[feature] Set default header and avatar for API accounts to GtS ones (#799)Libravatar tobi2
* validate web-asset-base-dir * move default icons into converter * always ensure avatar + header on api accounts * update tests * add default header * don't return error from web module creation anymore * tidy a bit * use pngs for default avatars rather than svgs
2022-09-02[bugfix] Fix status fields `in_reply_to_id` and `in_reply_to_account_id` not ↵Libravatar tobi2
being nullable (#798) * make reply status fields nullable pointers * update tests
2022-08-31[feature] Add support for the exclude_types[] parameter on the notifications ↵Libravatar Blackle Morisanchetto3
endpoint (#784) * Add support for the exclude_types[] parameter on the notifications endpoint * Add swagger docs to notifications
2022-08-31[chore] Test fixes (#788)Libravatar tobi6
* use 'test' value for testrig storage backend * update test dependency * add WaitFor func in testrig * use WaitFor function instead of time.Sleep * tidy up tests * make SentMessages a sync.map * go fmt
2022-08-31[feature] add rate limit middleware (#741)Libravatar nya12
* feat: add rate limit middleware * chore: update vendor dir * chore: update readme with new dependency * chore: add rate limit infos to swagger.md file * refactor: add ipv6 mask limiter option Add IPv6 CIDR /64 mask * refactor: increase rate limit to 1000 Address https://github.com/superseriousbusiness/gotosocial/pull/741#discussion_r945584800 Co-authored-by: tobi <31960611+tsmethurst@users.noreply.github.com>
2022-08-26[bugfix] Check the length of form.MediaIDs instead of just checking for null ↵Libravatar Blackle Morisanchetto1
(#766)
2022-08-16return after redirects to web representation (#755)Libravatar tobi7
2022-08-15[chore] Update bun / sqlite versions; update gtsmodels (#754)Libravatar tobi16
* upstep bun and sqlite versions * allow specific columns to be updated in the db * only update necessary columns for user * bit tidier * only update necessary fields of media_attachment * only update relevant instance fields * update tests * update only specific account columns * use bool pointers on gtsmodels includes attachment, status, account, user * update columns more selectively * test all default fields on new account insert * updating remaining bools on gtsmodels * initialize pointer fields when extracting AP emoji * copy bools properly * add copyBoolPtr convenience function + test it * initialize false bool ptrs a bit more neatly
2022-08-10[bugfix] Fix thumbnails not taking exif rotation into account (#746)Libravatar tobi1
* use disintegration/imaging instead of nfnt/resize * update tests * use disintegration lib for thumbing (if necessary)
2022-08-08[feature] Add first iteration of a user panel at `/user` (#736)Libravatar tobi4
* start work on user panel * parse source first before checking if empty form * newline * set avi + header nicely * add posts settings * render signin a bit nicer on mobile * return OK json on successful change * return unauthorized on bad password * clarify message on insecure password * make login a bit prettier * add alt text + border round image previews * add logout button * add password change * styling updates * redirect /auth/edit to /user * update tests * fix validation tests * better labels, link to more info * make submit button generic component * move submit button inside forms * add autocomplete labels to password fields * fix indentation (thx eslint) * update eslintrc * eslint: no-unescaped-entities * initial deduplication between user and admin panel * add default status/post format setting * user panel styling for inputs * update user panel styling, include normalize css * add placeholder text * input padding Co-authored-by: f0x <f0x@cthu.lu>
2022-08-07[bugfix] Markdown formatting updates (#743)Libravatar tobi1
* add minify dependency specifically for markdown * rearrange markdown formatting * update markdown tests
2022-08-06[feature] Let accounts set default status format, and use this when ↵Libravatar tobi6
processing new statuses (#739) * add post_format to acct & use it when making post * update swagger docs * add status_format updating to frontend * fix up tests * post_format => status_format * add status_format to account validation
2022-08-05[bugfix] Parse source first before checking if empty form (#738)Libravatar tobi1
2022-08-01[feature] Implemented notification clear (#720)Libravatar Artémis2
* Implemented notification clear * Added the cache clear mechanism * added multi user check test
2022-07-30serve HEAD requests via the fileserver (#735)Libravatar tobi2
2022-07-28[feature] add 'state' oauth2 param to /oauth/authorize (#730)Libravatar tobi6
2022-07-22[bugfix] Fix Toot CLI media attachments not working properly (#726)v0.3.8Libravatar tobi2
2022-07-22[bugfix] Make `/api/v2/media` more compatible with masto API (#724)Libravatar tobi5
* update docs * make api version into a path param * update tests * workaround to unset URL if using v2 of api * make some fields into pointers
2022-07-20[chore] Update image/video size defaults to mastodon's (#723)Libravatar tobi1
2022-07-19[bugfix] html escape special characters in text instead of totally removing ↵Libravatar tobi1
them (#719) * remove minify dependency * tidy up some tests * remove pre + postformat funcs * rework sanitization + formatting * update tests * add some more markdown tests
2022-07-19[chore] use our own logging implementation (#716)Libravatar kim11
* first commit Signed-off-by: kim <grufwub@gmail.com> * replace logging with our own log library Signed-off-by: kim <grufwub@gmail.com> * fix imports Signed-off-by: kim <grufwub@gmail.com> * fix log imports Signed-off-by: kim <grufwub@gmail.com> * add license text Signed-off-by: kim <grufwub@gmail.com> * fix package import cycle between config and log package Signed-off-by: kim <grufwub@gmail.com> * fix empty kv.Fields{} being passed to WithFields() Signed-off-by: kim <grufwub@gmail.com> * fix uses of log.WithFields() with whitespace issues and empty slices Signed-off-by: kim <grufwub@gmail.com> * *linter related grumbling* Signed-off-by: kim <grufwub@gmail.com> * gofmt the codebase! also fix more log.WithFields() formatting issues Signed-off-by: kim <grufwub@gmail.com> * update testrig code to match new changes Signed-off-by: kim <grufwub@gmail.com> * fix error wrapping in non fmt.Errorf function Signed-off-by: kim <grufwub@gmail.com> * add benchmarking of log.Caller() vs non-cached Signed-off-by: kim <grufwub@gmail.com> * fix syslog tests, add standard build tags to test runner to ensure consistency Signed-off-by: kim <grufwub@gmail.com> * make syslog tests more robust Signed-off-by: kim <grufwub@gmail.com> * fix caller depth arithmatic (is that how you spell it?) Signed-off-by: kim <grufwub@gmail.com> * update to use unkeyed fields in kv.Field{} instances Signed-off-by: kim <grufwub@gmail.com> * update go-kv library Signed-off-by: kim <grufwub@gmail.com> * update libraries list Signed-off-by: kim <grufwub@gmail.com> * fuck you linter get nerfed Signed-off-by: kim <grufwub@gmail.com> Co-authored-by: tobi <31960611+tsmethurst@users.noreply.github.com>
2022-07-15[performance] Add long cache-control max age to fileserver (#710)Libravatar tobi1
2022-07-13[feature] Add back/next buttons to profiles for paging through statuses (#708)Libravatar tobi1
* add GetAccountWebStatuses to db * add WebStatusesGet func to processor * don't add limit to next/prev links if 0 * take query params for next/prev statuses * add separate next + prev links for convenience * show 'nothing here' message if no statuses exist * add back / next links to profiles * allow paging down only * go fmt ./... * 'recent public toots' -> 'latest public toots'
2022-07-12[chore] improved router logging, recovery and error handling (#705)Libravatar kim25
* move panic recovery to logging middleware, improve logging + panic recovery logic Signed-off-by: kim <grufwub@gmail.com> * remove dead code Signed-off-by: kim <grufwub@gmail.com> * remove skip paths code Signed-off-by: kim <grufwub@gmail.com> * re-enable log quoting Signed-off-by: kim <grufwub@gmail.com> * use human-friendly bytesize in logging body size Signed-off-by: kim <grufwub@gmail.com> * only disable quoting in debug builds Signed-off-by: kim <grufwub@gmail.com> * use logrus level instead of debug.DEBUG() to enable/disable quoting Signed-off-by: kim <grufwub@gmail.com> * shutup linter Signed-off-by: kim <grufwub@gmail.com> * fix instance tests Signed-off-by: kim <grufwub@gmail.com> * fix gin test contexts created with missing engine HTML renderer Signed-off-by: kim <grufwub@gmail.com> * add note regarding not logging query parameters Signed-off-by: kim <grufwub@gmail.com> * better explain 'DisableQuoting' logic Signed-off-by: kim <grufwub@gmail.com> * add license text Signed-off-by: kim <grufwub@gmail.com>
2022-07-08[chore] Improve panic handling (#700)Libravatar kim1
* add miekg/dns dependency * set/validate accountDomain * move finger to dereferencer * totally break GetRemoteAccount * start reworking finger func a bit * start reworking getRemoteAccount a bit * move mention parts to namestring * rework webfingerget * use util function to extract webfinger parts * use accountDomain * rework finger again, final form * just a real nasty commit, the worst * remove refresh from account * use new ASRepToAccount signature * fix incorrect debug call * fix for new getRemoteAccount * rework GetRemoteAccount * start updating tests to remove repetition * break a lot of tests Move shared test logic into the testrig, rather than having it scattered all over the place. This allows us to just mock the transport controller once, and have all tests use it (unless they need not to for some other reason). * fix up tests to use main mock httpclient * webfinger only if necessary * cheeky linting with the lads * update mentionName regex recognize instance accounts * don't finger instance accounts * test webfinger part extraction * increase default worker count to 4 per cpu * don't repeat regex parsing * final search for discovered accountDomain * be more permissive in namestring lookup * add more extraction tests * simplify GetParseMentionFunc * skip long search if local account * fix broken test * panics get logged at error level, now include stacktrace Signed-off-by: kim <grufwub@gmail.com> Co-authored-by: tsmethurst <tobi.smethurst@protonmail.com>
2022-07-05[bugfix] Fix footer info fields not wrapping (#694)Libravatar tobi1
* flex-wrap footer items * add testrig instance entry with more info set
2022-07-05[bugfix] Fix incorrect domain showing in profiles (#693)Libravatar tobi2
* use instance account_domain in profile * add instance account_domain field
2022-07-04[bugfix] Visibility fixes (#687)Libravatar tobi1
* test self boost * only CC to public when necessary
2022-07-03[chore] configure instance.Version for testrig (#659)Libravatar f0x521
* configure instance.Version for testrig * update instancepatch tests Co-authored-by: tobi <31960611+tsmethurst@users.noreply.github.com> Co-authored-by: tsmethurst <tobi.smethurst@protonmail.com>
2022-07-03[feature] S3 support (#674)Libravatar Dominik Süß15
* feat: vendor minio client * feat: introduce storage package with s3 support * feat: serve s3 files directly this saves a lot of bandwith as the files are fetched from the object store directly * fix: use explicit local storage in tests * feat: integrate s3 storage with the main server * fix: add s3 config to cli tests * docs: explicitly set values in example config also adds license header to the storage package * fix: use better http status code on s3 redirect HTTP 302 Found is the best fit, as it signifies that the resource requested was found but not under its presumed URL 307/TemporaryRedirect would mean that this resource is usually located here, not in this case 303/SeeOther indicates that the redirection does not link to the requested resource but to another page * refactor: use context in storage driver interface
2022-06-26[feature] Use default instance thumbnail if instance account header not set ↵Libravatar tobi1
(#672)
2022-06-26[feature] add configuration to `/api/v1/instance` response (#670)Libravatar tobi2
* add configuration object to api instance model * regenerate swagger docs * add func to return all supported mimes for media * add instance configuration to api serialization * fix json tags * update instance endpoint tests * fix typeutils tests * final regen of swagger docs * omitempty instance configuration
2022-06-25[bugfix] disallow following or blocking yoursel (#667)Libravatar ugla2
Closes #664
2022-06-24[bugfix] allow setting empty email via instance patch (#665)Libravatar tobi1
2022-06-23[feature] Implement `/api/v1/instance/peers` endpoint (#660)Libravatar tobi8
* add missing license headers * start adding instance peers get * rename domainblock.go * embed domain in domainblock so it can be reused * update swagger docs * add test instances to db * update tests * add/update instancepeersget * update domain model * add getinstancepeers to db * instance-expose-peers, instance-expose-suspended * add auth checks for both current filters * attach endpoint to router * include public comment * obfuscate domain if required * go mod tidy * update swagger docs * remove unnecessary comment * return 'flat' peerlist if no query params provided
2022-06-19[chore] make tests more cacheable by avoiding time.Now() (#656)Libravatar tobi1