From 3d02271058d2e59a71e49afdd866462f7b6ab1c6 Mon Sep 17 00:00:00 2001 From: Aijana Schumann Date: Wed, 12 Aug 2020 12:28:06 +0200 Subject: Switch odlux from Biermann-RestConf to RFC8040 interface Switched rest-calls in odlux to use RFC8040 interface Issue-ID: CCSDK-2565 Signed-off-by: Aijana Schumann Change-Id: Ia59dd02bc6456bad648083146c0256f204e134d1 --- sdnr/wt/odlux/framework/src/models/elasticSearch.ts | 13 +++++++++---- sdnr/wt/odlux/framework/src/services/restService.ts | 8 ++++---- sdnr/wt/odlux/framework/src/utilities/elasticSearch.ts | 10 +++++----- sdnr/wt/odlux/framework/src/views/about.tsx | 2 +- 4 files changed, 19 insertions(+), 14 deletions(-) (limited to 'sdnr/wt/odlux/framework/src') diff --git a/sdnr/wt/odlux/framework/src/models/elasticSearch.ts b/sdnr/wt/odlux/framework/src/models/elasticSearch.ts index 12cfd7d28..b5f25097c 100644 --- a/sdnr/wt/odlux/framework/src/models/elasticSearch.ts +++ b/sdnr/wt/odlux/framework/src/models/elasticSearch.ts @@ -16,16 +16,21 @@ * ============LICENSE_END========================================================================== */ export type Result = { - output: { + "data-provider:output": { pagination?: { - size: number, - page: number, - total: number + size: number; + page: number; + total: number; }, data: TSource[]; } } +export type SingeResult = { + "data-provider:output": TSource; +} + + export type HitEntry = { _index: string; _type: string; diff --git a/sdnr/wt/odlux/framework/src/services/restService.ts b/sdnr/wt/odlux/framework/src/services/restService.ts index b02d7d19f..19ef34f91 100644 --- a/sdnr/wt/odlux/framework/src/services/restService.ts +++ b/sdnr/wt/odlux/framework/src/services/restService.ts @@ -33,7 +33,7 @@ export const formEncode = (params: { [key: string]: string | number }) => Object /** Sends a rest request to the given path. * @returns The data, or null it there was any error */ -export async function requestRest(path: string = '', init: RequestInit = {}, authenticate: boolean = true, isResource: boolean = false): Promise { +export async function requestRest(path: string = '', init: RequestInit = {}, authenticate: boolean = true, isResource: boolean = false): Promise { const res = await requestRestExt(path, init, authenticate, isResource); if (res && res.status >= 200 && res.status < 300) { return res.data; @@ -42,9 +42,9 @@ export async function requestRest(path: string = '', init: RequestInit = } /** Sends a rest request to the given path and reports the server state. - * @returns An object with the server state, a message and the data. + * @returns An object with the server state, a message and the data or undefined in case of a json parse error. */ -export async function requestRestExt(path: string = '', init: RequestInit = {}, authenticate: boolean = true, isResource: boolean = false): Promise<{ status: number, message?: string, data: TData | null }> { +export async function requestRestExt(path: string = '', init: RequestInit = {}, authenticate: boolean = true, isResource: boolean = false): Promise<{ status: number, message?: string, data: TData | null | undefined }> { const result: { status: number, message?: string, data: TData | null } = { status: -1, data: null, @@ -99,7 +99,7 @@ export async function requestRestExt(path: string = '', init: RequestInit ...result, status: fetchResult.status, message: error && error.message || String(error), - data: null + data: undefined }; } } \ No newline at end of file diff --git a/sdnr/wt/odlux/framework/src/utilities/elasticSearch.ts b/sdnr/wt/odlux/framework/src/utilities/elasticSearch.ts index c18a40b0b..6f4c71ec7 100644 --- a/sdnr/wt/odlux/framework/src/utilities/elasticSearch.ts +++ b/sdnr/wt/odlux/framework/src/utilities/elasticSearch.ts @@ -33,14 +33,14 @@ type dataType = { [prop: string]: propType }; */ export function createSearchDataHandler(typeName: (() => string) | string, additionalFilters?: {} | null | undefined): DataCallback<(TResult)> { const fetchData: DataCallback<(TResult)> = async (pageIndex, rowsPerPage, orderBy, order, filter) => { - const url = `/restconf/operations/data-provider:read-${typeof typeName === "function" ? typeName(): typeName}-list`; + const url = `/rests/operations/data-provider:read-${typeof typeName === "function" ? typeName(): typeName}-list`; filter = { ...filter, ...additionalFilters }; const filterKeys = filter && Object.keys(filter) || []; const query = { - input: { + "data-provider:input": { filter: filterKeys.filter(f => filter![f] != null && filter![f] !== "").map(property => ({ property, filtervalue: filter![property]})), sortorder: orderBy ? [{ property: orderBy, sortorder: order === "desc" ? "descending" : "ascending" }] : [], pagination: { size: rowsPerPage, page: (pageIndex != null && pageIndex > 0 && pageIndex || 0) +1 } @@ -60,12 +60,12 @@ export function createSearchDataHandler(typeName: (() => string) | stri if (result) { let rows: TResult[] = []; - if (result && result.output && result.output.data) { - rows = result.output.data.map(obj => convertPropertyNames(obj, replaceHyphen)) || [] + if (result && result["data-provider:output"] && result["data-provider:output"].data) { + rows = result["data-provider:output"].data.map(obj => convertPropertyNames(obj, replaceHyphen)) || [] } const data = { - page: result.output.pagination && result.output.pagination.page != null && result.output.pagination.page - 1 || 0 , total: result.output.pagination && result.output.pagination.total || 0, rows: rows + page: +(result["data-provider:output"].pagination && result["data-provider:output"].pagination.page != null && result["data-provider:output"].pagination.page - 1 || 0) , total: +(result["data-provider:output"].pagination && result["data-provider:output"].pagination.total || 0), rows: rows }; return data; } diff --git a/sdnr/wt/odlux/framework/src/views/about.tsx b/sdnr/wt/odlux/framework/src/views/about.tsx index ca3953af1..c4a5488e0 100644 --- a/sdnr/wt/odlux/framework/src/views/about.tsx +++ b/sdnr/wt/odlux/framework/src/views/about.tsx @@ -44,7 +44,7 @@ class AboutComponent extends React.Component { requestRestExt('/about').then((response) => { const content = response.status == 200 ? response.data : `${response.status} ${response.message}` || "Server error"; const loadedSucessfully = response.status == 200 ? true : false; - this.setState({ content: content, isContentLoadedSucessfully: loadedSucessfully }); + this.setState({ content: content || null, isContentLoadedSucessfully: loadedSucessfully }); }).catch((error) => { this.setState({ content: error }) }) -- cgit 1.2.3-korg