MCPcopy Create free account
hub / github.com/adonisjs/session / requestHandler

Function requestHandler

tests/concurrent_session.spec.ts:59–109  ·  view source on GitHub ↗

* Re-usable request handler that creates different session scanerios * based upon the request URL.

(
  req: IncomingMessage,
  res: ServerResponse,
  driver: (ctx: HttpContext) => SessionStoreContract
)

Source from the content-addressed store, hash-verified

57 * based upon the request URL.
58 */
59async function requestHandler(
60 req: IncomingMessage,
61 res: ServerResponse,
62 driver: (ctx: HttpContext) => SessionStoreContract
63) {
64 try {
65 const request = new RequestFactory().merge({ req, res, encryption }).create()
66 const response = new ResponseFactory().merge({ req, res, encryption }).create()
67 const ctx = new HttpContextFactory().merge({ request, response }).create()
68
69 const session = new Session(sessionConfig, driver, emitter, ctx)
70 await session.initiate(false)
71
72 if (req.url === '/read-data') {
73 await session.commit()
74
75 response.json(session.all())
76 return response.finish()
77 }
78
79 if (req.url === '/read-data-slowly') {
80 await setTimeout(2000)
81 await session.commit()
82
83 response.json(session.all())
84 return response.finish()
85 }
86
87 if (req.url === '/write-data') {
88 session.put('username', 'virk')
89 await session.commit()
90
91 response.json(session.all())
92 return response.finish()
93 }
94
95 if (req.url === '/write-data-slowly') {
96 await setTimeout(2000)
97
98 session.put('email', 'foo@bar.com')
99 await session.commit()
100
101 response.json(session.all())
102 return response.finish()
103 }
104 } catch (error: any) {
105 res.writeHead(500)
106 res.write(error.stack)
107 res.end()
108 }
109}
110
111test.group('Concurrency | cookie driver', () => {
112 test('concurrently read and read slowly', async ({ assert }) => {

Callers 1

Calls 7

initiateMethod · 0.95
commitMethod · 0.95
allMethod · 0.95
putMethod · 0.95
createMethod · 0.80
writeMethod · 0.65
mergeMethod · 0.45

Tested by

no test coverage detected