Files
handlers.js/demo/index.ts
2024-08-01 13:26:50 +08:00

72 lines
1.9 KiB
TypeScript

import { rootRouter, method, handler, route, response } from '../index';
import errorHandler from './errorHandler';
const App = new rootRouter<any, any>();
App.binding(
'/(.*)',
new handler('ANY', [
async (request, _response) => {
console.log(request);
return undefined;
},
]),
);
App.binding(
'/',
App.create(
'ANY',
(): Promise<string> =>
new Promise(() => {
console.log('Hello World!');
throw new response('Hello World!');
}),
),
).binding(
'/(.*)',
App.create(
'ANY',
(): Promise<string> =>
new Promise((resolve) => {
resolve('Hello World?');
}),
),
);
App.route('/v1/(.*)')
.add(
new route(
['/echo', '/echo/(.*)'],
[
new handler(method['GET'], [
async (requestMessage, responseMessage) => {
responseMessage = responseMessage ?? new response('');
responseMessage?.headers.set('Hello', 'World');
responseMessage.body = requestMessage.url.pathname;
return responseMessage;
},
]),
new handler(method['POST'], [
async (requestMessage, responseMessage) => {
responseMessage = responseMessage ?? new response('');
responseMessage.body = requestMessage.body;
return responseMessage;
},
]),
],
),
)
.binding(
'/error',
App.create(method['ANY'], async () => {
throw new Error('Nothing will happen here.');
}),
)
.useErrorResponder(errorHandler);
App.useMappingAdapter();
App.listen(8080);
export default App;