import { BatchRequest } from "./batch"; import { EntitySet } from "./entityset"; import { ODataFilter } from "./filter"; import { SystemQueryOptions } from "./params"; import { Transformation } from "./tranformation"; import { BatchRequestOptions, BatchRequests, BatchResponses, Credential, ODataActionImportRequest, ODataActionRequest, ODataFunctionImportRequest, ODataFunctionRequest, ODataNewOptions, ODataQueryRequest, ODataReadIDRequest, ODataVersion, ODataWriteRequest, PlainODataMultiResponse, PlainODataResponse, PlainODataSingleResponse } from "./types"; import { ODataV4NewOptions } from "./types"; import { ODataV4 } from "./types_v4"; /** * OData Client */ export declare class OData { /** * odata service path, like /sap/c4c/odata/v1/c4codata/ */ private serviceEndpoint; /** * http basic credential */ private credential; /** * oauth client for client credential flow */ private oauthClient; /** * internal csrf token */ private csrfToken; /** * dont direct use this object * * use client.getHeaders() * */ private commonHeader; private fetchProxy; private processCsrfToken; private csrfTokenName; private variant; private version; private lock; /** * OData client builder * * @param options config options */ static New(options: ODataV4NewOptions): ODataV4; static New(options: ODataNewOptions): OData; /** * create odata client instance for odata v4 * * @param options */ static New4(options: ODataNewOptions): ODataV4; /** * new odata query options * * @deprecated */ static newParam(): SystemQueryOptions; /** * new odata query options */ static newOptions(): SystemQueryOptions; /** * new filter */ static newFilter(): ODataFilter; /** * new transformation * * @returns */ static newTransformation(): Transformation; /** * OData * * @deprecated please use static method `OData.New` to create instance * @private */ private constructor(); /** * generate dynamic header */ private getHeaders; /** * getEntitySet * * @param entitySetName the name of entity set, you can get it from metadata * */ getEntitySet(entitySetName: string): EntitySet; /** * Set OData Client Http Basic credential * * @param credential */ setCredential(credential: Credential): void; /** * setODataEndPath * * e.g. https://tenant.c4c.saphybriscloud.cn/sap/c4c/odata/v1/c4codata/ */ setODataEndPath(odataEndpoint: string): void; getVersion(): ODataVersion; /** * fetch CSRF Token * * @param withCache set to `false` if you want to force to retrieve the refresh csrf token * @returns */ getCsrfToken(withCache?: boolean): Promise; cleanCsrfToken(): void; /** * odata request uri * * @param uri HTTP URI * @param systemOptions odata query params * @param method HTTP method * @param body request content */ private requestUri; /** * odata request * * @param collection CollectionName * @param id entity uuid or compound key * @param systemOptions query param, not work for single entity uri * @param method request method * @param entity odata Entity instance */ private _executeDataOperation; actionImport(actionName: string, parameters?: any, params?: SystemQueryOptions): Promise; functionImport(functionName: string, parameters?: any, params?: SystemQueryOptions): Promise; /** * convert the odata key predicate object/value to string * * @param key * * @example * * ```ts * this.formatIdString(1) // => String('(1)') * this.formatIdString({UUID:'xxx'}) // => String('(UUID='xxx')') * ``` */ private formatIdString; /** * new odata http request */ newRequest(options: ODataQueryRequest): Promise>; newRequest(options: ODataWriteRequest): Promise>; newRequest(options: ODataReadIDRequest): Promise>; newRequest(options: ODataFunctionRequest): Promise; newRequest(options: ODataActionRequest): Promise; newRequest(options: ODataFunctionImportRequest): Promise; newRequest(options: ODataActionImportRequest): Promise; private _executeActionOrFunction; /** * format batch request parameter */ private formatBatchRequests; /** * execute batch requests and get response * * @param requests batch request */ execBatchRequests(requests: BatchRequests): BatchResponses; /** * execute batch requests in OData `V4.01` Json format, and get response * * this feature is experimental, use it on your own risk. * * @experimental * @param requests */ execBatchRequestsJson(requests: T): BatchResponses; /** * create new filter * * @alias OData.newFilter */ newFilter(): ODataFilter; /** * create new system query options * * @deprecated * @alias OData.newParam */ newParam(): SystemQueryOptions; /** * create new system query options * * @returns */ newOptions(): SystemQueryOptions; newTransformation(): Transformation; newBatchRequest(options: BatchRequestOptions): Promise>; }