( token: string, query: string, notebookGuid?: string, offset = 0, maxNotes = 25 )
| 558 | } |
| 559 | |
| 560 | export async function searchNotes( |
| 561 | token: string, |
| 562 | query: string, |
| 563 | notebookGuid?: string, |
| 564 | offset = 0, |
| 565 | maxNotes = 25 |
| 566 | ): Promise<EvernoteSearchResult> { |
| 567 | const writer = new ThriftWriter() |
| 568 | writer.writeMessageBegin('findNotesMetadata', 0) |
| 569 | writer.writeStringField(1, token) |
| 570 | |
| 571 | // NoteFilter (field 2) |
| 572 | writer.writeFieldBegin(TYPE_STRUCT, 2) |
| 573 | if (query) { |
| 574 | writer.writeStringField(3, query) |
| 575 | } |
| 576 | if (notebookGuid) { |
| 577 | writer.writeStringField(4, notebookGuid) |
| 578 | } |
| 579 | writer.writeFieldStop() |
| 580 | |
| 581 | // offset (field 3) |
| 582 | writer.writeI32Field(3, offset) |
| 583 | // maxNotes (field 4) |
| 584 | writer.writeI32Field(4, maxNotes) |
| 585 | |
| 586 | // NotesMetadataResultSpec (field 5) |
| 587 | writer.writeFieldBegin(TYPE_STRUCT, 5) |
| 588 | writer.writeBoolField(2, true) // includeTitle |
| 589 | writer.writeBoolField(5, true) // includeContentLength |
| 590 | writer.writeBoolField(6, true) // includeCreated |
| 591 | writer.writeBoolField(7, true) // includeUpdated |
| 592 | writer.writeBoolField(11, true) // includeNotebookGuid |
| 593 | writer.writeBoolField(12, true) // includeTagGuids |
| 594 | writer.writeFieldStop() |
| 595 | |
| 596 | writer.writeFieldStop() |
| 597 | |
| 598 | const reader = await callNoteStore(token, writer) |
| 599 | const result: EvernoteSearchResult = { |
| 600 | startIndex: 0, |
| 601 | totalNotes: 0, |
| 602 | notes: [], |
| 603 | } |
| 604 | |
| 605 | reader.readStruct((r, fieldId, fieldType) => { |
| 606 | if (fieldId === 0 && fieldType === TYPE_STRUCT) { |
| 607 | r.readStruct((r2, fid2, ftype2) => { |
| 608 | switch (fid2) { |
| 609 | case 1: |
| 610 | if (ftype2 === TYPE_I32) result.startIndex = r2.readI32() |
| 611 | else r2.skip(ftype2) |
| 612 | break |
| 613 | case 2: |
| 614 | if (ftype2 === TYPE_I32) result.totalNotes = r2.readI32() |
| 615 | else r2.skip(ftype2) |
| 616 | break |
| 617 | case 3: |
no test coverage detected