Module: Ask::Honeybadger
- Defined in:
- lib/ask/honeybadger/client.rb,
lib/ask/honeybadger/context.rb,
lib/ask/honeybadger/version.rb,
lib/ask/honeybadger/error_guide.rb
Defined Under Namespace
Modules: Errors Classes: ClientProxy
Constant Summary collapse
- BASE_URL =
Base URL for the Honeybadger Data API.
"https://app.honeybadger.io/v2"- DESCRIPTION =
Human-readable description of the Honeybadger service context.
"Honeybadger — error tracking via the Honeybadger API"- DOCS_URL =
Base URL for Honeybadger API documentation.
"https://docs.honeybadger.io/api/"- AUTH_NAME =
Credential name used with Ask::Auth.resolve.
:honeybadger_token- AUTH_HOW =
Instructions for obtaining a Honeybadger API token.
"https://app.honeybadger.io/users/edit"- GEM_NAME =
Gem name for the Honeybadger Ruby integration.
"honeybadger-ruby"- QUICK_START =
Quick-start Ruby code snippet for agents to copy-paste.
<<~RUBY client = Ask::Honeybadger.client # List faults for a project: faults = client.get("/v2/projects/PROJECT_ID/faults") # Get fault details: fault = client.get("/v2/projects/PROJECT_ID/faults/FAULT_ID") # List projects: projects = client.get("/v2/projects") # Convenience helpers: Ask::Honeybadger.recent_faults(project_id: "PROJECT_ID", limit: 10) Ask::Honeybadger.fault_summary(project_id: "PROJECT_ID") RUBY
- VERSION =
"0.1.1"
Class Method Summary collapse
-
.client ⇒ Faraday::Connection
Returns an authenticated Faraday client for the Honeybadger Data API.
-
.fault(project_id:, fault_id:) ⇒ Hash
Convenience: fetch a single fault by ID.
-
.fault_summary(project_id:, **params) ⇒ Hash
Convenience: get a fault summary (counts grouped by environment, status, etc.).
-
.projects ⇒ Hash
Convenience: list all projects accessible with this token.
-
.recent_faults(project_id:, limit: 25, **params) ⇒ Hash
Convenience: fetch recent faults for a project.
Class Method Details
.client ⇒ Faraday::Connection
Returns an authenticated Faraday client for the Honeybadger Data API.
Resolves the Honeybadger API token via Ask::Auth.resolve(:honeybadger_token) and configures the client with sensible defaults:
-
request: JSON encoding -
response: JSON decoding -
retry: Faraday retry middleware (3 retries, exponential backoff) -
auth: HTTP Basic Auth with token as username and blank password
The client is wrapped in a ClientProxy that converts Faraday::UnauthorizedError into Ask::Auth::InvalidCredential.
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/ask/honeybadger/client.rb', line 32 def self.client token = Ask::Auth.resolve(:honeybadger_token) conn = Faraday.new(url: BASE_URL) do |f| # HTTP Basic Auth: token is the username, password is blank f.request :authorization, :basic, token, "" # JSON request/response handling f.request :json f.response :json # Retry middleware for transient failures f.request :retry, max: 3, interval: 1, backoff_factor: 2, retry_statuses: [429, 500, 502, 503] f.adapter Faraday.default_adapter end ClientProxy.new(conn) end |
.fault(project_id:, fault_id:) ⇒ Hash
Convenience: fetch a single fault by ID.
78 79 80 |
# File 'lib/ask/honeybadger/client.rb', line 78 def self.fault(project_id:, fault_id:) client.get("/v2/projects/#{project_id}/faults/#{fault_id}").body end |
.fault_summary(project_id:, **params) ⇒ Hash
Convenience: get a fault summary (counts grouped by environment, status, etc.).
69 70 71 |
# File 'lib/ask/honeybadger/client.rb', line 69 def self.fault_summary(project_id:, **params) client.get("/v2/projects/#{project_id}/faults/summary", params).body end |
.projects ⇒ Hash
Convenience: list all projects accessible with this token.
85 86 87 |
# File 'lib/ask/honeybadger/client.rb', line 85 def self.projects client.get("/v2/projects").body end |
.recent_faults(project_id:, limit: 25, **params) ⇒ Hash
Convenience: fetch recent faults for a project.
59 60 61 62 |
# File 'lib/ask/honeybadger/client.rb', line 59 def self.recent_faults(project_id:, limit: 25, **params) params[:limit] = limit client.get("/v2/projects/#{project_id}/faults", params).body end |