Repository navigation
Expand file tree
/
Copy pathphone_update_request.go
More file actions
61 lines (49 loc) · 1.77 KB
/
Copy pathphone_update_request.go
File metadata and controls
61 lines (49 loc) · 1.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package requests
import (
"strings"
"time"
"github.com/nyaruka/phonenumbers"
"github.com/NdoleStudio/httpsms/pkg/entities"
"github.com/NdoleStudio/httpsms/pkg/services"
)
// PhoneUpsert is the payload for updating a phone
type PhoneUpsert struct {
request
MessagesPerMinute uint `json:"messages_per_minute" example:"1"`
PhoneNumber string `json:"phone_number" example:"+18005550199"`
// MessageExpirationTimeout is the duration in nanoseconds after sending a message when it is considered to be expired.
MessageExpirationTimeout time.Duration `json:"message_expiration_timeout" example:"12345"`
FcmToken string `json:"fcm_token" example:"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzd....."`
}
// Sanitize sets defaults to MessageOutstanding
func (input *PhoneUpsert) Sanitize() PhoneUpsert {
input.FcmToken = strings.TrimSpace(input.FcmToken)
input.PhoneNumber = input.sanitizeAddress(input.PhoneNumber)
return *input
}
// ToUpsertParams converts PhoneUpsert to services.PhoneUpsertParams
func (input *PhoneUpsert) ToUpsertParams(user entities.AuthUser) services.PhoneUpsertParams {
phone, _ := phonenumbers.Parse(input.PhoneNumber, phonenumbers.UNKNOWN_REGION)
// ignore value if it's default
var messagesPerMinute *uint
if input.MessagesPerMinute != 0 {
messagesPerMinute = &input.MessagesPerMinute
}
// ignore default
var fcmToken *string
if input.FcmToken != "" {
fcmToken = &input.FcmToken
}
// ignore default
var timeout *time.Duration
if input.MessageExpirationTimeout != 0 {
timeout = &input.MessageExpirationTimeout
}
return services.PhoneUpsertParams{
PhoneNumber: *phone,
MessagesPerMinute: messagesPerMinute,
MessageExpirationTimeout: timeout,
FcmToken: fcmToken,
UserID: user.ID,
}
}