forked from
tangled.org/core
Monorepo for Tangled — https://tangled.org
1package xrpcclient
2
3import (
4 "errors"
5 "net/http"
6
7 indigoxrpc "github.com/bluesky-social/indigo/xrpc"
8)
9
10var (
11 ErrXrpcUnsupported = errors.New("xrpc not supported on this knot")
12 ErrXrpcUnauthorized = errors.New("unauthorized xrpc request")
13 ErrXrpcFailed = errors.New("xrpc request failed")
14 ErrXrpcInvalid = errors.New("invalid xrpc request")
15)
16
17// produces a more manageable error
18func HandleXrpcErr(err error) error {
19 if err == nil {
20 return nil
21 }
22
23 var xrpcerr *indigoxrpc.Error
24 if ok := errors.As(err, &xrpcerr); !ok {
25 return ErrXrpcInvalid
26 }
27
28 switch xrpcerr.StatusCode {
29 case http.StatusNotFound:
30 return ErrXrpcUnsupported
31 case http.StatusUnauthorized:
32 return ErrXrpcUnauthorized
33 default:
34 return ErrXrpcFailed
35 }
36}