package
0.4.0-alpha
Repository: https://github.com/instill-ai/x.git
Documentation: pkg.go.dev

# README

errmsg

Add end-user messages to errors.

err.Error() doesn't usually provide a human-friendly output. errmsg allows errors to carry an (extendable) end-user message that can be used in e.g. handlers.

Here is an example on how it can be used:

package connector

import (
    // ...
    "github.com/instill-ai/x/errmsg"
)

func (c *Client) sendReq(reqURL, method, contentType string, data io.Reader) ([]byte, error) {
    // ...

    res, err := c.HTTPClient.Do(req)
    if err != nil {
        err := fmt.Errorf("failed to call connector vendor: %w", err)
        return nil, errmsg.AddMessage(err, "Failed to call Vendor API.")
    }

    if res.StatusCode < 200 || res.StatusCode >= 300 {
        err := fmt.Errorf("vendor responded with status code %d", res.StatusCode)
        msg := fmt.Sprintf("Vendor responded with a %d status code.", res.StatusCode)
        return nil, errmsg.AddMessage(err, msg)
    }

    // ...
}
package handler

func (h *PublicHandler) DoAction(ctx context.Context, req *pb.DoActionRequest) (*pb.DoActionResponse, error) {
    resp, err := h.triggerActionSteps(ctx, req)
    if err != nil {
    resp.Outputs, resp.Metadata, err = h.triggerNamespacePipeline(ctx, req)
        return nil, status.Error(asGRPCStatus(err), errmsg.MessageOrErr(err))
    }

    return resp, nil
}

# Functions

AddMessage adds an end-user message to an error, prepending it to any potential existing message.
Message extracts an end-user message from the error.
MessageOrErr extracts an end-user message from the error.