From 492b101aa4d2911d4dd266e8363606cdf4098ba2 Mon Sep 17 00:00:00 2001 From: Carlosokumu Date: Thu, 17 Apr 2025 18:56:20 +0300 Subject: [PATCH 01/12] setup extra sms api endpoints --- config/config.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/config/config.go b/config/config.go index d1af7e8..c85b0a4 100644 --- a/config/config.go +++ b/config/config.go @@ -18,6 +18,7 @@ const ( AliasPrefix = "api/v1/alias" SendSMSPrefix = "api/v1/external/upsell" AliasEnsPrefix = "/api/v1/bypass" + ExtraSMSPrefix = "/api/v1/external" ) var ( @@ -25,6 +26,7 @@ var ( dataURLBase string BearerToken string aliasEnsURLBase string + extraSMSBase string ) var ( @@ -39,6 +41,7 @@ var ( CheckAliasURL string SendSMSURL string AliasEnsURL string + ExtraSMSURL string ) func setBase() error { @@ -47,6 +50,7 @@ func setBase() error { custodialURLBase = env.GetEnv("CUSTODIAL_URL_BASE", "http://localhost:5003") dataURLBase = env.GetEnv("DATA_URL_BASE", "http://localhost:5006") aliasEnsURLBase = env.GetEnv("ALIAS_ENS_BASE", "http://localhost:5015") + extraSMSBase = env.GetEnv("EXTRA_SMS__BASE", "http://localhost:5035") BearerToken = env.GetEnv("BEARER_TOKEN", "") _, err = url.Parse(custodialURLBase) @@ -77,5 +81,7 @@ func LoadConfig() error { CheckAliasURL, _ = url.JoinPath(dataURLBase, AliasPrefix) SendSMSURL, _ = url.JoinPath(dataURLBase, SendSMSPrefix) AliasEnsURL, _ = url.JoinPath(aliasEnsURLBase, AliasEnsPrefix) + ExtraSMSURL, _ = url.JoinPath(extraSMSBase, ExtraSMSPrefix) + return nil } From a243fe8c294306f3209e680f6f8b1b490858b4ba Mon Sep 17 00:00:00 2001 From: Carlosokumu Date: Thu, 17 Apr 2025 18:57:02 +0300 Subject: [PATCH 02/12] add SendAddressSMS and SendPINResetSMS --- remote/account_service.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/remote/account_service.go b/remote/account_service.go index 07e697e..f667586 100644 --- a/remote/account_service.go +++ b/remote/account_service.go @@ -18,4 +18,6 @@ type AccountService interface { CheckAliasAddress(ctx context.Context, alias string) (*models.AliasAddress, error) RequestAlias(ctx context.Context, hint string, publicKey string) (*models.RequestAliasResult, error) SendUpsellSMS(ctx context.Context, inviterPhone, inviteePhone string) (*models.SendSMSResponse, error) + SendAddressSMS(ctx context.Context, publicKey, originPhone string) + SendPINResetSMS(ctx context.Context, admin, phone string) } From b85511e4360e79492b266ab6bc838e989d76192a Mon Sep 17 00:00:00 2001 From: Carlosokumu Date: Thu, 17 Apr 2025 18:57:24 +0300 Subject: [PATCH 03/12] implement SendPINResetSMS and SendAddressSMS --- remote/http/service.go | 50 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/remote/http/service.go b/remote/http/service.go index 7ddccde..64b5259 100644 --- a/remote/http/service.go +++ b/remote/http/service.go @@ -344,6 +344,56 @@ func (as *HTTPAccountService) SendUpsellSMS(ctx context.Context, inviterPhone, i return &r, nil } +func (as *HTTPAccountService) SendAddressSMS(ctx context.Context, publicKey, originPhone string) error { + ep, err := url.JoinPath(config.ExtraSMSURL, "address") + if err != nil { + return err + } + logg.InfoCtxf(ctx, "sending an address sms", "endpoint", ep, "address", publicKey, "origin-phone", originPhone) + payload := map[string]string{ + "address": publicKey, + "originPhone": originPhone, + } + payloadBytes, err := json.Marshal(payload) + if err != nil { + return err + } + req, err := http.NewRequest("POST", ep, bytes.NewBuffer(payloadBytes)) + if err != nil { + return err + } + _, err = doRequest(ctx, req, nil) + if err != nil { + return err + } + return nil +} + +func (as *HTTPAccountService) SendPINResetSMS(ctx context.Context, admin, phone string) error { + ep, err := url.JoinPath(config.ExtraSMSURL, "pinreset") + if err != nil { + return err + } + logg.InfoCtxf(ctx, "sending pin reset sms", "endpoint", ep, "admin", admin, "phone", phone) + payload := map[string]string{ + "admin": admin, + "phone": phone, + } + payloadBytes, err := json.Marshal(payload) + if err != nil { + return err + } + req, err := http.NewRequest("POST", ep, bytes.NewBuffer(payloadBytes)) + if err != nil { + return err + } + _, err = doRequest(ctx, req, nil) + if err != nil { + return err + } + return nil +} + // TODO: remove eth-custodial api dependency func doRequest(ctx context.Context, req *http.Request, rcpt any) (*api.OKResponse, error) { var okResponse api.OKResponse From 58366274c3e1e899081737532fc8a3b6281481a2 Mon Sep 17 00:00:00 2001 From: Carlosokumu Date: Thu, 17 Apr 2025 18:58:12 +0300 Subject: [PATCH 04/12] add required AccountService methods --- dev/api.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/dev/api.go b/dev/api.go index f2e0a45..8c7ef90 100644 --- a/dev/api.go +++ b/dev/api.go @@ -660,3 +660,11 @@ func (das *DevAccountService) SendUpsellSMS(ctx context.Context, inviterPhone, i Invitee: inviteePhone, }, nil } + +func (das *DevAccountService) SendPINResetSMS(ctx context.Context, admin, phone string) error { + return fmt.Errorf("unimplemented") +} + +func (das *DevAccountService) SendAddressSMS(ctx context.Context, publicKey, originPhone string) error { + return fmt.Errorf("unimplemented") +} From 86cfb9c020284e1d123ed1ea33259270139c2bac Mon Sep 17 00:00:00 2001 From: Carlosokumu Date: Thu, 17 Apr 2025 22:18:30 +0300 Subject: [PATCH 05/12] match expected method signature --- remote/account_service.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/remote/account_service.go b/remote/account_service.go index f667586..3a1b3ab 100644 --- a/remote/account_service.go +++ b/remote/account_service.go @@ -18,6 +18,6 @@ type AccountService interface { CheckAliasAddress(ctx context.Context, alias string) (*models.AliasAddress, error) RequestAlias(ctx context.Context, hint string, publicKey string) (*models.RequestAliasResult, error) SendUpsellSMS(ctx context.Context, inviterPhone, inviteePhone string) (*models.SendSMSResponse, error) - SendAddressSMS(ctx context.Context, publicKey, originPhone string) - SendPINResetSMS(ctx context.Context, admin, phone string) + SendAddressSMS(ctx context.Context, publicKey, originPhone string) error + SendPINResetSMS(ctx context.Context, admin, phone string) error } From 5ff139b6494b504a595a74597d7fe131f923af73 Mon Sep 17 00:00:00 2001 From: Carlosokumu Date: Thu, 17 Apr 2025 23:07:33 +0300 Subject: [PATCH 06/12] add expected accountservice methods --- testutil/testservice/account_service.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/testutil/testservice/account_service.go b/testutil/testservice/account_service.go index 1d1e9f3..abb7c92 100644 --- a/testutil/testservice/account_service.go +++ b/testutil/testservice/account_service.go @@ -57,14 +57,22 @@ func (tas *TestAccountService) TokenTransfer(ctx context.Context, amount, from, }, nil } -func (m TestAccountService) CheckAliasAddress(ctx context.Context, alias string) (*models.AliasAddress, error) { +func (m *TestAccountService) CheckAliasAddress(ctx context.Context, alias string) (*models.AliasAddress, error) { return &models.AliasAddress{}, nil } -func (m TestAccountService) RequestAlias(ctx context.Context, publicKey string, hint string) (*models.RequestAliasResult, error) { +func (m *TestAccountService) RequestAlias(ctx context.Context, publicKey string, hint string) (*models.RequestAliasResult, error) { return &models.RequestAliasResult{}, nil } -func (m TestAccountService) SendUpsellSMS(ctx context.Context, inviterPhone, inviteePhone string) (*models.SendSMSResponse, error) { +func (m *TestAccountService) SendUpsellSMS(ctx context.Context, inviterPhone, inviteePhone string) (*models.SendSMSResponse, error) { return &models.SendSMSResponse{}, nil } + +func (m *TestAccountService) SendAddressSMS(ctx context.Context, publicKey, originPhone string) error { + return nil +} + +func (m *TestAccountService) SendPINResetSMS(ctx context.Context, admin, phone string) error { + return nil +} From 5c0ed48e678cce7de3fc86e20ea3a3bbd985377b Mon Sep 17 00:00:00 2001 From: Carlosokumu Date: Thu, 17 Apr 2025 23:14:42 +0300 Subject: [PATCH 07/12] add required sms methods --- testutil/mocks/service_mock.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/testutil/mocks/service_mock.go b/testutil/mocks/service_mock.go index b2cc015..e6bdd5e 100644 --- a/testutil/mocks/service_mock.go +++ b/testutil/mocks/service_mock.go @@ -62,3 +62,11 @@ func (m *MockAccountService) SendUpsellSMS(ctx context.Context, inviterPhone, in args := m.Called(inviterPhone, inviteePhone) return args.Get(0).(*models.SendSMSResponse), args.Error(1) } + +func (m *MockAccountService) SendPINResetSMS(ctx context.Context, admin, phone string) error { + return nil +} + +func (m *MockAccountService) SendAddressSMS(ctx context.Context, publicKey, originPhone string) error { + return nil +} From 4ea8fd1f04bf79899c7fc6be80a57ea26b51bae1 Mon Sep 17 00:00:00 2001 From: Carlosokumu Date: Mon, 28 Apr 2025 10:56:05 +0300 Subject: [PATCH 08/12] chore: rename extrasms prefixes to external sms --- config/config.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/config/config.go b/config/config.go index c85b0a4..1ada3b0 100644 --- a/config/config.go +++ b/config/config.go @@ -18,7 +18,7 @@ const ( AliasPrefix = "api/v1/alias" SendSMSPrefix = "api/v1/external/upsell" AliasEnsPrefix = "/api/v1/bypass" - ExtraSMSPrefix = "/api/v1/external" + ExternalSMSPrefix = "/api/v1/external" ) var ( @@ -26,7 +26,7 @@ var ( dataURLBase string BearerToken string aliasEnsURLBase string - extraSMSBase string + externalSMSBase string ) var ( @@ -41,7 +41,7 @@ var ( CheckAliasURL string SendSMSURL string AliasEnsURL string - ExtraSMSURL string + ExternalSMSURL string ) func setBase() error { @@ -50,8 +50,8 @@ func setBase() error { custodialURLBase = env.GetEnv("CUSTODIAL_URL_BASE", "http://localhost:5003") dataURLBase = env.GetEnv("DATA_URL_BASE", "http://localhost:5006") aliasEnsURLBase = env.GetEnv("ALIAS_ENS_BASE", "http://localhost:5015") - extraSMSBase = env.GetEnv("EXTRA_SMS__BASE", "http://localhost:5035") - BearerToken = env.GetEnv("BEARER_TOKEN", "") + externalSMSBase = env.GetEnv("EXTRA_SMS__BASE", "http://localhost:5035") + BearerToken = env.GetEnv("BEARER_TOKEN", "eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJwdWJsaWNLZXkiOiIweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCJzZXJ2aWNlIjp0cnVlLCJpc3MiOiJldGgtY3VzdG9kaWFsLTYzMDFkZjgiLCJzdWIiOiJhbGZham9yZXMtdGVzdCIsImV4cCI6MTc2Mjk0OTY5OCwiaWF0IjoxNzMxNDEzNjk4fQ.K5COKDKPKA8KwaA-jWFUJEPdS767pXlZhl1MX7pEzFplLYWIkr_w1oOz7bvOSxTWnOLpaaCOMTzBSiobnNdKCw") _, err = url.Parse(custodialURLBase) if err != nil { @@ -81,7 +81,7 @@ func LoadConfig() error { CheckAliasURL, _ = url.JoinPath(dataURLBase, AliasPrefix) SendSMSURL, _ = url.JoinPath(dataURLBase, SendSMSPrefix) AliasEnsURL, _ = url.JoinPath(aliasEnsURLBase, AliasEnsPrefix) - ExtraSMSURL, _ = url.JoinPath(extraSMSBase, ExtraSMSPrefix) + ExternalSMSURL, _ = url.JoinPath(externalSMSBase, ExternalSMSPrefix) return nil } From d509477de3d26a1d0135200707269661f6219372 Mon Sep 17 00:00:00 2001 From: Carlosokumu Date: Mon, 28 Apr 2025 11:03:34 +0300 Subject: [PATCH 09/12] remove accidentallypushed bearer token --- config/config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/config.go b/config/config.go index 1ada3b0..32dc59a 100644 --- a/config/config.go +++ b/config/config.go @@ -51,7 +51,7 @@ func setBase() error { dataURLBase = env.GetEnv("DATA_URL_BASE", "http://localhost:5006") aliasEnsURLBase = env.GetEnv("ALIAS_ENS_BASE", "http://localhost:5015") externalSMSBase = env.GetEnv("EXTRA_SMS__BASE", "http://localhost:5035") - BearerToken = env.GetEnv("BEARER_TOKEN", "eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJwdWJsaWNLZXkiOiIweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCJzZXJ2aWNlIjp0cnVlLCJpc3MiOiJldGgtY3VzdG9kaWFsLTYzMDFkZjgiLCJzdWIiOiJhbGZham9yZXMtdGVzdCIsImV4cCI6MTc2Mjk0OTY5OCwiaWF0IjoxNzMxNDEzNjk4fQ.K5COKDKPKA8KwaA-jWFUJEPdS767pXlZhl1MX7pEzFplLYWIkr_w1oOz7bvOSxTWnOLpaaCOMTzBSiobnNdKCw") + BearerToken = env.GetEnv("BEARER_TOKEN", "") _, err = url.Parse(custodialURLBase) if err != nil { From 6fc99661f750eddf0266a0d19a52c51ab9a85308 Mon Sep 17 00:00:00 2001 From: Carlosokumu Date: Mon, 28 Apr 2025 11:08:39 +0300 Subject: [PATCH 10/12] chore: remove extra underscore in EXTRA_SMS_BASE env identifier --- config/config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/config.go b/config/config.go index 32dc59a..61a5115 100644 --- a/config/config.go +++ b/config/config.go @@ -50,7 +50,7 @@ func setBase() error { custodialURLBase = env.GetEnv("CUSTODIAL_URL_BASE", "http://localhost:5003") dataURLBase = env.GetEnv("DATA_URL_BASE", "http://localhost:5006") aliasEnsURLBase = env.GetEnv("ALIAS_ENS_BASE", "http://localhost:5015") - externalSMSBase = env.GetEnv("EXTRA_SMS__BASE", "http://localhost:5035") + externalSMSBase = env.GetEnv("EXTRA_SMS_BASE", "http://localhost:5035") BearerToken = env.GetEnv("BEARER_TOKEN", "") _, err = url.Parse(custodialURLBase) From ed416c57c7cfd3d786763ebf386a3e0804a21913 Mon Sep 17 00:00:00 2001 From: Carlosokumu Date: Mon, 28 Apr 2025 11:15:11 +0300 Subject: [PATCH 11/12] chore: rename EXTRA_SMS_BASE to EXTERNAL_SMS_BASE --- config/config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/config.go b/config/config.go index 61a5115..1a44d2a 100644 --- a/config/config.go +++ b/config/config.go @@ -50,7 +50,7 @@ func setBase() error { custodialURLBase = env.GetEnv("CUSTODIAL_URL_BASE", "http://localhost:5003") dataURLBase = env.GetEnv("DATA_URL_BASE", "http://localhost:5006") aliasEnsURLBase = env.GetEnv("ALIAS_ENS_BASE", "http://localhost:5015") - externalSMSBase = env.GetEnv("EXTRA_SMS_BASE", "http://localhost:5035") + externalSMSBase = env.GetEnv("EXTERNAL_SMS_BASE", "http://localhost:5035") BearerToken = env.GetEnv("BEARER_TOKEN", "") _, err = url.Parse(custodialURLBase) From 341901ec83e2d4391a87727af5615b35be3096e9 Mon Sep 17 00:00:00 2001 From: Carlosokumu Date: Mon, 28 Apr 2025 11:26:13 +0300 Subject: [PATCH 12/12] match new external sms endpoint --- remote/http/service.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/remote/http/service.go b/remote/http/service.go index 64b5259..3810af3 100644 --- a/remote/http/service.go +++ b/remote/http/service.go @@ -345,7 +345,7 @@ func (as *HTTPAccountService) SendUpsellSMS(ctx context.Context, inviterPhone, i } func (as *HTTPAccountService) SendAddressSMS(ctx context.Context, publicKey, originPhone string) error { - ep, err := url.JoinPath(config.ExtraSMSURL, "address") + ep, err := url.JoinPath(config.ExternalSMSURL, "address") if err != nil { return err } @@ -370,7 +370,7 @@ func (as *HTTPAccountService) SendAddressSMS(ctx context.Context, publicKey, ori } func (as *HTTPAccountService) SendPINResetSMS(ctx context.Context, admin, phone string) error { - ep, err := url.JoinPath(config.ExtraSMSURL, "pinreset") + ep, err := url.JoinPath(config.ExternalSMSURL, "pinreset") if err != nil { return err }