njsbacker/codeExample.js

177 lines
4.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const njsbacker = require('./index');
// Создаём класс бэкенда, наследующий класс njsbacker.Main
class Main extends njsbacker.Main {
/* errorHandler (error) { return {
mainbody : JSON.stringify({ error : {}, error }),
headers : {
errored : 1
},
cookies : {
avava : 1
},
// redirect_uri: ''; // if want redirect to another url
code: 400
}};*/
session (params, sessionData) {
sessionData._setValue('example', 1); // Задать значение
console.log(sessionData.example); // Получить значение из сессии
sessionData._remove('example'); // Убрать значение
return 1; // Успешно
throw 'Example error' // Пример ошибки
}
responseHandler (response) { return ({
mainbody : { response },
headers : {
errored: 0
},
cookies : {},
// redirect_uri: ''; // if want redirect to another url
code: 200
}) };
/* paramsError (required, additional) { return({ required, additional }) }; */
}
// Создаём экземпляр класса Main
var server = new Main(
false // Отобразить в заголовках информацию о текущем фреймворке
);
server.setSessionParams( // Зададим необходимые параметры для сессии
{
session_id : {
required : false,
type : njsbacker.types.integer
}
}
);
// Создаём класс группы методов
class ExampleMethodGroup extends njsbacker.Group {
handler (params, session) { // Путевая обработка
session._setValue('example', 1); // Задать значение
console.log(session.example); // Получить значение из сессии
session._remove('example'); // Убрать значение
return 1; // Успешно
throw 'Example error' // Пример ошибки
}
}
// Создаём классы методов
class ExampleAnyMethodsOfHandlingInformation extends njsbacker.Method {
execute (params, session, groups) {
return {
json_data : params.json_name,
query_data : params.query_name,
}
}
}
class ExampleMethod extends njsbacker.Method {
/*
var result = this.MainObject.call(method : string, params : object) // Вызов подключённого метода
*/
// Обработчик параметров
execute (params, session, groups) {
return {
text : params.text,
result : this.MainObject.call('sum', {
a : 15,
b : 17,
session_id : params.session_id
})
};
throw new njsbacker.ApiError('EXAMPLE_ERROR', new Object());
}
}
class SumMethod extends njsbacker.Method {
execute (params, session, groups) {
return params.a + params.b;
}
}
class FileMethod extends njsbacker.Method {
execute (params, session, groups) {
return JSON.stringify(params.file);
}
}
// Создаём экземпляры классов
var eamohi = new ExampleAnyMethodsOfHandlingInformation('handler', '/handler', {
queryName : {
required : true,
type : njsbacker.types.string,
import_key : 'name',
allow_params : ['query']
},
jsonName : {
required : true,
type : njsbacker.types.string,
import_key : 'name',
allow_methods : ['post'],
allow_params : ['json']
}
});
var fileMethod = new FileMethod('file', '/file', {
file : {
required : true,
type : njsbacker.types.file()
}
});
var sumMethod = new SumMethod('sum', '/sum', {
a : {
required : true,
type : njsbacker.types.integer,
conversion : false,
// allow_methods : ['post'],
},
b : {
required : true,
type : njsbacker.types.integer,
conversion : false,
// allow_methods : ['post'],
}
});
var exampleMethod = new ExampleMethod('example', '/example', {
text : {
required : true,
type : njsbacker.types.string,
conversion : false,
values : ['123', 'test'],
min_length : 1,
max_length : 255,
// allow_methods : ['post'],
// allow_params : ['json'],
}
});
// Привяжем метод к группе
exampleMethod.group(new ExampleMethodGroup({
ses : {
type : njsbacker.types.string
}
}));
sumMethod.group(new ExampleMethodGroup({
ses : {
type : njsbacker.types.string
}
}));
// Привяжем метод к основному проекту
server.method(exampleMethod);
server.method(sumMethod);
server.method(fileMethod);
server.method(eamohi);
// Запускаем сервер
server.server('/api/v1').listen(8080, async (err) => {
if (err) { throw err; }
else {
console.log('SERVER RUNNED');
}
});