- Fixed Firecrawl webhook payloads to ensure proper data handling and delivery. - Removed unused Robin AI code to improve codebase cleanliness and maintainability. - Implement authentication for the Firecrawl endpoint to improve security. A key is generated to secure the webhook URLs from FireCrawl. --------- Co-authored-by: Pranav <pranavrajs@gmail.com>
48 lines
1019 B
Ruby
48 lines
1019 B
Ruby
class Enterprise::Webhooks::FirecrawlController < ActionController::API
|
|
before_action :validate_token
|
|
|
|
def process_payload
|
|
Captain::Tools::FirecrawlParserJob.perform_later(assistant_id: assistant.id, payload: payload) if crawl_page_event?
|
|
|
|
head :ok
|
|
end
|
|
|
|
private
|
|
|
|
include Captain::FirecrawlHelper
|
|
|
|
def payload
|
|
permitted_params[:data]&.first&.to_h
|
|
end
|
|
|
|
def validate_token
|
|
render json: { error: 'Invalid access_token' }, status: :unauthorized if assistant_token != permitted_params[:token]
|
|
end
|
|
|
|
def assistant
|
|
@assistant ||= Captain::Assistant.find(permitted_params[:assistant_id])
|
|
end
|
|
|
|
def assistant_token
|
|
generate_firecrawl_token(assistant.id, assistant.account_id)
|
|
end
|
|
|
|
def crawl_page_event?
|
|
permitted_params[:type] == 'crawl.page'
|
|
end
|
|
|
|
def permitted_params
|
|
params.permit(
|
|
:type,
|
|
:assistant_id,
|
|
:token,
|
|
:success,
|
|
:id,
|
|
:metadata,
|
|
:format,
|
|
:firecrawl,
|
|
data: [:markdown, { metadata: {} }]
|
|
)
|
|
end
|
|
end
|