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.
|
|
|
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
|
|
|
|
}
|
|
|
|
}
|