kurierjs / kurier

TypeScript framework to create JSON:API compliant APIs
https://kurier.readthedocs.io/en/latest/
MIT License
61 stars 9 forks source link

Implements transport layer context for processors #335

Closed joelalejandro closed 1 year ago

joelalejandro commented 1 year ago

Resolves #334.

The transport layer context

As you may have noticed, Kurier takes separation of concerns quite seriously, and allows no interactions between say, the HTTP transport layer and a processor. However, there are a few use cases where you might need, for instance, the client's IP address, such as geocoding. Since launch, all processors in Kurier holds an appInstance property, a reference to the current instance of the application, where an operation is taking place. Starting from version 1.3.0, we've added a transportLayerContext with two properties, available depending on what you're using (Express, Koa, Vercel or WebSockets):

You can access this information at any given point in your processor like this:

const { ip, headers } = this.appInstance.transportLayerContext;
// Do stuff with ip and/or headers...