Something went wrong. Try again.
This repository has no description
Something went wrong. Try again.
1.2 kB · 37 lines
1234567891011121314151617181920212223242526272829303132333435363738package spxrpc
import ( "context" "fmt" "net/http"
"github.com/bluesky-social/indigo/atproto/syntax" "github.com/labstack/echo/v4")
// takes in and returns an aturi, doing handle resolution if necessary on the wayfunc (s *Server) normalizeURI(ctx context.Context, uri string) (*syntax.ATURI, error) { aturi, err := syntax.ParseATURI(uri) if err != nil { return nil, echo.NewHTTPError(http.StatusBadRequest, "failed to parse AT-URI: "+err.Error()) }
if aturi.Authority().IsHandle() { handle, err := aturi.Authority().AsHandle() if err != nil { return nil, echo.NewHTTPError(http.StatusBadRequest, "failed to convert handle: "+err.Error()) } res, err := s.resolveStreamer(ctx, handle.String()) if err != nil { return nil, echo.NewHTTPError(http.StatusBadRequest, "failed to resolve streamer: "+err.Error()) } aturi, err = syntax.ParseATURI(fmt.Sprintf("at://%s/%s", res, aturi.Path())) if err != nil { return nil, echo.NewHTTPError(http.StatusBadRequest, "failed to parse AT-URI: "+err.Error()) } } else if !aturi.Authority().IsDID() { return nil, echo.NewHTTPError(http.StatusBadRequest, "uri authority must be a DID or handle: "+uri) }
return &aturi, nil}