From e79e90316a990f0539f6ed0234f887ba5044cc47 Mon Sep 17 00:00:00 2001 From: Gil Desmarais Date: Fri, 1 May 2026 12:54:35 +0200 Subject: [PATCH] Finish feed creation route cleanup --- app/web/api/v1/create_feed.rb | 13 ++++++++++++- app/web/routes/api_v1/feed_routes.rb | 2 -- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/app/web/api/v1/create_feed.rb b/app/web/api/v1/create_feed.rb index feb9b702..82a59018 100644 --- a/app/web/api/v1/create_feed.rb +++ b/app/web/api/v1/create_feed.rb @@ -9,7 +9,7 @@ module Api module V1 ## # Creates stable feed records from authenticated API requests. - module CreateFeed # rubocop:disable Metrics/ModuleLength + module CreateFeed FEED_ATTRIBUTE_KEYS = %i[id name url feed_token public_url json_public_url created_at updated_at].freeze FEED_METADATA_KEYS = @@ -41,6 +41,8 @@ def call(request) private + # @param request [Rack::Request] + # @return [Hash] def require_account(request) account = Auth.authenticate(request) raise Html2rss::Web::UnauthorizedError, 'Authentication required' unless account @@ -48,17 +50,24 @@ def require_account(request) account end + # @param request [Rack::Request] + # @param account [Hash] + # @return [Html2rss::Web::Api::V1::FeedMetadata::CreateParams] def build_create_params(request, account) url = validated_url(request_params(request)['url'], account) FeedMetadata::CreateParams.new(url:, name: FeedMetadata.site_title_for(url)) end + # @param request [Rack::Request] + # @return [Hash] def request_params(request) return request.params unless json_request?(request) request.GET.merge(parsed_json_body(request)) end + # @param request [Rack::Request] + # @return [Hash] def parsed_json_body(request) raw_body = request.body.read request.body.rewind @@ -72,6 +81,8 @@ def parsed_json_body(request) raise Html2rss::Web::BadRequestError, 'Invalid JSON payload' end + # @param request [Rack::Request] + # @return [Boolean] def json_request?(request) request.env['CONTENT_TYPE'].to_s.include?('application/json') end diff --git a/app/web/routes/api_v1/feed_routes.rb b/app/web/routes/api_v1/feed_routes.rb index 2c54cce0..3478d6ba 100644 --- a/app/web/routes/api_v1/feed_routes.rb +++ b/app/web/routes/api_v1/feed_routes.rb @@ -20,8 +20,6 @@ def call(router) router.post do JSON.generate(Api::V1::CreateFeed.call(router)) end - - raise NotFoundError end end end