From ab93194e0dadf6550ca14d1d4b9bc542e7946714 Mon Sep 17 00:00:00 2001 From: Andre Medeiros Date: Wed, 26 Oct 2022 22:45:05 -0400 Subject: [PATCH] check for apns token before creating it --- internal/api/errors.go | 7 ++++++- internal/api/live_activities.go | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/internal/api/errors.go b/internal/api/errors.go index 045feae..6b19c36 100644 --- a/internal/api/errors.go +++ b/internal/api/errors.go @@ -1,6 +1,11 @@ package api -import "net/http" +import ( + "errors" + "net/http" +) + +var ErrDuplicateAPNSToken = errors.New("duplicate apns token") func (a *api) errorResponse(w http.ResponseWriter, _ *http.Request, status int, err error) { w.Header().Set("X-Apollo-Error", err.Error()) diff --git a/internal/api/live_activities.go b/internal/api/live_activities.go index ac509f4..fd8b0d1 100644 --- a/internal/api/live_activities.go +++ b/internal/api/live_activities.go @@ -13,7 +13,12 @@ func (a *api) createLiveActivityHandler(w http.ResponseWriter, r *http.Request) la := &domain.LiveActivity{} if err := json.NewDecoder(r.Body).Decode(la); err != nil { - a.errorResponse(w, r, 500, err) + a.errorResponse(w, r, 400, err) + return + } + + if _, err := a.liveActivityRepo.Get(ctx, la.APNSToken); err == nil { + a.errorResponse(w, r, 400, ErrDuplicateAPNSToken) return }