diff --git a/remote/http/service.go b/remote/http/service.go index 2c1aa85..6057681 100644 --- a/remote/http/service.go +++ b/remote/http/service.go @@ -3,13 +3,14 @@ package http import ( "bytes" "context" - "fmt" "encoding/json" "errors" + "fmt" "io" "log" "net/http" "net/url" + "regexp" "git.grassecon.net/grassrootseconomics/sarafu-api/config" "git.grassecon.net/grassrootseconomics/sarafu-api/models" @@ -17,6 +18,11 @@ import ( dataserviceapi "github.com/grassrootseconomics/ussd-data-service/pkg/api" ) +var ( + aliasRegex = regexp.MustCompile("^\\+?[a-zA-Z0-9\\-_]+$") + searchDomain = ".sarafu.eth" +) + type HTTPAccountService struct { } @@ -220,8 +226,17 @@ func (as *HTTPAccountService) CheckAliasAddress(ctx context.Context, alias strin return &r, err } +// TODO: Use actual custodial api to request available alias func (as *HTTPAccountService) RequestAlias(ctx context.Context, publicKey string, hint string) (*models.RequestAliasResult, error) { - return nil, fmt.Errorf("not yet implemented") + var alias string + if !aliasRegex.MatchString(hint) { + return nil, fmt.Errorf("alias hint does not match: %s", publicKey) + } + alias = hint + alias = alias + searchDomain + return &models.RequestAliasResult{ + Alias: alias, + }, nil } // TODO: remove eth-custodial api dependency