From fa2216a31831af5f34df317028923c930fa623e3 Mon Sep 17 00:00:00 2001 From: Maxim Lebedev Date: Wed, 6 Dec 2023 00:27:57 +0600 Subject: [PATCH 1/2] :pencil2: Fixed typo in error message --- internal/domain/code_challenge_method.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/domain/code_challenge_method.go b/internal/domain/code_challenge_method.go index 2721b43..5d14705 100644 --- a/internal/domain/code_challenge_method.go +++ b/internal/domain/code_challenge_method.go @@ -36,7 +36,7 @@ var ( var ErrCodeChallengeMethodUnknown error = NewError( ErrorCodeInvalidRequest, - "unknown code_challene_method", + "unknown code_challenge_method", "https://indieauth.net/source/#authorization-request", ) From 803999f201b6b3cbb8762cec661694bfd95711bb Mon Sep 17 00:00:00 2001 From: Maxim Lebedev Date: Wed, 6 Dec 2023 00:33:50 +0600 Subject: [PATCH 2/2] :bug: Fixed optional code_challenge_method parameter parsing --- internal/domain/code_challenge_method.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/internal/domain/code_challenge_method.go b/internal/domain/code_challenge_method.go index 5d14705..48d6ec9 100644 --- a/internal/domain/code_challenge_method.go +++ b/internal/domain/code_challenge_method.go @@ -8,6 +8,7 @@ import ( "crypto/sha256" "crypto/sha512" "encoding/base64" + "errors" "fmt" "hash" "strconv" @@ -61,27 +62,30 @@ func ParseCodeChallengeMethod(uid string) (CodeChallengeMethod, error) { // UnmarshalForm implements custom unmarshler for form values. func (ccm *CodeChallengeMethod) UnmarshalForm(v []byte) error { - method, err := ParseCodeChallengeMethod(string(v)) + parsed, err := ParseCodeChallengeMethod(string(v)) if err != nil { return fmt.Errorf("CodeChallengeMethod: UnmarshalForm: %w", err) } - *ccm = method + *ccm = parsed return nil } // UnmarshalJSON implements custom unmarshler for JSON. func (ccm *CodeChallengeMethod) UnmarshalJSON(v []byte) error { - src, err := strconv.Unquote(string(v)) + unquoted, err := strconv.Unquote(string(v)) if err != nil { return fmt.Errorf("CodeChallengeMethod: UnmarshalJSON: %w", err) } - if *ccm, err = ParseCodeChallengeMethod(src); err != nil { + parsed, err := ParseCodeChallengeMethod(unquoted) + if err != nil && !errors.Is(err, ErrCodeChallengeMethodUnknown) { return fmt.Errorf("CodeChallengeMethod: UnmarshalJSON: %w", err) } + *ccm = parsed + return nil }