@sitecore/sc-contenthub-webclient-sdk
Version:
Sitecore Content Hub WebClient SDK.
109 lines • 5.68 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.SchemaQuerying = void 0;
const ta_json_1 = require("ta-json");
const urijs_1 = __importDefault(require("urijs"));
const URITemplate_1 = __importDefault(require("urijs/src/URITemplate"));
const api_1 = require("../constants/api");
const query_request_1 = require("../contracts/querying/query-request");
const query_sort_order_1 = require("../contracts/querying/query-sort-order");
const sort_field_type_1 = require("../contracts/querying/sort-field-type");
const sorting_1 = require("../contracts/querying/sorting");
const guard_1 = __importDefault(require("../guard"));
const entity_collection_resource_1 = require("../models/entity-collection-resource");
const query_result_resource_1 = require("../models/query-result-resource");
const response_handler_1 = require("./response-handler");
class SchemaQuerying {
constructor(client) {
guard_1.default.notNullOrUndefined(client);
this._client = client;
}
queryWithSchemaAsync(query, loadConfiguration, cancelCallback) {
return __awaiter(this, void 0, void 0, function* () {
guard_1.default.notNullOrUndefined(query, "query");
guard_1.default.notNullOrUndefined(loadConfiguration, "loadConfiguration");
//TODO query.validate();
const routes = yield this._client.api.getApiRoutesAsync();
const queryEndpoint = routes[api_1.QUERY.templateName];
let uri;
/* istanbul ignore next */
if (queryEndpoint.templated) {
const uriTemplate = new URITemplate_1.default(queryEndpoint.href);
uri = uriTemplate.expand({});
}
else {
uri = new urijs_1.default(queryEndpoint.href);
}
const queryRequest = new query_request_1.QueryRequest({
query: query,
loadConfiguration: loadConfiguration,
});
const content = ta_json_1.TaJson.serialize(queryRequest);
const resource = yield this.queryEndpointAsync(uri, content, cancelCallback);
return resource;
});
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars,@typescript-eslint/require-await
scrollWithSchemaAsync(scrollRequest) {
return __awaiter(this, void 0, void 0, function* () {
throw new Error("Method not implemented."); //TODO
});
}
searchAfterWithSchemaAsync(query, cancelCallback) {
return __awaiter(this, void 0, void 0, function* () {
guard_1.default.notNullOrUndefined(query, "query");
guard_1.default.notNullOrUndefined(query.filter, "query.filter");
const routes = yield this._client.api.getApiRoutesAsync();
const queryEndpoint = routes[api_1.SEARCH_AFTER.templateName];
let uri;
/* istanbul ignore next */
if (queryEndpoint.templated) {
const uriTemplate = new URITemplate_1.default(queryEndpoint.href);
uri = uriTemplate.expand({});
}
else {
uri = new urijs_1.default(queryEndpoint.href);
}
if (query.sorting == null || query.sorting.length == 0) {
query.sorting = [
new sorting_1.Sorting({ field: "created_on", fieldType: sort_field_type_1.SortFieldType.Property, order: query_sort_order_1.QuerySortOrder.Desc }),
];
}
const headers = {};
headers[api_1.HEADERS.apiVersion] = "2";
headers[api_1.HEADERS.minimalSchema] = "true";
headers["Content-Type"] = "application/json";
const content = ta_json_1.TaJson.serialize(query);
const response = yield this._client.raw.postAsync(uri, content, headers, cancelCallback);
response_handler_1.ResponseHandler.handleErrors(response);
const resource = ta_json_1.TaJson.deserialize(response.content, entity_collection_resource_1.EntityCollectionResource);
return resource;
});
}
queryEndpointAsync(endpoint, content, cancelCallback) {
return __awaiter(this, void 0, void 0, function* () {
const response = yield this._client.raw.postAsync(endpoint, content, {
[api_1.HEADERS.apiVersion]: "3",
[api_1.HEADERS.minimalSchema]: "true",
"Content-Type": "application/json",
}, cancelCallback);
response_handler_1.ResponseHandler.handleErrors(response);
const resource = ta_json_1.TaJson.deserialize(response.content, query_result_resource_1.QueryResultResource);
return resource;
});
}
}
exports.SchemaQuerying = SchemaQuerying;
//# sourceMappingURL=schema-querying.js.map