Skip to content

Allow custom headers and extensions for twirp clients and servers; unify traits; unify error type #212

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 26 commits into from
Jul 23, 2025
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Better docs
  • Loading branch information
tclem committed Jul 17, 2025
commit 067638f11b4faae352469c07a01b99668e440e7c
18 changes: 12 additions & 6 deletions crates/twirp/src/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -153,23 +153,29 @@ impl Serialize for TwirpErrorCode {
}
}

// Twirp error responses are always sent as JSON.
/// A Twirp error response meeting the spec: https://twitchtv.github.io/twirp/docs/spec_v7.html#error-codes.
///
/// NOTE: Twirp error responses are always sent as JSON.
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Error)]
pub struct TwirpErrorResponse {
/// One of the Twirp error codes.
pub code: TwirpErrorCode,

/// A human-readable message describing the error.
pub msg: String,

/// (Optional) An object with string values holding arbitrary additional metadata describing the error.
#[serde(skip_serializing_if = "HashMap::is_empty")]
#[serde(default)]
pub meta: HashMap<String, String>,

/// (Optional) How long client should wait before retrying. This should be present only if the response is an HTTP
/// 429 or 503.
/// (Optional) How long clients should wait before retrying. If set, will be included in the `Retry-After` response
/// header. Generally only valid for HTTP 429 or 503 responses. NOTE: This is *not* technically part of the twirp
/// spec.
#[serde(skip_serializing)]
retry_after: Option<Duration>,

/// Debug form of the underlying Rust error.
///
/// NOT returned to clients.
/// Debug form of the underlying Rust error (if any). NOT returned to clients.
#[serde(skip_serializing)]
rust_error: Option<String>,
}
Expand Down
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy