diff options
Diffstat (limited to 'internal/util')
-rw-r--r-- | internal/util/regexes.go | 3 | ||||
-rw-r--r-- | internal/util/uri.go | 7 |
2 files changed, 9 insertions, 1 deletions
diff --git a/internal/util/regexes.go b/internal/util/regexes.go index 6ad7b7404..13c3ce3ef 100644 --- a/internal/util/regexes.go +++ b/internal/util/regexes.go @@ -60,6 +60,9 @@ var ( // userPathRegex parses a path that validates and captures the username part from eg /users/example_username userPathRegex = regexp.MustCompile(userPathRegexString) + userPublicKeyPathRegexString = fmt.Sprintf(`^?/%s/(%s)/%s`, UsersPath, usernameRegexString, PublicKeyPath) + userPublicKeyPathRegex = regexp.MustCompile(userPublicKeyPathRegexString) + inboxPathRegexString = fmt.Sprintf(`^/?%s/(%s)/%s$`, UsersPath, usernameRegexString, InboxPath) // inboxPathRegex parses a path that validates and captures the username part from eg /users/example_username/inbox inboxPathRegex = regexp.MustCompile(inboxPathRegexString) diff --git a/internal/util/uri.go b/internal/util/uri.go index 7d4892960..2bfdd6c40 100644 --- a/internal/util/uri.go +++ b/internal/util/uri.go @@ -140,7 +140,7 @@ func GenerateURIsForAccount(username string, protocol string, host string) *User followingURI := fmt.Sprintf("%s/%s", userURI, FollowingPath) likedURI := fmt.Sprintf("%s/%s", userURI, LikedPath) collectionURI := fmt.Sprintf("%s/%s/%s", userURI, CollectionsPath, FeaturedPath) - publicKeyURI := fmt.Sprintf("%s#%s", userURI, PublicKeyPath) + publicKeyURI := fmt.Sprintf("%s/%s", userURI, PublicKeyPath) return &UserURIs{ HostURL: hostURL, @@ -209,6 +209,11 @@ func IsStatusesPath(id *url.URL) bool { return statusesPathRegex.MatchString(id.Path) } +// IsPublicKeyPath returns true if the given URL path corresponds to eg /users/example_username/main-key +func IsPublicKeyPath(id *url.URL) bool { + return userPublicKeyPathRegex.MatchString(id.Path) +} + // ParseStatusesPath returns the username and ulid from a path such as /users/example_username/statuses/SOME_ULID_OF_A_STATUS func ParseStatusesPath(id *url.URL) (username string, ulid string, err error) { matches := statusesPathRegex.FindStringSubmatch(id.Path) |