import { GetRequest, GetByIdRequest, CreateRequest, UpdateRequest, DeleteRequest, GetRelatedRequest, GetRelatedByIdRequest, DeleteRelatedRequest, DeleteRelatedByIdRequest, CreateRelatedRequest, UploadRequest, PostRequestOptionsExtended, PutRequestOptionsExtended, RelatedRequestOptionsExtended, RelatedByIdRequestOptionsExtended, UploadRequestOptionsExtended, UploadChunkRequest, CommitChunksRequest, CommitChunksRequestOptionsExtended, UploadChunkRequestOptionsExtended } from "./Request"; import { SDKOptions, Token } from "../Sitefinity"; import { BatchRequest, BatchRequestOptionsExtended } from "./BatchRequest"; import { RequestOptionsBaseExtended } from "./RequestBase"; export class RequestFactory { public token: Token; private options: SDKOptions; constructor(options: SDKOptions) { this.options = options; } get(parameters: RequestOptionsBaseExtended) { return new GetRequest(parameters, this.token, this.options); } getSingle(parameters: RequestOptionsBaseExtended) { return new GetByIdRequest(parameters, this.token, this.options); } create(parameters: PostRequestOptionsExtended) { return new CreateRequest(parameters, this.token, this.options); } update(parameters: PutRequestOptionsExtended) { return new UpdateRequest(parameters, this.token, this.options); } destroy(parameters: RequestOptionsBaseExtended) { return new DeleteRequest(parameters, this.token, this.options); } getProperty(parameters: RelatedRequestOptionsExtended) { return new GetRelatedRequest(parameters, this.token, this.options); } getRelated(parameters: RelatedRequestOptionsExtended) { return new GetRelatedRequest(parameters, this.token, this.options); } getRelatedById(parameters: RelatedByIdRequestOptionsExtended) { return new GetRelatedByIdRequest(parameters, this.token, this.options); } destroyRelated(parameters: RelatedRequestOptionsExtended) { return new DeleteRelatedRequest(parameters, this.token, this.options); } destroyRelatedById(parameters: RelatedByIdRequestOptionsExtended) { return new DeleteRelatedByIdRequest(parameters, this.token, this.options); } createRelated(parameters: RelatedRequestOptionsExtended) { return new CreateRelatedRequest(parameters, this.token, this.options); } upload(parameters: UploadRequestOptionsExtended) { return new UploadRequest(parameters, this.token, this.options); } uploadChunk(parameters: UploadChunkRequestOptionsExtended) { return new UploadChunkRequest(parameters, this.token, this.options); } commitChunks(parameters: CommitChunksRequestOptionsExtended) { return new CommitChunksRequest(parameters, this.token, this.options); } batch(parameters: RequestOptionsBaseExtended) { const batchParams = parameters as BatchRequestOptionsExtended; batchParams.factory = this; return new BatchRequest(batchParams, this.token, this.options); } }