Commit Graph

18 Commits (e2d9635074ad33cc8144adc434bcd90faae9c424)

Author SHA1 Message Date
Matt Jankowski 7e1a77ea51
Add base class for `api/v1/timelines/*` controllers () 2023-11-14 14:53:31 +00:00
Eugen Rochko 6084461cd0
Change unauthenticated responses to be cached in REST API () 2023-04-25 15:41:34 +02:00
Eugen Rochko 0cd0786aef
Revert filtering public timelines by locale by default () 2022-11-10 05:34:42 +01:00
Eugen Rochko 9f65909f42
Change public timelines to be filtered by current locale by default ()
In the absence of an opt-in to multiple specific languages in the
preferences, it makes more sense to filter by the user's presumed
language only (interface language or `lang` override)
2022-10-05 03:48:06 +02:00
Eugen Rochko e8bc187845
Refactor how public and tag timelines are queried () 2020-09-07 11:02:04 +02:00
Akihiko Odaki 64ef37b89d
Introduce ApplicationController#cache_collection_paginated_by_id ()
* Replace incorrect use of distinct with group

Some uses of ActiveRecord::QueryMethods#distinct pass field names but they
are incorrect for the current version of Rails.

ActiveRecord::QueryMethods#group provides the expected behavior and
benefits performance. See commit 6da24aad4cafdef8d8a2c92bac2002a5fc2fe9c8.

* Introduce ApplicationController#cache_collection_paginated_by_id

ApplicationController#cache_collection_paginated_by_id fuses
ApplicationController#cache_collection and Paginable.paginate_by_id.

An advantage of this method is that it prevents from modifying scope which
Paginable.paginate_by_id may provide.
ApplicationController#cache_collection always return an array and there
is no possibility of the scope modification. It is also clear for a
programmer, considering the implication of "cache".

This method can also emit more efficient queries by using
Cacheable.cache_ids before calling Paginable.paginate_by_id.
2020-08-28 12:31:56 +02:00
Akihiko Odaki e26e7a1cb5
Replace incorrect use of distinct with group ()
Some uses of ActiveRecord::QueryMethods#distinct pass field names but they
are incorrect for the current version of Rails.

ActiveRecord::QueryMethods#group provides the expected behavior and
benefits performance. See commit 6da24aad4cafdef8d8a2c92bac2002a5fc2fe9c8.
2020-08-28 12:29:59 +02:00
Takeshi Umeda 26b08a3c54
Add remote only to public timeline ()
* Add remote only to public timeline

* Fix code style
2020-05-10 10:36:18 +02:00
Eugen Rochko 0ae5c6312f
Remove useless `respond_to` calls () 2020-03-06 01:29:38 +01:00
ThibG 225edac118 Change /api/v1/timelines/public to require auth when public preview is off ()
Fixes 
2019-09-13 16:03:46 +02:00
Eugen Rochko f0fff3eb10
Support min_id-based pagination in REST API ()
* Allow min_id pagination in Feed#get

* Add min_id pagination to home and list timeline APIs

* Add min_id pagination to account statuses, public and tag APIs

* Remove unused stub in reports API

* Use min_id pagination in notifications, favourites, and fix order

* Fix HomeFeed#from_database not using paginate_by_id
2018-09-28 02:23:45 +02:00
Eugen Rochko 33513753b9
Fix unpermitted parameters warning when generating pagination URLs () 2018-04-02 02:09:50 +02:00
Eugen Rochko 68218d97c8
Add only_media param to public and hashtag timelines API () 2018-03-01 03:21:21 +01:00
Eugen Rochko fce8464077
Ensure that boolean params in the API are parsed for truthiness ()
Use Rails smart boolean cast to account for values such as "f",
"0", "false", etc. Previously, if a param was present in the request,
it would count as true.
2018-03-01 02:47:59 +01:00
Eugen Rochko 8b2cad5637 Refactor JSON templates to be generated with ActiveModelSerializers instead of Rabl () 2017-07-07 04:02:06 +02:00
Matt Jankowski 73540ffe6b Clean up for api/base controller ()
* Move ApiController to Api/BaseController

* API controllers inherit from Api::BaseController

* Add coverage for various error cases in api/base controller
2017-06-07 20:09:25 +02:00
Matt Jankowski d6774d2ca3 Refactor and spec coverage for api/v1/timelines actions () 2017-05-31 20:27:17 +02:00
Matt Jankowski 4289ed1d13 Refactor of API timeline actions ()
- Increase coverage to exercise all parts of each action
- Move into namespace to share common code
- Misc refactor of each action for smaller methods, simpler code
2017-05-23 18:11:39 +02:00