diff --git a/projects/common/src/fm/common-service.module.ts b/projects/common/src/fm/common-service.module.ts index cff3204..537a517 100644 --- a/projects/common/src/fm/common-service.module.ts +++ b/projects/common/src/fm/common-service.module.ts @@ -9,6 +9,7 @@ import { OAuthModule, OAuthService, OAuthStorage } from 'angular-oauth2-oidc'; //components import { ItemTypeService } from './services/itemtype.service'; +import { SchemaService } from './services/schema.service'; import { FolderService } from './services/folder.service'; import { TimespanService } from './services/timespan.service'; import { ItemService } from './services/item.service'; @@ -47,7 +48,8 @@ export { AuthCallbackGuard, ResumableFileUploadService, NgbDateNativeAdapter, - StateSerializerService + StateSerializerService, + SchemaService }; @NgModule({ @@ -71,7 +73,7 @@ export class AppCommonServiceModule { { provide: APP_INITIALIZER, useFactory: appConfigFactory, - deps: [Injector, AppConfig, OAuthService, AuthConfigFactory, OAuthStorage,ItemTypeService], + deps: [Injector, AppConfig, OAuthService, AuthConfigFactory, OAuthStorage, ItemTypeService], multi: true }, { diff --git a/projects/common/src/fm/services/schema.service.ts b/projects/common/src/fm/services/schema.service.ts new file mode 100644 index 0000000..354057e --- /dev/null +++ b/projects/common/src/fm/services/schema.service.ts @@ -0,0 +1,30 @@ +import {Injectable} from '@angular/core'; +import {HttpClient} from '@angular/common/http'; +import {AppConfig} from '../shared/app.config'; +import {Observable} from 'rxjs'; + +@Injectable() +export class SchemaService { + constructor(private httpClient: HttpClient, private appConfig: AppConfig) { + } + + ApiEndpoint() { + return this.appConfig.getConfig('apiEndPoint'); + } + + public getSchemaIdFromSchemaUrl(schemaUrl): string { + const url = new URL(schemaUrl); + const pathSplit = url.pathname.split('/'); + + return pathSplit[pathSplit.length - 1].replace('.json', ''); + } + + public getSchemaWithUrl(schemaUrl): Observable { + const id = this.getSchemaIdFromSchemaUrl(schemaUrl); + return this.httpClient.get(`${this.ApiEndpoint()}/api/v1/schema/${id}`); + } + + public getSchemaWithId(schemaId): Observable { + return this.httpClient.get(`${this.ApiEndpoint()}/api/v1/schema/${schemaId}`); + } +}