Skip to content

Commit c60a513

Browse files
coddingtonbearphortx
authored andcommitted
Adding better error handling to /simple/search/
1 parent 0a52e28 commit c60a513

File tree

3 files changed

+21
-1
lines changed

3 files changed

+21
-1
lines changed

src/constants.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ export const ERROR_CODE_MESSAGES: Record<ErrorCode, string> = {
4040
"The 'Operation' header you provided was invalid.",
4141
[ErrorCode.PatchFailed]:
4242
"The patch you provided could not be applied to the target content.",
43+
[ErrorCode.InvalidSearch]: "The search query you provided is not valid.",
44+
[ErrorCode.ErrorPreparingSimpleSearch]:
45+
"Error encountered while calling Obsidian `prepareSimpleSearch` API.",
4346
};
4447

4548
export enum ContentTypes {

src/requestHandler.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -991,9 +991,24 @@ export default class RequestHandler {
991991
const results: SearchResponseItem[] = [];
992992

993993
const query: string = req.query.query as string;
994+
if (!String.isString(query)) {
995+
return this.returnCannedResponse(res, {
996+
message: "A single '?query=' parameter is required.",
997+
errorCode: ErrorCode.InvalidSearch,
998+
});
999+
}
9941000
const contextLength: number =
9951001
parseInt(req.query.contextLength as string, 10) ?? 100;
996-
const search = prepareSimpleSearch(query);
1002+
let search: ReturnType<typeof prepareSimpleSearch>;
1003+
try {
1004+
search = prepareSimpleSearch(query);
1005+
} catch (e) {
1006+
console.error("Could not prepare simple search: ", e);
1007+
return this.returnCannedResponse(res, {
1008+
message: `${e}`,
1009+
errorCode: ErrorCode.ErrorPreparingSimpleSearch,
1010+
});
1011+
}
9971012

9981013
for (const file of this.app.vault.getMarkdownFiles()) {
9991014
const cachedContents = await this.app.vault.cachedRead(file);

src/types.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@ export enum ErrorCode {
1717
PeriodIsNotEnabled = 40060,
1818
InvalidFilterQuery = 40070,
1919
PatchFailed = 40080,
20+
InvalidSearch = 40090,
2021
ApiKeyAuthorizationRequired = 40101,
2122
PeriodDoesNotExist = 40460,
2223
PeriodicNoteDoesNotExist = 40461,
2324
RequestMethodValidOnlyForFiles = 40510,
25+
ErrorPreparingSimpleSearch = 50010,
2426
}
2527

2628
export interface LocalRestApiSettings {

0 commit comments

Comments
 (0)