You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
daton/lib/src/http/response/DehydratedStateResponseFact...

26 lines
753 B

import ResponseFactory from './ResponseFactory.ts'
import {Rehydratable} from '../../support/Rehydratable.ts'
import {Request} from '../Request.ts'
/**
* Response factory that returns a JSON object of the state of a rehydratable object.
* @extends ResponseFactory
*/
export default class DehydratedStateResponseFactory extends ResponseFactory {
constructor(
/**
* The object to dehydrate.
* @type Rehydratable
*/
public readonly rehydratable: Rehydratable
) {
super()
}
public async write(request: Request): Promise<Request> {
request = await super.write(request)
request.response.body = JSON.stringify(this.rehydratable.dehydrate())
return request
}
}