From 08921a6af685911c054108d7572c380f32738e89 Mon Sep 17 00:00:00 2001 From: jnile Date: Sat, 22 Mar 2025 13:04:27 +0000 Subject: [PATCH 1/8] temporary store --- api/calendar_impl.go | 39 +++++++++++++-- api/reschedule.go | 11 ++++- api/server.gen.go | 114 ++++++++++++++++++++++++------------------- shared | 2 +- 4 files changed, 109 insertions(+), 57 deletions(-) diff --git a/api/calendar_impl.go b/api/calendar_impl.go index 4ea91dda..00514017 100644 --- a/api/calendar_impl.go +++ b/api/calendar_impl.go @@ -12,6 +12,7 @@ import ( "go.uber.org/zap" graphmodels "github.com/microsoftgraph/msgraph-sdk-go/models" + "github.com/microsoftgraph/msgraph-sdk-go/users" ) // (GET /api/calendar/{userID}). @@ -135,11 +136,39 @@ func (s Server) GetAPICalendarEvent(w http.ResponseWriter, r *http.Request, para // Make call to API route and parse events // Get old meeting data from microsoft - msftMeeting, err := graph.Me().Events().ByEventId(params.MsftID).Get(ctx, nil) - if err != nil { - logger.Error("failed to get meeting data from microsoft", zap.Error(err)) - sendError(w, http.StatusBadGateway, "Failed to get meeting data from microsoft") - return + var msftMeeting graphmodels.Eventable + if params.IsICalUId == true { + queryFilter := "$filter=ICalUId eq '" + params.MsftID + "'" + + // Get old meeting data from microsoft + requestConfig := users.ItemEventsRequestBuilderGetRequestConfiguration{ + QueryParameters: &users.ItemEventsRequestBuilderGetQueryParameters{ + Filter: &queryFilter, + }, + } + msftMeetingRes, err := graph.Me().Events().Get(ctx, &requestConfig) + + if err != nil { + logger.Error("failed to get meeting data from microsoft", zap.Error(err)) + sendError(w, http.StatusBadGateway, "Failed to get meeting data from microsoft") + return + } + + if msftMeetingRes != nil && msftMeetingRes.GetValue() != nil && + len(msftMeetingRes.GetValue()) > 0 { + msftMeeting = msftMeetingRes.GetValue()[0] + } else { + logger.Error("failed to get meeting data from microsoft", zap.Error(err)) + sendError(w, http.StatusBadGateway, "Failed to get meeting data from microsoft") + return + } + } else { + msftMeeting, err = graph.Me().Events().ByEventId(params.MsftID).Get(ctx, nil) + if err != nil { + logger.Error("failed to get meeting data from microsoft", zap.Error(err)) + sendError(w, http.StatusBadGateway, "Failed to get meeting data from microsoft") + return + } } var parsedEvents []CalendarEvent diff --git a/api/reschedule.go b/api/reschedule.go index ae15ca25..dfefcee3 100644 --- a/api/reschedule.go +++ b/api/reschedule.go @@ -175,6 +175,7 @@ type NewMeetingAndPrefsParams struct { func createNewMeetingsAndPrefs(ctx context.Context, body NewMeetingAndPrefsParams, s Server, + msftID string, ) (database.Meeting, error) { // Meeting Info does not exist so create a new one // Check valid user id @@ -198,11 +199,12 @@ func createNewMeetingsAndPrefs(ctx context.Context, } // Create Meeting + meetingParams := database.CreateMeetingParams{ //nolint: gosec // id is unsigned 32 bit int MeetingPrefID: uint32(meetingPrefID), OwnerEmail: body.OwnerEmail, - MsftMeetingID: body.MsftMeetingID, + MsftMeetingID: msftID, } err = retry.Do(func() error { @@ -257,7 +259,12 @@ func processNewMeetingInfo(ctx context.Context, MsftMeetingID: msftMeetingID, } - meeting, err := createNewMeetingsAndPrefs(ctx, newMeetingParams, s) + icalUID := "" + if msftMeeting.GetICalUId() != nil { + icalUID = *msftMeeting.GetICalUId() + } + + meeting, err := createNewMeetingsAndPrefs(ctx, newMeetingParams, s, icalUID) if err != nil { logger.Error("failed to get data from new db.Meeting", zap.Error(err)) return database.Meeting{}, err diff --git a/api/server.gen.go b/api/server.gen.go index de3542ba..43a3f8d7 100644 --- a/api/server.gen.go +++ b/api/server.gen.go @@ -511,7 +511,8 @@ type GetAPIAuthCallbackParams struct { // GetAPICalendarEventParams defines parameters for GetAPICalendarEvent. type GetAPICalendarEventParams struct { - MsftID string `form:"msftID" json:"msftID"` + MsftID string `form:"msftID" json:"msftID"` + IsICalUId bool `form:"isICalUId" json:"isICalUId"` } // GetAPICalendarMeParams defines parameters for GetAPICalendarMe. @@ -850,6 +851,21 @@ func (siw *ServerInterfaceWrapper) GetAPICalendarEvent(w http.ResponseWriter, r return } + // ------------- Required query parameter "isICalUId" ------------- + + if paramValue := r.URL.Query().Get("isICalUId"); paramValue != "" { + + } else { + siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "isICalUId"}) + return + } + + err = runtime.BindQueryParameter("form", true, true, "isICalUId", r.URL.Query(), ¶ms.IsICalUId) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "isICalUId", Err: err}) + return + } + handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { siw.Handler.GetAPICalendarEvent(w, r, params) })) @@ -2274,54 +2290,54 @@ var swaggerSpec = []string{ "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", - "AAD//14WYhtqyAAA", + "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", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/shared b/shared index 2c240471..3627d2d6 160000 --- a/shared +++ b/shared @@ -1 +1 @@ -Subproject commit 2c2404713126cdb23c1729b63d8f2596600af3da +Subproject commit 3627d2d6b93ea0de57f5f0dc7c934de73d278adc From 08d53f5eaf24a95c341d9e8bba55aaa182d222d1 Mon Sep 17 00:00:00 2001 From: jnile Date: Sat, 22 Mar 2025 21:48:58 +0000 Subject: [PATCH 2/8] Msft meeting id changed for reshcedule single --- api/calendar_impl.go | 4 ++-- api/reschedule.go | 2 +- api/rescheduling_impl.go | 1 - 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/api/calendar_impl.go b/api/calendar_impl.go index 00514017..b262a3d3 100644 --- a/api/calendar_impl.go +++ b/api/calendar_impl.go @@ -137,8 +137,8 @@ func (s Server) GetAPICalendarEvent(w http.ResponseWriter, r *http.Request, para // Make call to API route and parse events // Get old meeting data from microsoft var msftMeeting graphmodels.Eventable - if params.IsICalUId == true { - queryFilter := "$filter=ICalUId eq '" + params.MsftID + "'" + if params.IsICalUId { + queryFilter := "iCalUId eq '" + params.MsftID + "'" // Get old meeting data from microsoft requestConfig := users.ItemEventsRequestBuilderGetRequestConfiguration{ diff --git a/api/reschedule.go b/api/reschedule.go index dfefcee3..6f9b036f 100644 --- a/api/reschedule.go +++ b/api/reschedule.go @@ -218,7 +218,7 @@ func createNewMeetingsAndPrefs(ctx context.Context, } var meeting database.Meeting - meeting, err = s.DB.GetMeetingByMSFTID(ctx, body.MsftMeetingID) + meeting, err = s.DB.GetMeetingByMSFTID(ctx, msftID) if err != nil { return database.Meeting{}, err } diff --git a/api/rescheduling_impl.go b/api/rescheduling_impl.go index 2f89632f..eb52d1ed 100644 --- a/api/rescheduling_impl.go +++ b/api/rescheduling_impl.go @@ -126,7 +126,6 @@ func (s Server) PostAPIRescheduleRequestReplace(w http.ResponseWriter, r *http.R var body ReschedulingRequestBodySchema var err error if err = json.NewDecoder(r.Body).Decode(&body); err != nil { - // TODO: Add zap log for body logger.Error(ErrUnmarshalBody, zap.Error(err)) sendError(w, http.StatusBadRequest, ErrUnmarshalBody.Error()) return From 8eeb51a6d9af25bb5d9116e662a17e4cb8c3ae6a Mon Sep 17 00:00:00 2001 From: jnile Date: Sat, 22 Mar 2025 21:54:51 +0000 Subject: [PATCH 3/8] remove empty space --- api/calendar_impl.go | 1 - 1 file changed, 1 deletion(-) diff --git a/api/calendar_impl.go b/api/calendar_impl.go index b262a3d3..7c847f08 100644 --- a/api/calendar_impl.go +++ b/api/calendar_impl.go @@ -147,7 +147,6 @@ func (s Server) GetAPICalendarEvent(w http.ResponseWriter, r *http.Request, para }, } msftMeetingRes, err := graph.Me().Events().Get(ctx, &requestConfig) - if err != nil { logger.Error("failed to get meeting data from microsoft", zap.Error(err)) sendError(w, http.StatusBadGateway, "Failed to get meeting data from microsoft") From 68c143b662f45388c9a2ebfdb57267e03ffffeba Mon Sep 17 00:00:00 2001 From: jnile Date: Sat, 22 Mar 2025 22:11:50 +0000 Subject: [PATCH 4/8] fix lint issues --- api/calendar_impl.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/api/calendar_impl.go b/api/calendar_impl.go index 7c847f08..4dd2b670 100644 --- a/api/calendar_impl.go +++ b/api/calendar_impl.go @@ -137,6 +137,7 @@ func (s Server) GetAPICalendarEvent(w http.ResponseWriter, r *http.Request, para // Make call to API route and parse events // Get old meeting data from microsoft var msftMeeting graphmodels.Eventable + //nolint: nestif // nesting complexity is not too much if params.IsICalUId { queryFilter := "iCalUId eq '" + params.MsftID + "'" @@ -146,7 +147,9 @@ func (s Server) GetAPICalendarEvent(w http.ResponseWriter, r *http.Request, para Filter: &queryFilter, }, } - msftMeetingRes, err := graph.Me().Events().Get(ctx, &requestConfig) + + var msftMeetingRes graphmodels.EventCollectionResponseable + msftMeetingRes, err = graph.Me().Events().Get(ctx, &requestConfig) if err != nil { logger.Error("failed to get meeting data from microsoft", zap.Error(err)) sendError(w, http.StatusBadGateway, "Failed to get meeting data from microsoft") From 3aa97bf57653424424b86015b718030d8a6c6c4d Mon Sep 17 00:00:00 2001 From: jnile Date: Sat, 22 Mar 2025 22:26:26 +0000 Subject: [PATCH 5/8] update shared --- api/server.gen.go | 96 +++++++++++++++++++++++------------------------ shared | 2 +- 2 files changed, 49 insertions(+), 49 deletions(-) diff --git a/api/server.gen.go b/api/server.gen.go index 43a3f8d7..44ab6e01 100644 --- a/api/server.gen.go +++ b/api/server.gen.go @@ -2290,54 +2290,54 @@ var swaggerSpec = []string{ "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", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/shared b/shared index 3627d2d6..83a2b5e6 160000 --- a/shared +++ b/shared @@ -1 +1 @@ -Subproject commit 3627d2d6b93ea0de57f5f0dc7c934de73d278adc +Subproject commit 83a2b5e6ce1ee3b37565ada634f8febc5d6b5cfd From bc57b8707d4722b869b650b5d5dae576c593cf1f Mon Sep 17 00:00:00 2001 From: jnile Date: Sun, 23 Mar 2025 10:07:42 +0000 Subject: [PATCH 6/8] Reformat rescheudle request to look for events with iCalUid and user email --- api/calendar.go | 1 + api/reschedule.go | 54 ++++++++--- api/rescheduling_impl.go | 36 ++++--- api/server.gen.go | 204 ++++++++++++++++++++------------------- shared | 2 +- 5 files changed, 167 insertions(+), 130 deletions(-) diff --git a/api/calendar.go b/api/calendar.go index d938f497..c4010535 100644 --- a/api/calendar.go +++ b/api/calendar.go @@ -57,6 +57,7 @@ func parseEventableResp(events []graphmodels.Eventable) ([]CalendarEvent, error) Created: e.GetCreatedDateTime(), EndTime: endTime, Id: e.GetId(), + ICalUId: e.GetICalUId(), IsCancelled: e.GetIsCancelled(), JoinURL: joinURL, Locations: locations, diff --git a/api/reschedule.go b/api/reschedule.go index 6f9b036f..f8d59485 100644 --- a/api/reschedule.go +++ b/api/reschedule.go @@ -10,6 +10,7 @@ import ( "github.com/avast/retry-go" msgraphsdkgo "github.com/microsoftgraph/msgraph-sdk-go" graphmodels "github.com/microsoftgraph/msgraph-sdk-go/models" + "github.com/microsoftgraph/msgraph-sdk-go/users" "go.uber.org/zap" ) @@ -231,12 +232,14 @@ func processNewMeetingInfo(ctx context.Context, s Server, msftMeetingID string, logger zap.SugaredLogger, + userEmail string, ) (database.Meeting, error) { // Fetch meeting data from microsft - msftMeeting, err := graph.Me().Events().ByEventId(msftMeetingID).Get(ctx, nil) + + msftMeeting, err := getUsersEvent(ctx, graph, logger, msftMeetingID, userEmail) if err != nil { logger.Error("failed to get meeting data from microsoft", zap.Error(err)) - return database.Meeting{}, err + return database.Meeting{}, fmt.Errorf("failed to get meeting data from microsoft: %w", err) } var startTime time.Time @@ -246,25 +249,13 @@ func processNewMeetingInfo(ctx context.Context, return database.Meeting{}, err } - // Parse email - var email string - if msftMeeting.GetOrganizer().GetEmailAddress() != nil && - msftMeeting.GetOrganizer().GetEmailAddress().GetAddress() != nil { - email = *msftMeeting.GetOrganizer().GetEmailAddress().GetAddress() - } - newMeetingParams := NewMeetingAndPrefsParams{ MeetingStartTime: startTime, - OwnerEmail: email, + OwnerEmail: userEmail, MsftMeetingID: msftMeetingID, } - icalUID := "" - if msftMeeting.GetICalUId() != nil { - icalUID = *msftMeeting.GetICalUId() - } - - meeting, err := createNewMeetingsAndPrefs(ctx, newMeetingParams, s, icalUID) + meeting, err := createNewMeetingsAndPrefs(ctx, newMeetingParams, s, msftMeetingID) if err != nil { logger.Error("failed to get data from new db.Meeting", zap.Error(err)) return database.Meeting{}, err @@ -272,3 +263,34 @@ func processNewMeetingInfo(ctx context.Context, return meeting, nil } + +func getUsersEvent(ctx context.Context, + graph *msgraphsdkgo.GraphServiceClient, + logger zap.SugaredLogger, + msftID string, + userEmail string, +) (graphmodels.Eventable, error) { + queryFilter := "iCalUId eq '" + msftID + "'" + + // Get old meeting data from microsoft + requestConfig := users.ItemEventsRequestBuilderGetRequestConfiguration{ + QueryParameters: &users.ItemEventsRequestBuilderGetQueryParameters{ + Filter: &queryFilter, + }, + } + + // msftMeetingRes, err := graph.Me().Events().Get(ctx, &requestConfig) + msftMeetingRes, err := graph.Users().ByUserId(userEmail).Events().Get(ctx, &requestConfig) + if err != nil { + logger.Error("failed to get meeting data from microsoft", zap.Error(err)) + return nil, fmt.Errorf("failed to get meeting data from microsoft: %w", err) + } + + if msftMeetingRes != nil && msftMeetingRes.GetValue() != nil && + len(msftMeetingRes.GetValue()) > 0 { + return msftMeetingRes.GetValue()[0], nil + } + + logger.Error("failed to get meeting data from microsoft: returned empty array") + return nil, errors.New("failed to get meeting data from microsoft: returned empty array") +} diff --git a/api/rescheduling_impl.go b/api/rescheduling_impl.go index eb52d1ed..7f1f0517 100644 --- a/api/rescheduling_impl.go +++ b/api/rescheduling_impl.go @@ -44,7 +44,8 @@ func (s Server) PostAPIRescheduleCheck(w http.ResponseWriter, r *http.Request) { } // Get old meeting data from microsoft - msftMeeting, err := graph.Me().Events().ByEventId(body.OldMeeting.MsftMeetingID).Get(ctx, nil) + msftMeeting, err := getUsersEvent(ctx, graph, *logger, + body.OldMeeting.MsftMeetingID, string(body.OldMeeting.OwnerEmail)) if err != nil { logger.Error("failed to get meeting data from microsoft", zap.Error(err)) sendError(w, http.StatusBadGateway, "Failed to get meeting data from microsoft") @@ -138,6 +139,14 @@ func (s Server) PostAPIRescheduleRequestReplace(w http.ResponseWriter, r *http.R return } + // Check owner exists + ownerObj, err := s.DB.GetUserByEmail(ctx, string(body.OldMeeting.OwnerEmail)) + if err != nil { + logger.Error("failed to get owner obj from db: ", zap.Error(err)) + sendError(w, http.StatusBadGateway, "owner is not found as a slotify user") + return + } + // Create Rescheduling Request var requestID int64 err = retry.Do(func() error { @@ -160,7 +169,8 @@ func (s Server) PostAPIRescheduleRequestReplace(w http.ResponseWriter, r *http.R if errors.Is(err, sql.ErrNoRows) { // Meeting info not in db, so create new meeting info - meeting, err = processNewMeetingInfo(ctx, graph, s, body.OldMeeting.MsftMeetingID, *logger) + meeting, err = processNewMeetingInfo(ctx, graph, s, + body.OldMeeting.MsftMeetingID, *logger, string(body.OldMeeting.OwnerEmail)) if err != nil { logger.Error("DB Creation Error: ", zap.Error(err)) sendError(w, http.StatusBadGateway, "Failed to create New Meeting Info") @@ -248,12 +258,6 @@ func (s Server) PostAPIRescheduleRequestReplace(w http.ResponseWriter, r *http.R Created: time.Now(), } - // Get Owner ID - ownerObj, err := s.DB.GetUserByEmail(ctx, meeting.OwnerEmail) - if err != nil { - logger.Error("Failed to get owner user obj: ", zap.Error(err)) - } - err = s.NotificationService.SendNotification(ctx, s.Logger, s.DB, []uint32{ownerObj.ID}, notifParam) if err != nil { logger.Error("Failed to send notification for reschedule request: ", zap.Error(err)) @@ -289,6 +293,14 @@ func (s Server) PostAPIRescheduleRequestSingle(w http.ResponseWriter, r *http.Re return } + // Check owner exists + ownerObj, err := s.DB.GetUserByEmail(ctx, string(body.OwnerEmail)) + if err != nil { + logger.Error("failed to get owner obj from db: ", zap.Error(err)) + sendError(w, http.StatusBadGateway, "owner is not found as a slotify user") + return + } + // Create Rescheduling Request var requestID int64 err = retry.Do(func() error { @@ -313,7 +325,7 @@ func (s Server) PostAPIRescheduleRequestSingle(w http.ResponseWriter, r *http.Re meeting, err = s.DB.GetMeetingByMSFTID(ctx, body.MsftMeetingID) if errors.Is(err, sql.ErrNoRows) { - meeting, err = processNewMeetingInfo(ctx, graph, s, body.MsftMeetingID, *logger) + meeting, err = processNewMeetingInfo(ctx, graph, s, body.MsftMeetingID, *logger, string(body.OwnerEmail)) if err != nil { logger.Error("failed to make new meeting info", zap.Error(err)) sendError(w, http.StatusBadGateway, "Failed to make new meeting info") @@ -350,12 +362,6 @@ func (s Server) PostAPIRescheduleRequestSingle(w http.ResponseWriter, r *http.Re Created: time.Now(), } - // Get Owner ID - ownerObj, err := s.DB.GetUserByEmail(ctx, meeting.OwnerEmail) - if err != nil { - logger.Error("Failed to get owner user obj: ", zap.Error(err)) - } - err = s.NotificationService.SendNotification(ctx, s.Logger, s.DB, []uint32{ownerObj.ID}, notifParam) if err != nil { logger.Error("Failed to send notification for reschedule request: ", zap.Error(err)) diff --git a/api/server.gen.go b/api/server.gen.go index 44ab6e01..09992033 100644 --- a/api/server.gen.go +++ b/api/server.gen.go @@ -116,6 +116,7 @@ type CalendarEvent struct { Body *string `json:"body,omitempty"` Created *time.Time `json:"created,omitempty"` EndTime *string `json:"endTime"` + ICalUId *string `json:"iCalUId,omitempty"` Id *string `json:"id,omitempty"` IsCancelled *bool `json:"isCancelled,omitempty"` @@ -306,7 +307,7 @@ type RescheduleRequest struct { // ReschedulingCheckBodySchema Request body of the details of the two meetings type ReschedulingCheckBodySchema struct { - NewMeeting struct { + NewMeeting *struct { // Attendees Array of all the attendees Attendees []AttendeeBase `json:"attendees"` @@ -318,13 +319,16 @@ type ReschedulingCheckBodySchema struct { // Title name of the meeting Title string `json:"title"` - } `json:"newMeeting"` + } `json:"newMeeting,omitempty"` OldMeeting struct { // IsOrganizerOptional if organizer does not need to be there, then set true. If the organizer is the only person in the meeting, keep false IsOrganizerOptional *bool `json:"isOrganizerOptional,omitempty"` - // MsftMeetingID The microsoft meeting ID of the old meeting if it exists + // MsftMeetingID The microsoft iCalUId meeting ID of the old meeting MsftMeetingID string `json:"msftMeetingID"` + + // OwnerEmail The email of the owner of the old meeting + OwnerEmail openapi_types.Email `json:"ownerEmail"` } `json:"oldMeeting"` } @@ -368,8 +372,11 @@ type ReschedulingRequestBodySchema struct { Title string `json:"title"` } `json:"newMeeting"` OldMeeting struct { - // MsftMeetingID The microsoft meeting ID of the old meeting + // MsftMeetingID The microsoft iCalUId meeting ID of the old meeting MsftMeetingID string `json:"msftMeetingID"` + + // OwnerEmail The email of the owner of the old meeting + OwnerEmail openapi_types.Email `json:"ownerEmail"` } `json:"oldMeeting"` } @@ -416,8 +423,9 @@ type ReschedulingRequestOldMeeting struct { // ReschedulingRequestSingleBodySchema Request body of the details of the old meeting type ReschedulingRequestSingleBodySchema struct { - // MsftMeetingID The microsoft meeting ID of the old meeting - MsftMeetingID string `json:"msftMeetingID"` + // MsftMeetingID The microsoft iCalUId meeting ID of the old meeting + MsftMeetingID string `json:"msftMeetingID"` + OwnerEmail openapi_types.Email `json:"ownerEmail"` } // Room defines model for Room. @@ -2246,98 +2254,98 @@ var swaggerSpec = []string{ "3xp3L2zoor7GQi8qbsy4r+5PHOB1LlZ2VZvkrTU1qkb0u0Ng3W2LsAnhEMt0hTJF4RZlVaVtKTrFAtaj", "5MYs8ipJOIhBtfDWLeuFavFxVB9TH4CLQXuAWxK5JYUOfssPD1+CavQmBNJTzeOG/cs5jiKmR4dTo+V0", "O87UKllyjFOgCeZvL60SCmFKUIU3nYyuvLFoDTcMSq3hMTOmSiMefWuTI+aAlVx05XCCJRwoJeiTxUCT", - "C/Xp6NuQuBxFJPH2ScQxpjGkKbjfp4ylgKkq8Acj9NPZu9DV+UCVQD8FUGr5hM6YRaBtZtN1Y7rZzDRL", - "6Ix511DZLQcclhyE0TyMqsUcpE3KjOETvr7vbA3f+lYKMJBmZxCTJQEqLa1cCbEpwXjRZhfbDmt6ITGX", - "wfgSuZFYPpBdwfQdoV8835p6pmQ0d1F8UvFtQxwPaB1NZ10H2UojJACQghJaAIejX6sitgQ6lzyPJXrD", - "4o2XQRMXm/YCdVQ1p+ElotiszgBVS2Wjy/vJuZSr83w+B6FpfgbY7gGC1A14q29KNMvmSuqJqk0OIk/l", - "kBYqEfSJWqMlBUfLuj9/4J/oF8quqAu2erWSles/57aeT6c1LKlQCs44wLSsdhtGZkEx1bPCVmGrR6NI", - "DUTNns2iUXTF+BdC529TAVeKUwbmf0IviYRjrcraszdfkdF0xQ4WaY3YZASrDV/JNfTh1yXhqze251od", - "X/EMhMBz8IosteUks9XPnOXLkze15nJC5csXVYOESpibHbdknwTw0PINNm106bRWDXXkkKU2Xx9TG2J3", - "AdEuhTCfHQ7ybs90V/qvwoPRvfhCT6Hd4xnMgAONQSCMzs1skR3GT4wjjEzF20fCjLNM0fpt+D64qPIT", - "4UK+98vhqtQ73FOIaBKEo6wXt+Vq95kvNWSUuF1j9qZC/9xNmZ6ZNzdG1Zo5NHGxX18m3xp4KF6fXXvo", - "rYGWRHSZrZu/DNrFK5p8xHNCjVnYclia+YQbmDVO8hiZFL7Kj3gOF+wL0I3ETTGiZls9Mz2FtZj6PjBy", - "fbDqs3aPogLZGzJ6V7MzVQhRnPWOzuWJrpZS3NPQFhKj3p9pCFUs1qsI/WO2JdBcFekc8iaCKVBANMVC", - "a8g+GTIgMwJFQLkPDNzqFeU3NfAKOzVsL9Gx56ddEpszlhVupsIcSGCG81RZGzGjltXPGMuiUbRgGVSO", - "rGkuCAUhql/mwI4Z44kSilrQCMkBZFVgwSRYJ5HEOcdUWlM8fW0bU1NiQuJyq/d7wHbedBOwa73uWdFj", - "RoXkmHQ6pto2fNqquu0yx2VLgQsuzkp+8TlzNnd0VHM6kZD5NJLdqrkc0RxAGL11B4H8lHpr747sikZr", - "79v76PlxsRIkrvB8PYoSIpYpXnXaUcWomi4P39EMSy9bJx2eVXClqtu9v41ROTmfCFTrUBr828ifpn2S", - "9DksVK9KZLc7XeMsa9Zrv6bhlmthTDg6paztHb3xcFyQDJTJFCxhsnq9TXGuPSspCxQqQNdwSWunYWjx", - "JhlpEhUtDFGt9AuFSorMV3mnHqr1zqCaXLrWsUKtskcWK1VNEqWq60vBcuPAsuVpnk2NgbhbD3jWhndf", - "U01u0D70xPB2OfZu47Z00nUIPtdHXaxV5d8MMAneK3OSxB07u7VPbUiy/UbfJytbPiIvEzUVUKjoWdbr", - "3YWKjb1H9xcLQOrL2EfrmOVU8tUHfgZzr7DQtU0hxDjiutgYncgnaj874wAHZqWQaRRd4jSHkY65ga84", - "W6YwQr9FnyiRkCC1cQHxW+QdizFkj1kC/mGY7yhmCYy7dlAdVfWnjkqFLeyrpb55qil4tUObPFv/ZiwS", - "sjhrrhyFK8vkwRFVhM5tx++ryorb02Tzpj5UlS0HgZD/MAzZpk8xKbPJDOBXWwGSf+AOkutwJum0fYUF", - "ynACbg+90qPqY9rBDNp9cPIGsZnuaQlcMIquFgyVdRuhZIHTEx2e5AKBuSj6bEepDSp/ZzEak3Q24zUC", - "17DgE3UuAI4XEH95zZLVeRnT1gRzdRZRTCMBiUlazkpescKMEAMQ74kfaASkKZ2pOsA2wM89Al3LJijC", - "fjqU8Zucd3gq1PKlQOdyUUzUVhmhBChTcCEUPXt2cv4B/e2vh8+fPUMGLWN0gN4aGXj0G0XoAD179hwt", - "WM6fPUP/+9//gz4/+Xjx/Jcnn4uPL/RHMUIvD1FGaC5BOCVf/PLy8FQVPlD/PvmMiAkETOzIUQKCzCmW", - "jKuePz+5ePIZCVhiroQuUlxjYgQVj1WEMmV/efIZ/aB7f6oLfX5yqn6xo3iKxBJiMluZdVYNFL2q6icz", - "xDIiJSQjiwvtE6lGRgR69qw2qR/UjPR8no5/o/oARRMqOorsTL1udSJTj4hXu6DG2gzyk2mqvfzOWaiX", - "aerytele+FDYWh+KEB89WOMiOprhVEAz0JPMUGmhoYSBQJRJREFJIYamWhxy0ISlSIBEkucwVjRX062q", - "WjQwmq4KmUZoHa5fAJZID6Iij+P9yMRMFpEpb/x8UJoxRaOOIGVpUv5KZohIBF+JkGJwKer9eqJ968Ud", - "SbKWiLMSzERa1kVdS1S9rSKHvLKcywbeaqKglARWEKATsxDmvyO0Wq1WB1l2kCQXi8VRlh0J8R/o39Uy", - "o5RdAY+xUCJHSuACYa6UxDLFMSRourIhvjTPgCt70xhcQvNQmIakcHXuhq48sgm20VLNduSubSBeHpRS", - "NMaNthFK5Viv61g/S8wlickSU5dJ3eP6hqoEmpxhOodHyxrwiNk+7TyK0QaO/TqoRvcG00MymDRmHzfP", - "ikesy27d4nXJWYlDR3i0INXQCuuazLuzOdc0M0s6uNaB/enDFQV+44bo+1Dl36HJO30Zge6KjsNfV9vv", - "leFeGT4yZbjXFNtoikHt0O886Xc5t5WDldYd/uchdRB2hNRQAo8RGjepZBXwMtAGwFuaPFLOshM8Lw7v", - "H7fLpMNQOkn8RlODPA1ABIqBc0LnKWzpa6kD9Z4Yml4CMJZtFZlD14q76YwSaqQm6CW/DRip31P+idAE", - "2bkiU3W9k29lwB7MCE3ckBHfcfdv+eHhi79KPBV/V+3/xR51HSg47PJGatcxUYdvvzuGsB4guV4MoRba", - "+OsxpglJsI2LDwj12FujD8catYT3x4zHuZAsQzMCqR4HEarfXEBSZjN5dYIyloBXPGSEkizPCkx/BB4D", - "lTZUJiDcSVElHL8X9dJ9l1Z9XORlGZ/x6VKsNcYA8ebLvLJNdJxqKU/lbV7jbCqMrlup/dkXvLUacWnV", - "92AR6o8/9GX8aa+UcyWhK042yKexg9BZdyzVPc3GwU1QP51dXLT4KyjGrA75baJb1w2cx7Ekl0Su3rAM", - "E+q/zmbDEzfDi41r7M0NVfXgo+kNRzuHYzA8LlrjcO3gaDXRLlw+hOBuNf6h64AbXN8b6aPNcPR9Er5D", - "zsbkTJPDVwCv9aWzGfOc1X48UQwcsyzLKYkLw6WM/yrOhtEVkQt0WvJwVHp0CoGEXn08iUbRJXBhmn4+", - "Phwfagf7Eihekugoeql/GkVLLBeaApr3cS4Xkxin6RTHOsvE3IQ8KorrBThJoqPoZ5CvPp68yuXiuCiq", - "GuI4A6kJ++u3SPF+9GcOfFVI0KMoZglELtmMO7lKjtbCj78dE7+5TkO/N3LSvTx80V4Aq/VneYoUHaJR", - "tACcWKS86/UDfzp7p9aOgxHF6m88k8CRqLcJVJLqfKQcbmUGKkGt5DSLcbpgQh69PDw8nCRYLKYM88QX", - "YarTrOVZhvlKoSiXC2WVSO0wQDaPmzAWqVoANEvZ1VjjVy95bFMHmYw+A2tezzMUtOhqj6udA1svOxGq", - "/08nSUhj1SWd5tq/ODzcWca+Oj18yfnK9U9XaM5MSkFU0NykYNJ3l340o6rXfo2TMuxTl3neNaByhpN2", - "7r7rUfSva87ZE8bcmBfLQC7UXv4KqERXnNE5UhKWU5ymK9Pni1voUwtDTBF8NX1r2VdniZ9BNiiOpivH", - "h0MSHzsYjRbAC6cQxgjCOr26oRvmgfO3bq78bNn2tqwSpE4bPNPSq3seuqc8hDXhn4gm6Y2iQXNyCdS4", - "STimcxgXVzXaDPSRiRYH8SqI7ibFc51DrluAf357ukF/cCyEdIWK+0Z7MN8kmM2eCGFE4aoBZp8m+Jbr", - "5EHXgfqgTDX0OHTCqInB9+bwyDny0PJYMqSIMzIjUduKaiB5QZKAsXRnXdlrpz1D92kn460n8dpqquB4", - "u1YVmzfktZB4mhKx0Bl6hOSAMxQzSiHWuyu9AYxBJ9MGnGqGQvlSH8sgPGW5RBxoAvr2o8Tii0CXBKNz", - "4JfAD87VjN+akf5wfv726Vjnf3XlzJmuXey9BnhBwldpZnRghtqXBT7BclCf1S7venyznlTrijqS0Jzl", - "oqAXmyFhJizUhA3Jx/W99jGOF3BwzKjkzJN76D1DMY41TIhAOE3ZVXnaQYqOxlHvDjM6LtfN44lJLokA", - "c84Up0SNUzJzJ0b/VC05WwIN6EmtyYE/7fDFAtDpyelbpCoagVrOQZ91NZexv7uGN+A8n6rOpqAmQJ0F", - "FJbytsmSBRaAU7mIFzDo/vnFKbmlYB6UC05fjr3UEAJuIe0AcablJA3rtUhPylReN2GO1jI63rI1Wk+D", - "1iaxGVWiBK1NZeUapjevv348/NHjkasnxGISzVhOE0fframzus1AM+kWYobdAFVGt5bF158mssuzqT+u", - "s6hlkq9bMZCq+QYYRz8zqa8eWY1siVrf82j9vixc5uM7gpqy2l2Ete2LNC3Hr3RNyuZzEwShJvd///lf", - "lpdFbS5NOH0rsq1dmyGkYA5n6sh6o3+vwHVSpWjrhVjbNLe8LJk1RPz2uZMC7k4t9EFFYAiTuFO7B2LK", - "cvau5ZOZbCWRtT8Fy3jhUV/q5weKl830bDP+NzC/S1HQfzA3pI53jOZPmsQ1NNvx1VA9flywNrN2DA2z", - "wdNauFieHrk5MWmVNQbWYgZznfvhidDnuwVd8X6QT34+MqSZqVpoGRvSThrTBOEkQRlkU+O7quVe7VXc", - "E5vMe30EvrEVv3cIWjp8BwgsZuro8AJYmZjJA402MbDDKPNCiiHklEEh9RTCvp2G/RQeMnEjm4kq5WXA", - "ZqIxO4EyxWbambYApOeHHPIEAAn9AOP5eFS8WOecCVf0e7qtX/Ze+UibCJmuXMKJsRefw5vgCqL2LG8X", - "wGkHDq6322zh5R5sFYK2mc2Bq52zcXC6D1N2rNW3uXn24jp4yap3MtZUS00w9R0BzctONo/a2mXkjiN5", - "/EBqTq4Nnp0CoyW6t9dED0H41GJvvDCelMGa64D5kw3H7PfIdSF5dxDuOJml8FXqh7w2qJuSjASeGd+Y", - "o6Ydg1s8SzaYU3692NsyO/Uu42/bIrnhkiwZbxsmf7lb1nP00qjFSSRBRFQP7+6Pg7UeNbs7femzJXya", - "YidUynQIlttn8j1P3wFPexT3T5ikJgPjHIxhJpB+fKYE3J4fobLL28Rps+FEAObGrxLCjeem9ICyN6Wq", - "DaK2pyuhoDseoRhTNAXn9aEREjk3f7DqsSPv2V0xjHtmDdyioNgLhr1gWFcw+AiDplhAghjVLKi9tYbz", - "SmFRi2WZfHP/VXsGDjgJ8M+6IU3ifa2NM9WCX83XdwX1ru/9CWotXDG3B1C0Ftq1c05wKVttbMd3A/8a", - "AE8x/4Jwbf4ICzQF1YACkWMmcphxEIvBGKIzW+6mvei1lbSDgwRh/SuSWiRusZY1Otk5lc8Sup1o9rT9", - "m19qRCvuL07KoLIB6hUVjsvQst1HYvUltL+Bk+DG6xuYvoZqnp5USKpPRGYmobfO4WP90zZ/ikiZjWdt", - "ptOWDMULTOeAJPOm7iaiyiZ4yjicZEvGJfbdLb+oRmEPZ8uU3RnjgEhRFckFpt3Jb3peLRtAtYYMJO4r", - "CKJ8avXHXYuOnoMBc2sswRI/fWhh2vWQNx0dSdpp2K3dyx1U+njYkmdiU0qtwc02KdOZrXjzbN1Oyn0X", - "IR4NIV2+GsJcTDc5Zw/u7eI5i3n2UtleB3AE27gX8kLnHVsf8SZf2e0BvpUf7eZgX6QB2sP+LmF/FoT2", - "6QoRKSCd9YL8m/1j+PjQI9ltzfXPEduPHPUeJXKnpzvdbAVxZvnq1+DdMZBdTz7tOWMjzij8jm2KCsUP", - "xexJMg5livDgw27+2DQO8U655FZUV+vBnRu4I7OexYaLYMnaAhjngB7yY42Y9IBtQ46JUyZgY2VyrGt/", - "NxplEJ2FstdU3V8rvln3tL2A4bwyGY56li2Luz3r7pAL6BdNfO+aYp/FY8+d62XxsMnXCvAXVAxXWhy0", - "f3IbM+8Migd8H6rqutnzCkWd78ewMmjoNKwGDKqACOwWELsjsftJ1W5ov/3c/fazOLupknrqox6dXsKJ", - "8S7far2itYBvzlgmJjhNh1Chyr1K0+g2LnPotwoCwvTvLAZDU20fg+FH6ZIJQaYKo4pKDtYq2TwRRdbm", - "XpO2kUz9hlzf3S9ShDu8+2HWnxR+LxU3k4onCWRLpro2WVpG6I9c22gy51QgvFxytuREmXY6gZI568Zp", - "CWfzhI2aJMRSJ1vCWoS6kDVhCs71un7AOnncbwyu7Vzxt7yTqWXO9y2j873YwnRdmboVxAt3QFtfxeve", - "O7j9dIJo2AKroSg0KWyZKyRa01x/UJdD1k7QLmocGWqA1BE+EEMqGky/fixp47phHS8P5rJhY9g9twwb", - "DPHNpWBoQpsak5zXGlh/q1wTEJIh27t3nyyafT2MRDe1Ka4LqV6BSpKnN5ex6+fmHUZvYpv6gIpt8ChY", - "yO4aP51OlvsFnm2UvJJZA5i6FTzsxKli0376QBQos9zEgJuhrsoYeMfJ30Yb4b1KacZZdhvgH30/dlBo", - "OsbGEzc9lgY2dxc7MundtySNgyn0cD3rTjjXpoAvYVI8h9dncvRw7jvVyClsrzYW+BKqPNh6bJqdxo/C", - "Eikfj6857FKYSZcYxQreYwT+otYFFymfqmXaHIYhd4Z7ALhmjgK3972kDml6MMdRV958e8vzbjKTeF49", - "u20n+g1lLWjsP+4iZUFIpoAOf1AItwex9EfMJcGpudKouizeTzA3iJVq7LAQh4E56uqseN0/uK/7kSCs", - "4zpwBzvUEoKZRP+NtGDjrffNJ29243/fZuNzXi6evT6rHePTlYUUpole7zE6/XR+gZacXZIEEKNQ6JJa", - "zi90VvjeUYa/qiLPDy0+QAy/4lNg/ia85s4LlrfsLTfA8wNtyDu+BbC6vdQNZ5xJlDDolNaLs31Otk0o", - "9XPxFsruqXT7nlLXJfpEoAQkJqnwrMckZXOWy8EzJ7sw70zpW72GZjOXs1wiRtEUx1+gNWczri7Q1a/f", - "h0Gwdtf+VuIR3jduta/1ko/vavz4u7obXyRneCJQTjngOi3a2HefyRo8B9Cg6HopK/S9qT5///14cirY", - "z78TQakbKQXkumKu9MrrZoK88TtZxXv+atg9VH0bHfXVl1UX0O8wmcXKeep7ffhvh387jNSmovoujiaK", - "6cd2aGOBsVyME7iMrn+//v8AAAD//77UILq4yAAA", + "C/Xp6NuQuBxF5Binn04Sb8ek42dxjGkMaQru9yljKWCqCvzBCP109i505T5QJexPAZTKPqEzZtFpm9l0", + "TZluNjPNEjpj3vVVNs0BhyUHYbQSo2qhB+mWMmMUha/9O1vDt/aVcgyk2RnEZEmASksrV3psSjBetNnF", + "0sNWgJCYy2DsidxIMx/IrmD6jtAvnm9NHVQyobsoPon5tiGqBzSSprOug2ylERIASEEJLYDD0a9VEVsC", + "nUuexxK9YfHGy6CJi017gfqrmtPwElFsVmeAqqUi0uX95FzK1Xk+n4PQND8DbPcHQaoIvNU3JZplcyUR", + "RdUmB5GnckhDlQj6RK1Bk4Kjgd2fP/BP9AtlV9QFW71aycr1n3Nbz6fvGlZWKAVnHGBaVrsNA7SgmOpZ", + "Yauw46NRpAaiZs9m0Si6YvwLofO3qYArxSkD8z+hl0TCsVZz7dmbr8howWJ3i7S2bDKC1ZSv5Bq68uuS", + "8NUb23Otjq94BkLgOXhFltqOktnqZ87y5cmbWnM5ofLli6pBQiXMzW5csk8CeGj5Bps2unRaq4Y6cshS", + "m6+PqQ2xu4Bol0KYzw4Hebduuiv9V+Hd6F58oafQ7vEMZsCBxiAQRudmtsgO4yfGEUam4u0jYcZZpmj9", + "NnyPXFT5iXAh3/vlcFXqHe4pRDQJwlHWi9tytfvMlxoyStyuMXtToX/upkzPzJubpmrNHJq42K8vk28N", + "PBSvz6499NZASyK6zNbNXwbt4hVNPuI5ocYsbDkzzXzCDcwaJ3mMTApf5Uc8hwv2BehG4qYYUbOtnpme", + "wlpMfR8YuT5Y9Vm7TlGB7A0ZvavZmSqEKM56R+fyRFdLKe5paAuJUe/PNIQqFutVhP4x2xJorop0DnkT", + "wRQoIJpioTVknwwZkBmBIqDcBwZu9Yrymxp4hZ0atpfo2PPTLonNGcsKF1RhDiQww3mqrI2YUcvqZ4xl", + "0ShasAwqJ9c0F4SCENUvc2DHjPFECUUtaITkALIqsGASrANJ4pxjKq0pnr62jakpMSFxudX7PWA7b7oJ", + "2LVe96zoMaNCckw6nVZtGz5tVd12meOypcAFF2clv/icOZs7Oqo5nUjIfBrJbtVcjmgOIIzeuoNAfkq9", + "tXdHdkWjtfftffT8uFgJEld4vh5FCRHLFK867ahiVE2Xh+/YhqWXrVMQzyq4UtXt3t/GqJycTwSqdSgN", + "/m3kT9M+SfocFqpXJbLbna5xzjXrtV/TcMu1MCYcnVLW9o7eeDguSAbKZAqWMFm93qY4156VlAUKFaBr", + "uKu10zC0eJOMNImKFoaoVvqFQiVF5qu8Uw/VeudTTS5d68ihVtkji5WqJolS1fWlYLlxYNnyNM+mxkDc", + "rQc8a8O7r6kmN2gfemJ4uxx7t3FbOuk6BJ/roy7WqvJvBpgE75U5SeKOnd3aJzok2X6j75OVLR+Rl4ma", + "CihU9Czr9e5CxcbeY/2LBSD1ZeyjdcxyKvnqAz+DuVdY6NqmEGIccV1sjE7kE7WfnXGAA7NSyDSKLnGa", + "w0jH48BXnC1TGKHfok+USEiQ2riA+C3yjsUYsscsAf8wzHcUswTGXTuojqr6U0elwhb21VLfPNUUvNph", + "T56tfzNOCVmcNVeOwpVl8uBoK0LntuP3VWXF7WmyeVMfqsqWg0DIfxiGbNOnmJTZZAbwq60AyT9wB8l1", + "qJN02r7CAmU4AbeHXulR9THtYAbtPjh5g9hM97QELhhFVwuGyrqNMLPA6YkOT3KBwFwUfbYj2AaVv7MY", + "jUk6m/EagWtY8Ik6FwDHC4i/vGbJ6ryMd2uCuTqLKKaRgMQkLWclr1hhRogBiPfEFjSC1ZTOVB1gG/zn", + "HoGuZRMUIUEdyvhNzjs8FWr5UqBzuSgmaquMUAKUKbgQip49Ozn/gP7218Pnz54hg5YxOkBvjQw8+o0i", + "dICePXuOFiznz56h//3v/0Gfn3y8eP7Lk8/Fxxf6oxihl4coIzSXIJySL355eXiqCh+of598RsQECSZ2", + "5CgBQeYUS8ZVz5+fXDz5jAQsMVdCFymuMfGDiscqQpmyvzz5jH7QvT/VhT4/OVW/2FE8RWIJMZmtzDqr", + "BopeVfWTGWIZkRKSkcWF9olUIyMCPXtWm9QPakZ6Pk/Hv1F9gKIJFR1FdqZetzqRqUfEq11QY20G+ck0", + "1V5+5yzUyzR1+dp0L3wobK0PRfiPHqxxER3NcCqgGQRKZqi00FDCQCDKJKKgpBBDUy0OOWjCUiRAIslz", + "GCuaq+lWVS0aGE1XhUwjtA7XLwBLpAdRkcfxfmRiJovIlDd+PijNGGRjaYrGHYHK0qR7FUYRu6Kd/mfV", + "hd4slm2pwv6Gh7avjfWuT642DE/scb3uGnLUikkT6lmXpy15+LYKXfIqDC4boK7Jm1LcWGmDTsxqm/+O", + "0Gq1Wh1k2UGSXCwWR1l2JMR/oH9XWEIpuwIeY6HkmpTABcJcaaJlimNI0HRlY4xpngFXRq2x6oRm1DA1", + "TOHq3I2PeWQTbACkNtuRu7aBeHlQmtdYUNoQKTVwva5jYi0xlyQmS0yl8McENPQx0OQM0zk8WtaAR8z2", + "aed5j7ai7NdBXb23yh6SVaYx+7h5VjxiXXbrZrVLzkocOsKjBamGVljXLt8bth2GrWMajDawct+HWhYd", + "ZkKnNybQ4dJxfO2aEntNu9e0j0zT7tXQNmpoUPX0u3/6neZtzWMFc4cHfUjHhB2C6dLnjxoaa2nwtTW3", + "6lVbF29p8kg5y07wvAg/eNz+mKZNVLGhh19a5GkAIlAMnBM6T2FLR04dqHdvxd6kLTqKdJzkNgFKdK3w", + "o85gqUb2ht41tHEz9avcPxGaIDtxZKquFwCgrOCDGaGJGznjO/X/LT88fPFXiafi76r9v9gTvwOFqV1e", + "2u06Les44ugOpazHia4XSqklP/56jGlCEmyvBwREvOxN2odj0lrC+0Pn41xIlqEZgVSPgwjVby4gKRO+", + "vDpBGUvAKx4yQkmWZwWmPwKPgUobMRQQ9aWoEo7fi3rpvru7Pi7ysozPgnUp1hpjgHjzJafZJkhQtZSn", + "8jZvszYVRtfl3P4EFd5ajfC86nuwCPWHYfqSIrVXyrmZ0RUuHOQY2UEEsTuW6rpq42gpqJ/OLi5a/BUU", + "aleH/DZBvuveH8CxJJdErt6wDBPqv9VnozQ3w4sN7+xNn1X14KPpDQd9h2MwPDxc43DtGHE10S5cPoQY", + "dzX+oVuRG9xiHOnD13D0fRK+Y9jG5EyTwzchr/XduxnznCZ/PFEMHLMsyymJC8OlDIMrTq/RFZELdFry", + "cFS6hQqBhF59PIlG0SVwYZp+Pj4cH+qtyxIoXpLoKHqpfxpFSywXmgKa93EuF5MYp+kUxzrZxtxEfiqK", + "6wU4SaKj6GeQrz6evMrl4rgoqhriOAOpCfvrt0jxfvRnDnxVSNCjKGYJRC7ZjE+6yh/Xwo+/HRPGuk5D", + "vzfS9r08fNFeAKv1Z3mKFB2iUbQAnFikvOt1Jn86e6fWjoMRxepvPJPAkai3CVSS6gSnHG5lBipBreQ0", + "i3G6YEIevTw8PJwkWCymDPPEF2irM9HlWYb5SqEolwtllUjtdUA21Z0wFqlaADRL2dVY41cveWyzK5mk", + "RwNrXk/FFLToasOrd7pbLzsRJzY7UUBj1V2l5tq/ODzcWVLDOj18+QvL9U9XaM5M1kVU0NxkqdJXuH40", + "o6rXfo2TMvpVl3neNaByhpN2esPrUfSva87ZE83dmBfLQC7UXv4KqERXnNE5UhKWU5ymK9Pni1voUwtD", + "TBF8NX1r2VdniZ9BNiiOpivXEZT42MFotABeOIUwRhDWc9YN3TA3nr91c/Npy7a3ZZUgddrgmZZe3fPQ", + "PeUhrAn/RDRJbxQNmpNLoMZNwjGdw7i4sdJmoI9MtDiIV2F+Nyme6xxy3QL889vTDfqDYyGkK1Rcu9qD", + "+SbBbPZECCMKVw0w+zTBt1znULoO1AdlxqXHoRNGTQy+NydQznmJlseSIUWckRmJ2lZUA8kLkgSMpTv5", + "zF477Rm6TzsZbz2J11ZTBcfbtarYvCGvhcTTlIiFTlQkJAecoZhRCrHeXekNYAw63zjgVDMUypf6WAbh", + "Kcsl4kAT0JdAJRZfBLokGJ0DvwR+cK5m/NaM9Ifz87dPxzpFritnznTtYu81wAsSvkozowMz1L5E+QmW", + "g/qsdofZ45v1ZKNX1JGE5iwXBb3YDAkzYaEmbEg+ru+1j3G8gINjRiVnnkjB9wzFONYwIQLhNGVX5WkH", + "KToaR707zOi4XDePJya5JALMOVOcEjVOyczVIP1TteRsCTSgJ7UmB/7MzBcLQKcnp2+RqmgEajkHfdbV", + "XMb+7hregPN8qjqbgpoAdRZQWMrbJksWWABO5SJewKD75xen5JaCeVAuOH059lJDCLiFtAPEmZaTO63X", + "Ij0pM5rdhDlaS2x5y9ZoPRtcm8RmVIkStDajl2uY3rz++vHwR49Hrp4XjEk0YzlNHH23ps7qNgPNpFuI", + "GXYDVIntWhZff7bMLs+m/rjOopa5zm7FQKrmG2Ac/cykvhxlNbIlan3Po/X7snCZj+8IaspqdxHWti/S", + "tBy/0jUpm89NEISa3P/9539ZXha1uTTh9K1IOndthpCCOZypI+uN/r0C10mVqa4XYm3T3PKyZNYQ8dvn", + "Tia8O7XQBxWBIUziTu0eiCnL2buWT2aylUTW/hQs44VHfamfHyheNtOzzSDiwDQ3RUH/wdyQOt4xmj9p", + "EtfQbMdXQ/X4ccHazNoxNMwGT2vhYnl65ObEZJfWGFiLGcyF84cnQp/vFnTFE0s++fnIkGamaqFlbEg7", + "aUwThJMEZZBNje+qloK2V3FPbE7z9RH4xlb83iFo6fAdILCYqaPDC2BlYiYPNNrEwA6jTI8phpBTBoXU", + "Myn7dhr2U3jIxI1sJqrMnwGbicbsBMoUm2ln2gKQnh9yyBMAJPQDjOfjUfGon3MmXNHv6bZ+2XvlI20i", + "ZLpyCSfGXnwOb4IriNqzvF0Apx04uN5us4WXe7BVCNpmNgeuds7Gwem+3dmxVt/m5vWP6+Alq54LWVMt", + "NcHUdwQ0LzvZPGprl5E7juTxA6k5uTZ4dgqMlujeXhM9BOFTi73xwnhSBmuuA+ZPNhyz3yPXheTdQbjj", + "ZJbCV6nfM9ugbkoyEnhmfGOOmnYMbvE622Bq/fVib8sk3buMv22L5IZLsmS8bZj85W5Zz9FLoxYnkQQR", + "Ub1NvD8O1nrU7O70zdGW8GmKnVAp0yFYbp/J9zx9BzztUdw/YZKaRJRzMIaZQPoNnhJwe36Eyi5vE6fN", + "hhMBmBu/Sgg3npvSA8relKo2iNqeroSC7niEYkzRFJxHmEZI5Nz8wao3n7xnd8Uw7pk1cIuCYi8Y9oJh", + "XcHgIwyaYgEJYlSzoPbWGs4rhUUtlmXyzf1X7Rk44CTAP+uGNIn3tTbOVAt+NV/fFdS7vvcnqLVwxdwe", + "QNFaaNfOOcGlbLWxHd8N/GsAPMX8C8K1+SMs0BRUAwpEjpnIYcZBLAZjiM5suZv2otdW0g4OEoT1r0hq", + "kbjFWtboZOdUvs7odqLZ0/ZvfqkRrbi/OCmDygaoV1Q4LkPLdh+J1ZfX/wZOghuPkGD6Gqp5evIpqT4R", + "mZm85joRkPVP2/wpImU2nrWRrkZfIF1gOgckmTeDORFVSsJTxuEkWzIuse9u+UU1Cns4a/ogM5QxDogU", + "VZFcYNqdOafn8bYBVGvIQOI+BiHKF2d/3LXo6DkYMLfGEizx04cWpl0PedPRkaSV5qiwe7mDSh8PW/JM", + "bF6qNbjZZnY6sxVvnq3bacPvIsSjIaTLx1OYi+km5+zBvV08ZzHPXirb6wCOYBv3Ql7o5GXrI94kPbs9", + "wLeSrN0c7Is0QHvY3yXsz4LQPl0hIgWks16Qf7N/DB8feiS7rbn+OWL7rafeo0Tu9HSnm60gziwfPxu8", + "Oway6+WrPWdsxBmF37FNUaH4oZg9ScahTBEefNjNH5vGId4pl9yK6mo9CXQDd2TWs9hwESxZWwDjHNBD", + "fqwRkx6wbcgxccoEbKxMjnXt70ajDKKzUPaaqvtrxTfrnrYXMJzHNsNRz7Jlcbdn3R1yAf2iie9dU+yz", + "eOy5c70sHjb5WgH+gorhSouD9k9uY+adQfGO8UNVXTd7XqGo8/0YVgYNnYbVgEEVEIHdAmJ3JHY/qdoN", + "7befu99+Fmc3VVJPfdSj00s4Md7lk7VXtBbwzRnLxASn6RAqVLlXaRrdxmUO/VZBQJj+ncVgaKrtYzD8", + "KF0yIchUYVRRycFaJZsnosja3GvSNpKp35Dru/tFinCHdz/M+pPC76XiZlLxJIFsyVTXJkvLCP2RaxtN", + "5pwKhJdLzpacKNNOJ1AyZ904LeFs3sFRk4RY6mRLWItQF7ImTMG5XtcPWCeP+43BtZ0r/pZ3MrXM+b5l", + "dL4XW5iuK1O3gnjhDmjrq3jdewe3n04QDVtgNRSFJoUtc4VEa5rrD+pyyNoJ2kWNI0MNkDrCB2JIRYPp", + "148lbVw3rOPlwVw2bAy755ZhgyG+uRQMTWhTY5LzWgPrb5VrAkIyZHv37pNFs6+HkeimNsV1IdUrUEny", + "9OYydv3cvMPoTWxTH1CxDR4FC9ld46fTyXK/wLONklcyawBTt4KHnThVbNpPH4gCZZabGHAz1FUZA+84", + "+dtoI7xXKc04y24D/KPvxw4KTcfYeOKmx9LA5u5iRya9+5akcTCFHq5n3Qnn2hTwJUyK5/D6TI4ezn2n", + "GjmF7dXGAl9ClQdbj02z0/hRWCLlC/Q1h10KM+kSo1jBe4zAX9S64CLlU7VMm8Mw5M5wDwDXzFHg9r6X", + "1CFND+Y46sqbb2953k1mEs+rZ7ftRL+hrAWN/cddpCwIyRTQ4Q8K4fYglv6IuSQ4NVcaVZfF+wnmBrFS", + "jR0W4jAwR12d6YuU6/R1PxKEdVwH7mCHWkIwk+i/kRZsvPW++eTNbvzv22x8zsvFs9dntWN8urKQwjTR", + "6z1Gp5/OL9CSs0uSAGIUCl1Sy/mFzgrfO8rwV1Xk+aHFB4jhV3wKzN+E19x5wfKWveUGeH6gDXnHtwBW", + "t5e64YwziRIGndJ6cbbPybYJpX4u3kLZPZVu31PqukSfCJSAxCQVnvWYpGzOcjl45mQX5p0pfavX0Gzm", + "cpZLxCia4vgLtOZsxtUFuvr1+zAI1u7a30o8wvvGrfa1XvLxXY0ff1d344vkDE8EyikHXKdFG/vuM1mD", + "5wAaFF0vZYW+N9Xn778fT04F+/l3Iih1I6WAXFfMlV553UyQN34nq3jPXw27h6pvo6O++rLqAvodJrNY", + "OU99rw//7fBvh5HaVFTfxdFEMf3YDm0sMJaLcQKX0fXv1/8fAAD//xC4OsHbyQAA", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/shared b/shared index 83a2b5e6..ad6b08ed 160000 --- a/shared +++ b/shared @@ -1 +1 @@ -Subproject commit 83a2b5e6ce1ee3b37565ada634f8febc5d6b5cfd +Subproject commit ad6b08eda774e4a1e680ae38a80b7257e380a7bc From 8755e1eea95d5be23df45987dc7e8a82bfe2492a Mon Sep 17 00:00:00 2001 From: jnile Date: Sun, 23 Mar 2025 12:19:36 +0000 Subject: [PATCH 7/8] Event from owner can be fetched --- api/reschedule.go | 18 ++++------------ api/rescheduling_impl.go | 45 ++++++++++++++++++++++++---------------- 2 files changed, 31 insertions(+), 32 deletions(-) diff --git a/api/reschedule.go b/api/reschedule.go index f8d59485..d010ada8 100644 --- a/api/reschedule.go +++ b/api/reschedule.go @@ -11,7 +11,6 @@ import ( msgraphsdkgo "github.com/microsoftgraph/msgraph-sdk-go" graphmodels "github.com/microsoftgraph/msgraph-sdk-go/models" "github.com/microsoftgraph/msgraph-sdk-go/users" - "go.uber.org/zap" ) // durationToISO formats a positive duration in the ISO 8601 format. @@ -231,22 +230,19 @@ func processNewMeetingInfo(ctx context.Context, graph *msgraphsdkgo.GraphServiceClient, s Server, msftMeetingID string, - logger zap.SugaredLogger, userEmail string, ) (database.Meeting, error) { // Fetch meeting data from microsft - msftMeeting, err := getUsersEvent(ctx, graph, logger, msftMeetingID, userEmail) + msftMeeting, err := getUsersEvent(ctx, graph, msftMeetingID) if err != nil { - logger.Error("failed to get meeting data from microsoft", zap.Error(err)) return database.Meeting{}, fmt.Errorf("failed to get meeting data from microsoft: %w", err) } var startTime time.Time startTime, err = time.Parse(time.RFC3339Nano, *msftMeeting.GetStart().GetDateTime()+"Z") if err != nil { - logger.Error("failed to get parse start time", zap.Error(err)) - return database.Meeting{}, err + return database.Meeting{}, fmt.Errorf("failed to get parse start time: %w", err) } newMeetingParams := NewMeetingAndPrefsParams{ @@ -257,8 +253,7 @@ func processNewMeetingInfo(ctx context.Context, meeting, err := createNewMeetingsAndPrefs(ctx, newMeetingParams, s, msftMeetingID) if err != nil { - logger.Error("failed to get data from new db.Meeting", zap.Error(err)) - return database.Meeting{}, err + return database.Meeting{}, fmt.Errorf("failed to get data from new db.Meeting: %w", err) } return meeting, nil @@ -266,9 +261,7 @@ func processNewMeetingInfo(ctx context.Context, func getUsersEvent(ctx context.Context, graph *msgraphsdkgo.GraphServiceClient, - logger zap.SugaredLogger, msftID string, - userEmail string, ) (graphmodels.Eventable, error) { queryFilter := "iCalUId eq '" + msftID + "'" @@ -279,10 +272,8 @@ func getUsersEvent(ctx context.Context, }, } - // msftMeetingRes, err := graph.Me().Events().Get(ctx, &requestConfig) - msftMeetingRes, err := graph.Users().ByUserId(userEmail).Events().Get(ctx, &requestConfig) + msftMeetingRes, err := graph.Me().Events().Get(ctx, &requestConfig) if err != nil { - logger.Error("failed to get meeting data from microsoft", zap.Error(err)) return nil, fmt.Errorf("failed to get meeting data from microsoft: %w", err) } @@ -291,6 +282,5 @@ func getUsersEvent(ctx context.Context, return msftMeetingRes.GetValue()[0], nil } - logger.Error("failed to get meeting data from microsoft: returned empty array") return nil, errors.New("failed to get meeting data from microsoft: returned empty array") } diff --git a/api/rescheduling_impl.go b/api/rescheduling_impl.go index 7f1f0517..24934db3 100644 --- a/api/rescheduling_impl.go +++ b/api/rescheduling_impl.go @@ -11,6 +11,7 @@ import ( "github.com/SlotifyApp/slotify-backend/database" "github.com/avast/retry-go" + msgraphsdkgo "github.com/microsoftgraph/msgraph-sdk-go" graphmodels "github.com/microsoftgraph/msgraph-sdk-go/models" "go.uber.org/zap" ) @@ -43,9 +44,17 @@ func (s Server) PostAPIRescheduleCheck(w http.ResponseWriter, r *http.Request) { return } + var graphForOwner *msgraphsdkgo.GraphServiceClient + graphForOwner, err = CreateMSFTGraphClient(ctx, s.MSALClient, s.DB, userID) + if err != nil { + logger.Error("failed to create msgraph client", zap.Error(err)) + sendError(w, http.StatusBadGateway, "Failed to connect to microsoft graph API") + return + } + // Get old meeting data from microsoft - msftMeeting, err := getUsersEvent(ctx, graph, *logger, - body.OldMeeting.MsftMeetingID, string(body.OldMeeting.OwnerEmail)) + msftMeeting, err := getUsersEvent(ctx, graphForOwner, + body.OldMeeting.MsftMeetingID) if err != nil { logger.Error("failed to get meeting data from microsoft", zap.Error(err)) sendError(w, http.StatusBadGateway, "Failed to get meeting data from microsoft") @@ -132,13 +141,6 @@ func (s Server) PostAPIRescheduleRequestReplace(w http.ResponseWriter, r *http.R return } - graph, err := CreateMSFTGraphClient(ctx, s.MSALClient, s.DB, userID) - if err != nil { - logger.Error("failed to create msgraph client", zap.Error(err)) - sendError(w, http.StatusBadGateway, "Failed to connect to microsoft graph API") - return - } - // Check owner exists ownerObj, err := s.DB.GetUserByEmail(ctx, string(body.OldMeeting.OwnerEmail)) if err != nil { @@ -147,6 +149,13 @@ func (s Server) PostAPIRescheduleRequestReplace(w http.ResponseWriter, r *http.R return } + graph, err := CreateMSFTGraphClient(ctx, s.MSALClient, s.DB, ownerObj.ID) + if err != nil { + logger.Error("failed to create msgraph client with owner id", zap.Error(err)) + sendError(w, http.StatusBadGateway, "Failed to connect to microsoft graph API") + return + } + // Create Rescheduling Request var requestID int64 err = retry.Do(func() error { @@ -170,7 +179,7 @@ func (s Server) PostAPIRescheduleRequestReplace(w http.ResponseWriter, r *http.R if errors.Is(err, sql.ErrNoRows) { // Meeting info not in db, so create new meeting info meeting, err = processNewMeetingInfo(ctx, graph, s, - body.OldMeeting.MsftMeetingID, *logger, string(body.OldMeeting.OwnerEmail)) + body.OldMeeting.MsftMeetingID, string(body.OldMeeting.OwnerEmail)) if err != nil { logger.Error("DB Creation Error: ", zap.Error(err)) sendError(w, http.StatusBadGateway, "Failed to create New Meeting Info") @@ -286,13 +295,6 @@ func (s Server) PostAPIRescheduleRequestSingle(w http.ResponseWriter, r *http.Re return } - graph, err := CreateMSFTGraphClient(ctx, s.MSALClient, s.DB, userID) - if err != nil { - logger.Error("failed to create msgraph client", zap.Error(err)) - sendError(w, http.StatusBadGateway, "Failed to connect to microsoft graph API") - return - } - // Check owner exists ownerObj, err := s.DB.GetUserByEmail(ctx, string(body.OwnerEmail)) if err != nil { @@ -301,6 +303,13 @@ func (s Server) PostAPIRescheduleRequestSingle(w http.ResponseWriter, r *http.Re return } + graph, err := CreateMSFTGraphClient(ctx, s.MSALClient, s.DB, ownerObj.ID) + if err != nil { + logger.Error("failed to create msgraph client", zap.Error(err)) + sendError(w, http.StatusBadGateway, "Failed to connect to microsoft graph API") + return + } + // Create Rescheduling Request var requestID int64 err = retry.Do(func() error { @@ -325,7 +334,7 @@ func (s Server) PostAPIRescheduleRequestSingle(w http.ResponseWriter, r *http.Re meeting, err = s.DB.GetMeetingByMSFTID(ctx, body.MsftMeetingID) if errors.Is(err, sql.ErrNoRows) { - meeting, err = processNewMeetingInfo(ctx, graph, s, body.MsftMeetingID, *logger, string(body.OwnerEmail)) + meeting, err = processNewMeetingInfo(ctx, graph, s, body.MsftMeetingID, string(body.OwnerEmail)) if err != nil { logger.Error("failed to make new meeting info", zap.Error(err)) sendError(w, http.StatusBadGateway, "Failed to make new meeting info") From 28dbf60cb3c1b05e0d64eb6c90ac7ebb94477030 Mon Sep 17 00:00:00 2001 From: jnile Date: Sun, 23 Mar 2025 14:22:44 +0000 Subject: [PATCH 8/8] Update shared --- shared | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared b/shared index ad6b08ed..e2c5f6a9 160000 --- a/shared +++ b/shared @@ -1 +1 @@ -Subproject commit ad6b08eda774e4a1e680ae38a80b7257e380a7bc +Subproject commit e2c5f6a98764cc26aaf91b29ddee6a33f83eb5b0