Skip to main content

ResourceError

Enum ResourceError 

Source
pub enum ResourceError {
    NotFound {
        resource: &'static str,
        id: String,
    },
    ValidationFailed {
        errors: HashMap<String, Vec<String>>,
        request_id: Option<String>,
    },
    PathResolutionFailed {
        resource: &'static str,
        operation: &'static str,
    },
    Http(HttpError),
    Rest(RestError),
}
Expand description

Error type for REST resource operations.

This enum provides semantic error types for resource operations, mapping HTTP error codes to meaningful variants while preserving the request ID for debugging.

§Example

use shopify_sdk::rest::ResourceError;
use std::collections::HashMap;

// Not found error
let error = ResourceError::NotFound {
    resource: "Product",
    id: "123".to_string(),
};
assert!(error.to_string().contains("Product"));
assert!(error.to_string().contains("123"));

// Validation failed error
let mut errors = HashMap::new();
errors.insert("title".to_string(), vec!["can't be blank".to_string()]);
let error = ResourceError::ValidationFailed {
    errors,
    request_id: Some("abc-123".to_string()),
};
assert!(error.to_string().contains("Validation failed"));

Variants§

§

NotFound

The resource was not found (HTTP 404).

This error is returned when attempting to find, update, or delete a resource that doesn’t exist.

Fields

§resource: &'static str

The type name of the resource (e.g., “Product”, “Order”).

§id: String

The ID that was requested.

§

ValidationFailed

Validation failed for the resource (HTTP 422).

This error is returned when the API rejects a create or update request due to validation errors.

Fields

§errors: HashMap<String, Vec<String>>

A map of field names to error messages.

§request_id: Option<String>

The request ID for debugging (from X-Request-Id header).

§

PathResolutionFailed

No valid path matches the provided IDs and operation.

This error is returned when attempting an operation without providing the required parent resource IDs.

Fields

§resource: &'static str

The type name of the resource.

§operation: &'static str

The operation being attempted (e.g., “find”, “all”, “delete”).

§

Http(HttpError)

An HTTP-level error occurred.

This variant wraps HttpError for errors that don’t map to a specific resource error type.

§

Rest(RestError)

A REST-level error occurred.

This variant wraps RestError for REST client errors.

Implementations§

Source§

impl ResourceError

Source

pub fn from_http_response( code: u16, body: &Value, resource: &'static str, id: Option<&str>, request_id: Option<&str>, ) -> Self

Creates a ResourceError from an HTTP response status code.

Maps HTTP status codes to semantic error variants:

  • 404 -> NotFound
  • 422 -> ValidationFailed (parsing errors from body)
  • Other -> Http
§Arguments
  • code - The HTTP status code
  • body - The response body as JSON
  • resource - The resource type name (e.g., “Product”)
  • id - The resource ID (if applicable)
  • request_id - The X-Request-Id header value
§Example
use shopify_sdk::rest::ResourceError;
use serde_json::json;

let error = ResourceError::from_http_response(
    404,
    &json!({"error": "Not found"}),
    "Product",
    Some("123"),
    Some("req-123"),
);
assert!(matches!(error, ResourceError::NotFound { .. }));
Source

pub fn request_id(&self) -> Option<&str>

Returns the request ID if available.

Useful for debugging and error reporting.

Trait Implementations§

Source§

impl Debug for ResourceError

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for ResourceError

Source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Error for ResourceError

Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl From<HttpError> for ResourceError

Source§

fn from(source: HttpError) -> Self

Converts to this type from the input type.
Source§

impl From<RestError> for ResourceError

Source§

fn from(source: RestError) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more