MCPcopy Index your code
hub / github.com/NdoleStudio/httpsms / createPhone

Method createPhone

api/pkg/services/phone_service.go:257–285  ·  view source on GitHub ↗
(ctx context.Context, params *PhoneFCMTokenParams)

Source from the content-addressed store, hash-verified

255}
256
257func (service *PhoneService) createPhone(ctx context.Context, params *PhoneFCMTokenParams) (*entities.Phone, error) {
258 ctx, span, ctxLogger := service.tracer.StartWithLogger(ctx, service.logger)
259 defer span.End()
260
261 phone := &entities.Phone{
262 ID: uuid.New(),
263 UserID: params.UserID,
264 FcmToken: params.FcmToken,
265 // Android has a limit of 30 SMS messages per minute without user permission, to be safe let's use 10 messages per minute
266 // https://android.googlesource.com/platform/frameworks/opt/telephony/+/master/src/java/com/android/internal/telephony/SmsUsageMonitor.java#80
267 MessagesPerMinute: 10,
268 MessageExpirationSeconds: 10 * 60, // 10 minutes
269 MaxSendAttempts: 2,
270 SIM: params.SIM,
271 MissedCallAutoReply: nil,
272 MessageSendScheduleID: params.MessageSendScheduleID,
273 PhoneNumber: phonenumbers.Format(params.PhoneNumber, phonenumbers.E164),
274 CreatedAt: time.Now().UTC(),
275 UpdatedAt: time.Now().UTC(),
276 }
277
278 if err := service.repository.Save(ctx, phone); err != nil {
279 msg := fmt.Sprintf("cannot create phone with id [%s] and number [%s]", phone.ID, phone.PhoneNumber)
280 return nil, service.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg))
281 }
282
283 ctxLogger.Info(fmt.Sprintf("phone updated with id [%s] in the phone repository for user [%s]", phone.ID, phone.UserID))
284 return phone, service.dispatchPhoneUpdatedEvent(ctx, phone, params)
285}
286
287func (service *PhoneService) createPhoneUpdatedEvent(source string, payload events.PhoneUpdatedPayload) (cloudevents.Event, error) {
288 return service.createEvent(events.EventTypePhoneUpdated, source, payload)

Callers 2

UpsertMethod · 0.95
UpsertFCMTokenMethod · 0.95

Calls 5

StartWithLoggerMethod · 0.65
SaveMethod · 0.65
WrapErrorSpanMethod · 0.65
InfoMethod · 0.65

Tested by

no test coverage detected