Some checks failed
CI / Run tests and lints (push) Failing after 29s
CI / Build CLI docs (push) Has been skipped
CI / Run Playwright end-to-end tests (mysql) (push) Failing after 3s
CI / Run Playwright end-to-end tests (postgres) (push) Failing after 2s
CI / Run Playwright end-to-end tests (sqlite) (push) Failing after 3s
CodeQL / Analyze (go) (push) Failing after 4s
CodeQL / Analyze (javascript) (push) Failing after 3s
Docker Image Scanners / scanners (push) Failing after 4s
Synchronize Issue Labels / Synchronize Issue Labels (push) Has been skipped
CI / Run end-to-end tests (postgres) (push) Failing after 19s
CI / Run end-to-end tests (sqlite) (push) Failing after 2s
CI / Run Playwright end-to-end tests (cockroach) (push) Failing after 2s
CI / Draft newsletter (push) Has been skipped
CI / Generate release (push) Has been skipped
CI / Pending approval Slack notification (push) Has been skipped
CI / Send newsletter (push) Has been skipped
53 lines
1.0 KiB
Go
53 lines
1.0 KiB
Go
// Copyright © 2023 Ory Corp
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package courier
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
|
|
"github.com/gofrs/uuid"
|
|
)
|
|
|
|
func (c *courier) QueueSMS(ctx context.Context, t SMSTemplate) (uuid.UUID, error) {
|
|
recipient, err := t.PhoneNumber()
|
|
if err != nil {
|
|
return uuid.Nil, err
|
|
}
|
|
|
|
templateData, err := json.Marshal(t)
|
|
if err != nil {
|
|
return uuid.Nil, err
|
|
}
|
|
|
|
body, err := t.SMSBody(ctx)
|
|
if err != nil {
|
|
return uuid.Nil, err
|
|
}
|
|
|
|
requestHeaders := []byte(`{}`)
|
|
if t, ok := t.(RequestHeadersCarrier); ok {
|
|
requestHeaders, err = json.Marshal(t.RequestHeaders())
|
|
if err != nil {
|
|
return uuid.Nil, err
|
|
}
|
|
}
|
|
|
|
message := &Message{
|
|
Status: MessageStatusQueued,
|
|
Type: MessageTypeSMS,
|
|
Channel: "sms",
|
|
Recipient: recipient,
|
|
TemplateType: t.TemplateType(),
|
|
TemplateData: templateData,
|
|
RequestHeaders: requestHeaders,
|
|
Body: body,
|
|
}
|
|
if err := c.deps.CourierPersister().AddMessage(ctx, message); err != nil {
|
|
return uuid.Nil, err
|
|
}
|
|
|
|
return message.ID, nil
|
|
}
|