diff options
author | ThibG <thib@sitedethib.com> | 2018-10-09 12:11:14 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-09 12:11:14 +0200 |
commit | 4134a10549a833ad5ab18b3c579304919d594ce1 (patch) | |
tree | 696f4b453ad029ffda3d0925c484c11b27b95cc6 /app/controllers | |
parent | d0b1369a853dc2e5b7934c148547f71f8d103859 (diff) | |
parent | b368d3c15ddfca983e89ff2858f7f03eb7147d83 (diff) |
Merge pull request #770 from ThibG/glitch-soc/merge-upstream
Merge upstream changes
Diffstat (limited to 'app/controllers')
-rw-r--r-- | app/controllers/admin/settings_controller.rb | 2 | ||||
-rw-r--r-- | app/controllers/api/v1/conversations_controller.rb | 55 | ||||
-rw-r--r-- | app/controllers/concerns/signature_verification.rb | 10 |
3 files changed, 57 insertions, 10 deletions
diff --git a/app/controllers/admin/settings_controller.rb b/app/controllers/admin/settings_controller.rb index c05c4c841..46e9b2c07 100644 --- a/app/controllers/admin/settings_controller.rb +++ b/app/controllers/admin/settings_controller.rb @@ -20,6 +20,7 @@ module Admin skin thumbnail hero + mascot min_invite_role activity_api_enabled peers_api_enabled @@ -42,6 +43,7 @@ module Admin UPLOAD_SETTINGS = %w( thumbnail hero + mascot ).freeze def edit diff --git a/app/controllers/api/v1/conversations_controller.rb b/app/controllers/api/v1/conversations_controller.rb new file mode 100644 index 000000000..736cb21ca --- /dev/null +++ b/app/controllers/api/v1/conversations_controller.rb @@ -0,0 +1,55 @@ +# frozen_string_literal: true + +class Api::V1::ConversationsController < Api::BaseController + LIMIT = 20 + + before_action -> { doorkeeper_authorize! :read, :'read:statuses' } + before_action :require_user! + after_action :insert_pagination_headers + + respond_to :json + + def index + @conversations = paginated_conversations + render json: @conversations, each_serializer: REST::ConversationSerializer + end + + private + + def paginated_conversations + AccountConversation.where(account: current_account) + .paginate_by_id(limit_param(LIMIT), params_slice(:max_id, :since_id, :min_id)) + end + + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + + def next_path + if records_continue? + api_v1_conversations_url pagination_params(max_id: pagination_max_id) + end + end + + def prev_path + unless @conversations.empty? + api_v1_conversations_url pagination_params(min_id: pagination_since_id) + end + end + + def pagination_max_id + @conversations.last.last_status_id + end + + def pagination_since_id + @conversations.first.last_status_id + end + + def records_continue? + @conversations.size == limit_param(LIMIT) + end + + def pagination_params(core_params) + params.slice(:limit).permit(:limit).merge(core_params) + end +end diff --git a/app/controllers/concerns/signature_verification.rb b/app/controllers/concerns/signature_verification.rb index 4d77fa432..5f95fa346 100644 --- a/app/controllers/concerns/signature_verification.rb +++ b/app/controllers/concerns/signature_verification.rb @@ -87,16 +87,6 @@ module SignatureVerification end.join("\n") end - def matches_time_window? - begin - time_sent = DateTime.httpdate(request.headers['Date']) - rescue ArgumentError - return false - end - - (Time.now.utc - time_sent).abs <= 30 - end - def body_digest "SHA-256=#{Digest::SHA256.base64digest(request_body)}" end |