Module: OpenRouterUsageTracker::Adapter::Base
- Included in:
- OpenRouterUsageTracker
- Defined in:
- lib/open_router_usage_tracker/adapter/base.rb
Constant Summary collapse
- SUPPORTED_PROVIDERS =
[ "open_ai", "open_router", "google", "anthropic", "x_ai" ].freeze
Instance Method Summary collapse
-
#log(response:, user:, provider: "open_router", store_raw_response: true) ⇒ OpenRouterUsageTracker::UsageLog
Logs an API usage event, creating a UsageLog and updating the DailySummary.
Instance Method Details
#log(response:, user:, provider: "open_router", store_raw_response: true) ⇒ OpenRouterUsageTracker::UsageLog
Logs an API usage event, creating a UsageLog and updating the DailySummary. This is the primary method for recording usage data.
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/open_router_usage_tracker/adapter/base.rb', line 30 def log(response:, user:, provider: "open_router", store_raw_response: true) unless SUPPORTED_PROVIDERS.include?(provider) raise ArgumentError.new("Unsupported provider: #{provider}. Supported providers are: #{SUPPORTED_PROVIDERS.join(', ')}") end parser_class = "OpenRouterUsageTracker::Parsers::#{provider.camelize}".constantize attributes = parser_class.parse(response) attributes[:user] = user attributes[:raw_usage_response] = {} unless store_raw_response attributes[:provider] = provider ApplicationRecord.transaction do usage_log = OpenRouterUsageTracker::UsageLog.create!(attributes) update_daily_summary(usage_log) usage_log end end |