mirror of
https://github.com/laurent22/joplin.git
synced 2024-12-24 10:27:10 +02:00
API: Resolves #1148: Added support for search end-point and improved error handling
This commit is contained in:
parent
179005dd6c
commit
50b75e1e63
@ -113,6 +113,11 @@ class Command extends BaseCommand {
|
||||
lines.push('\tcurl http://localhost:41184/tags?fields=id');
|
||||
lines.push('');
|
||||
|
||||
lines.push('# Error handling');
|
||||
lines.push('');
|
||||
lines.push('In case of an error, an HTTP status code >= 400 will be returned along with a JSON object that provides more info about the error. The JSON object is in the format `{ "error": "description of error" }`.');
|
||||
lines.push('');
|
||||
|
||||
lines.push('# About the property types');
|
||||
lines.push('');
|
||||
lines.push('* Text is UTF-8.');
|
||||
|
@ -148,7 +148,12 @@ class ClipperServer {
|
||||
writeResponse(200, response ? response : '');
|
||||
} catch (error) {
|
||||
this.logger().error(error);
|
||||
writeResponse(error.httpCode ? error.httpCode : 500, error.message);
|
||||
const httpCode = error.httpCode ? error.httpCode : 500;
|
||||
const msg = [];
|
||||
if (httpCode >= 500) msg.push('Internal Server Error');
|
||||
if (error.message) msg.push(error.message);
|
||||
|
||||
writeResponse(httpCode, { error: msg.join(': ') });
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3,15 +3,17 @@ const Note = require('lib/models/Note');
|
||||
|
||||
class SearchEngineUtils {
|
||||
|
||||
static async notesForQuery(query) {
|
||||
static async notesForQuery(query, options = null) {
|
||||
if (!options) options = {};
|
||||
|
||||
const results = await SearchEngine.instance().search(query);
|
||||
const noteIds = results.map(n => n.id);
|
||||
|
||||
const previewOptions = {
|
||||
const previewOptions = Object.assign({}, {
|
||||
order: [],
|
||||
fields: Note.previewFields(),
|
||||
conditions: ['id IN ("' + noteIds.join('","') + '")'],
|
||||
}
|
||||
}, options);
|
||||
|
||||
const notes = await Note.previews(null, previewOptions);
|
||||
|
||||
|
@ -13,6 +13,7 @@ const { shim } = require('lib/shim');
|
||||
const HtmlToMd = require('lib/HtmlToMd');
|
||||
const { fileExtension, safeFileExtension, safeFilename, filename } = require('lib/path-utils');
|
||||
const ApiResponse = require('lib/services/rest/ApiResponse');
|
||||
const SearchEngineUtils = require('lib/services/SearchEngineUtils');
|
||||
|
||||
class ApiError extends Error {
|
||||
|
||||
@ -207,6 +208,15 @@ class Api {
|
||||
throw new ErrorMethodNotAllowed();
|
||||
}
|
||||
|
||||
async action_search(request) {
|
||||
if (request.method !== 'GET') throw new ErrorMethodNotAllowed();
|
||||
|
||||
const query = request.query.query;
|
||||
if (!query) throw new ErrorBadRequest('Missing "query" parameter');
|
||||
|
||||
return await SearchEngineUtils.notesForQuery(query, this.notePreviewsOptions_(request));
|
||||
}
|
||||
|
||||
async action_folders(request, id = null, link = null) {
|
||||
if (request.method === 'GET' && !id) {
|
||||
return await Folder.allAsTree({ fields: this.fields_(request, ['id', 'parent_id', 'title']) });
|
||||
|
Loading…
Reference in New Issue
Block a user