initial commit

This commit is contained in:
m.zare
2026-04-10 18:25:21 +03:30
commit 77ca6c34a3
263 changed files with 34470 additions and 0 deletions

View File

@@ -0,0 +1,51 @@
package oauth
import (
"encoding/json"
"fmt"
"strings"
)
//go:generate stringer -type=Provider
type Provider int
const (
Unknown Provider = iota
Credentials
Google
GitHub
Linkedin
Mock
)
// UnmarshalJSON implements json.Unmarshaler so Provider accepts string in JSON (e.g. "mock", "google")
func (p *Provider) UnmarshalJSON(data []byte) error {
var s string
if err := json.Unmarshal(data, &s); err != nil {
return err
}
parsed, err := ParseProvider(s)
if err != nil {
return err
}
*p = parsed
return nil
}
// ParseProvider parses a provider string and returns the corresponding Provider enum
func ParseProvider(provider string) (Provider, error) {
switch strings.ToLower(provider) {
case "credentials":
return Credentials, nil
case "google":
return Google, nil
case "github":
return GitHub, nil
case "linkedin":
return Linkedin, nil
case "mock":
return Mock, nil
default:
return Unknown, fmt.Errorf("unknown provider: %s", provider)
}
}