Skip to content

Repository files navigation

objective-http

Proxy classes for creating a http server

Server

There are all Server classes feature.
Your endpoints should implement Endpoint class interface (get route() and async handle(request) methods).
Also you can add own handlers (implements handle(reqestStream, responseStream)).
Handler is a top level logic object, who intrreact with IO streams directly.
options is a node:http options, who pass when server starting.

consthttp=require('node:http');constconsole=require('node:console');const{
Server,handler: {endpoint: {
EndpointHandler,
EndpointsHandler,
EndpointHandlers,
EndpointRequiredHandler,},error: {
LogErrorHandler,
UnexpectedErrorHandler,
InvalidRequestErrorHandler,
HandlerNotFoundErrorHandler,},},request: {chunk: { JsonServerRequest, ChunkServerRequest },},response: {chunk: { JsonServerResponse, ChunkServerResponse },},}=require('objective-http').server;newServer({handler: newUnexpectedErrorHandler({origin: newLogErrorHandler({origin: newInvalidRequestErrorHandler({origin: newHandlerNotFoundErrorHandler({origin: newEndpointRequiredHandler({origin: newEndpointHandlers({handlers: [newEndpointHandler({endpoint: newMyEndpoint(),request: newChunkServerRequest({}),response: newChunkServerResponse({}),}),newEndpointHandler({endpoint: newMyEndpoint(),request: newChunkServerRequest({}),response: newChunkServerResponse({})}),newEndpointsHandler({endpoints: [newMyJsonEndpoint(),newMyJsonEndpoint(),newMyJsonEndpoint(),],request: newJsonServerRequest({origin: newChunkServerRequest({}),}),response: newJsonServerResponse({origin: newChunkServerResponse({}),}),}),],}),}),response: newChunkServerResponse({}),}),response: newChunkServerResponse({}),}),logger: console,}),response: newChunkServerResponse({}),}),options: {port: 8080},
http,});

or jsut use autoconfig.

const{ server }=require('objective-http').server.autoconfig;const{ env }=require('ndoe:process');server({ env, endpoints });

MyEndpoint class example:

classMyEndpoint{route={method: 'GET',path: '/test'}asynchandle(request){try{constprocessResult=awaitsomeProcess();return{status: 200,body: processResult.toString()};}catch(e){return{status: 404,body: 'process does not found anything'};}}}

Client

Simple wrapper for requests. options passing into http.request(oprions, ...)

consthttp=require('node:http');const{request: {chunk: { JsonClientRequest, ChunkClientRequest },},response: {chunk: { JsonClientResponse, ChunkClientResponse },},}=require('objective-http').client;constrequest=newJsonClientRequest({origin: newChunkClientRequest({http: http,response: newJsonClientResponse({origin: newChunkClientResponse({})}),}),});constresponse=awaitrequest.with({options: {host: 'localhost',port: 80,method: 'GET',path: '/test',},body: {some: 'body'}}).send()console.log(JSON.stringify(response.body));

About

Proxy classes for creating a http server

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages