Files
app
assets
controllers
admin
api
v1
accounts_controller.rb
apps_controller.rb
blocks_controller.rb
favourites_controller.rb
follow_requests_controller.rb
follows_controller.rb
instances_controller.rb
media_controller.rb
mutes_controller.rb
notifications_controller.rb
reports_controller.rb
search_controller.rb
statuses_controller.rb
timelines_controller.rb
web
oembed_controller.rb
push_controller.rb
salmon_controller.rb
subscriptions_controller.rb
auth
concerns
oauth
settings
well_known
about_controller.rb
account_follow_controller.rb
account_unfollow_controller.rb
accounts_controller.rb
api_controller.rb
application_controller.rb
authorize_follow_controller.rb
follower_accounts_controller.rb
following_accounts_controller.rb
home_controller.rb
media_controller.rb
remote_follow_controller.rb
statuses_controller.rb
stream_entries_controller.rb
tags_controller.rb
helpers
lib
mailers
models
presenters
services
validators
views
workers
bin
config
db
docs
lib
log
public
spec
storybook
streaming
vendor
.babelrc
.buildpacks
.codeclimate.yml
.dockerignore
.editorconfig
.env.production.sample
.env.test
.env.vagrant
.eslintignore
.eslintrc
.gitignore
.nvmrc
.rspec
.rubocop.yml
.ruby-version
.slugignore
.travis.yml
CONTRIBUTING.md
Capfile
Dockerfile
Gemfile
Gemfile.lock
ISSUE_TEMPLATE.md
LICENSE
Procfile
README.md
Rakefile
Vagrantfile
app.json
config.ru
docker-compose.yml
package.json
scalingo.json
yarn.lock
hometown/app/controllers/api/v1/blocks_controller.rb
Eugen b89f007862 Make public timelines API not require user context/app credentials ()
* Make /api/v1/timelines/public and /api/v1/timelines/tag/:id public
Fix  - respect query params when generating pagination links in API

* Apply pagination fix to more APIs
2017-04-08 23:39:31 +02:00

26 lines
911 B
Ruby

# frozen_string_literal: true
class Api::V1::BlocksController < ApiController
before_action -> { doorkeeper_authorize! :follow }
before_action :require_user!
respond_to :json
def index
results = Block.where(account: current_account).paginate_by_max_id(limit_param(DEFAULT_ACCOUNTS_LIMIT), params[:max_id], params[:since_id])
accounts = Account.where(id: results.map(&:target_account_id)).map { |a| [a.id, a] }.to_h
@accounts = results.map { |f| accounts[f.target_account_id] }.compact
next_path = api_v1_blocks_url(pagination_params(max_id: results.last.id)) if results.size == limit_param(DEFAULT_ACCOUNTS_LIMIT)
prev_path = api_v1_blocks_url(pagination_params(since_id: results.first.id)) unless results.empty?
set_pagination_headers(next_path, prev_path)
end
private
def pagination_params(core_params)
params.permit(:limit).merge(core_params)
end
end