From e6b5aea147911005aa4e1a0def9ad2ff6e6801b8 Mon Sep 17 00:00:00 2001 From: Sung Won Cho Date: Fri, 31 Jan 2020 08:49:12 +1000 Subject: [PATCH] Add client field (#396) * Record client * Fix test --- pkg/server/app/notes.go | 3 ++- pkg/server/app/notes_test.go | 2 +- pkg/server/database/models.go | 1 + pkg/server/handlers/routes.go | 1 + pkg/server/handlers/v3_notes.go | 3 ++- 5 files changed, 7 insertions(+), 3 deletions(-) diff --git a/pkg/server/app/notes.go b/pkg/server/app/notes.go index 3a3c5ccf..9a6022bb 100644 --- a/pkg/server/app/notes.go +++ b/pkg/server/app/notes.go @@ -27,7 +27,7 @@ import ( // CreateNote creates a note with the next usn and updates the user's max_usn. // It returns the created note. -func (a *App) CreateNote(user database.User, bookUUID, content string, addedOn *int64, editedOn *int64, public bool) (database.Note, error) { +func (a *App) CreateNote(user database.User, bookUUID, content string, addedOn *int64, editedOn *int64, public bool, origin string) (database.Note, error) { tx := a.DB.Begin() nextUSN, err := incrementUserUSN(tx, user.ID) @@ -65,6 +65,7 @@ func (a *App) CreateNote(user database.User, bookUUID, content string, addedOn * Body: content, Public: public, Encrypted: false, + Client: origin, } if err := tx.Create(¬e).Error; err != nil { tx.Rollback() diff --git a/pkg/server/app/notes_test.go b/pkg/server/app/notes_test.go index 557ae218..d15fbf74 100644 --- a/pkg/server/app/notes_test.go +++ b/pkg/server/app/notes_test.go @@ -90,7 +90,7 @@ func TestCreateNote(t *testing.T) { }) tx := testutils.DB.Begin() - if _, err := a.CreateNote(user, b1.UUID, "note content", tc.addedOn, tc.editedOn, false); err != nil { + if _, err := a.CreateNote(user, b1.UUID, "note content", tc.addedOn, tc.editedOn, false, ""); err != nil { tx.Rollback() t.Fatal(errors.Wrap(err, "deleting note")) } diff --git a/pkg/server/database/models.go b/pkg/server/database/models.go index 8684ae2d..9414834d 100644 --- a/pkg/server/database/models.go +++ b/pkg/server/database/models.go @@ -60,6 +60,7 @@ type Note struct { Deleted bool `json:"-" gorm:"default:false"` Encrypted bool `json:"-" gorm:"default:false"` NoteReview NoteReview `json:"-"` + Client string `gorm:"index"` } // User is a model for a user diff --git a/pkg/server/handlers/routes.go b/pkg/server/handlers/routes.go index 2368df42..c3a69961 100644 --- a/pkg/server/handlers/routes.go +++ b/pkg/server/handlers/routes.go @@ -281,6 +281,7 @@ func logging(inner http.Handler) http.HandlerFunc { inner.ServeHTTP(&lw, r) log.WithFields(log.Fields{ + "origin": r.Header.Get("Origin"), "remoteAddr": lookupIP(r), "uri": r.RequestURI, "statusCode": lw.statusCode, diff --git a/pkg/server/handlers/v3_notes.go b/pkg/server/handlers/v3_notes.go index bef8d23f..8d1657ef 100644 --- a/pkg/server/handlers/v3_notes.go +++ b/pkg/server/handlers/v3_notes.go @@ -195,7 +195,8 @@ func (a *API) CreateNote(w http.ResponseWriter, r *http.Request) { return } - note, err := a.App.CreateNote(user, params.BookUUID, params.Content, params.AddedOn, params.EditedOn, false) + origin := r.Header.Get("Origin") + note, err := a.App.CreateNote(user, params.BookUUID, params.Content, params.AddedOn, params.EditedOn, false, origin) if err != nil { HandleError(w, "creating note", err, http.StatusInternalServerError) return