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}