| @@ -0,0 +1,17 @@ | |||
| { | |||
| // Use IntelliSense to learn about possible attributes. | |||
| // Hover to view descriptions of existing attributes. | |||
| // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 | |||
| "version": "0.2.0", | |||
| "configurations": [ | |||
| { | |||
| "type": "node", | |||
| "request": "attach", | |||
| "name": "Attach to NestJS", | |||
| "port": 9229, | |||
| "restart": true, | |||
| "stopOnEntry": false, | |||
| "protocol": "inspector" | |||
| } | |||
| ] | |||
| } | |||
| @@ -0,0 +1,4 @@ | |||
| wwwroot/*.js | |||
| node_modules | |||
| typings | |||
| dist | |||
| @@ -0,0 +1,23 @@ | |||
| # OpenAPI Generator Ignore | |||
| # Generated by openapi-generator https://github.com/openapitools/openapi-generator | |||
| # Use this file to prevent files from being overwritten by the generator. | |||
| # The patterns follow closely to .gitignore or .dockerignore. | |||
| # As an example, the C# client generator defines ApiClient.cs. | |||
| # You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: | |||
| #ApiClient.cs | |||
| # You can match any string of characters against a directory, file or extension with a single asterisk (*): | |||
| #foo/*/qux | |||
| # The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux | |||
| # You can recursively match patterns against a directory, file or extension with a double asterisk (**): | |||
| #foo/**/qux | |||
| # This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux | |||
| # You can also negate patterns with an exclamation (!). | |||
| # For example, you can ignore all files in a docs folder with the file extension .md: | |||
| #docs/*.md | |||
| # Then explicitly reverse the ignore rule for a single file: | |||
| #!docs/README.md | |||
| @@ -0,0 +1,17 @@ | |||
| .gitignore | |||
| README.md | |||
| api.module.ts | |||
| api/api.ts | |||
| api/rules.service.ts | |||
| api/rules.serviceInterface.ts | |||
| configuration.ts | |||
| encoder.ts | |||
| git_push.sh | |||
| index.ts | |||
| model/createRuleDto.ts | |||
| model/models.ts | |||
| model/rule.ts | |||
| ng-package.json | |||
| package.json | |||
| tsconfig.json | |||
| variables.ts | |||
| @@ -0,0 +1 @@ | |||
| 5.1.1 | |||
| @@ -0,0 +1,203 @@ | |||
| ## restClient@1.0 | |||
| ### Building | |||
| To install the required dependencies and to build the typescript sources run: | |||
| ``` | |||
| npm install | |||
| npm run build | |||
| ``` | |||
| ### publishing | |||
| First build the package then run ```npm publish dist``` (don't forget to specify the `dist` folder!) | |||
| ### consuming | |||
| Navigate to the folder of your consuming project and run one of next commands. | |||
| _published:_ | |||
| ``` | |||
| npm install restClient@1.0 --save | |||
| ``` | |||
| _without publishing (not recommended):_ | |||
| ``` | |||
| npm install PATH_TO_GENERATED_PACKAGE/dist.tgz --save | |||
| ``` | |||
| _It's important to take the tgz file, otherwise you'll get trouble with links on windows_ | |||
| _using `npm link`:_ | |||
| In PATH_TO_GENERATED_PACKAGE/dist: | |||
| ``` | |||
| npm link | |||
| ``` | |||
| In your project: | |||
| ``` | |||
| npm link restClient | |||
| ``` | |||
| __Note for Windows users:__ The Angular CLI has troubles to use linked npm packages. | |||
| Please refer to this issue https://github.com/angular/angular-cli/issues/8284 for a solution / workaround. | |||
| Published packages are not effected by this issue. | |||
| #### General usage | |||
| In your Angular project: | |||
| ``` | |||
| // without configuring providers | |||
| import { ApiModule } from 'restClient'; | |||
| import { HttpClientModule } from '@angular/common/http'; | |||
| @NgModule({ | |||
| imports: [ | |||
| ApiModule, | |||
| // make sure to import the HttpClientModule in the AppModule only, | |||
| // see https://github.com/angular/angular/issues/20575 | |||
| HttpClientModule | |||
| ], | |||
| declarations: [ AppComponent ], | |||
| providers: [], | |||
| bootstrap: [ AppComponent ] | |||
| }) | |||
| export class AppModule {} | |||
| ``` | |||
| ``` | |||
| // configuring providers | |||
| import { ApiModule, Configuration, ConfigurationParameters } from 'restClient'; | |||
| export function apiConfigFactory (): Configuration { | |||
| const params: ConfigurationParameters = { | |||
| // set configuration parameters here. | |||
| } | |||
| return new Configuration(params); | |||
| } | |||
| @NgModule({ | |||
| imports: [ ApiModule.forRoot(apiConfigFactory) ], | |||
| declarations: [ AppComponent ], | |||
| providers: [], | |||
| bootstrap: [ AppComponent ] | |||
| }) | |||
| export class AppModule {} | |||
| ``` | |||
| ``` | |||
| // configuring providers with an authentication service that manages your access tokens | |||
| import { ApiModule, Configuration } from 'restClient'; | |||
| @NgModule({ | |||
| imports: [ ApiModule ], | |||
| declarations: [ AppComponent ], | |||
| providers: [ | |||
| { | |||
| provide: Configuration, | |||
| useFactory: (authService: AuthService) => new Configuration( | |||
| { | |||
| basePath: environment.apiUrl, | |||
| accessToken: authService.getAccessToken.bind(authService) | |||
| } | |||
| ), | |||
| deps: [AuthService], | |||
| multi: false | |||
| } | |||
| ], | |||
| bootstrap: [ AppComponent ] | |||
| }) | |||
| export class AppModule {} | |||
| ``` | |||
| ``` | |||
| import { DefaultApi } from 'restClient'; | |||
| export class AppComponent { | |||
| constructor(private apiGateway: DefaultApi) { } | |||
| } | |||
| ``` | |||
| Note: The ApiModule is restricted to being instantiated once app wide. | |||
| This is to ensure that all services are treated as singletons. | |||
| #### Using multiple OpenAPI files / APIs / ApiModules | |||
| In order to use multiple `ApiModules` generated from different OpenAPI files, | |||
| you can create an alias name when importing the modules | |||
| in order to avoid naming conflicts: | |||
| ``` | |||
| import { ApiModule } from 'my-api-path'; | |||
| import { ApiModule as OtherApiModule } from 'my-other-api-path'; | |||
| import { HttpClientModule } from '@angular/common/http'; | |||
| @NgModule({ | |||
| imports: [ | |||
| ApiModule, | |||
| OtherApiModule, | |||
| // make sure to import the HttpClientModule in the AppModule only, | |||
| // see https://github.com/angular/angular/issues/20575 | |||
| HttpClientModule | |||
| ] | |||
| }) | |||
| export class AppModule { | |||
| } | |||
| ``` | |||
| ### Set service base path | |||
| If different than the generated base path, during app bootstrap, you can provide the base path to your service. | |||
| ``` | |||
| import { BASE_PATH } from 'restClient'; | |||
| bootstrap(AppComponent, [ | |||
| { provide: BASE_PATH, useValue: 'https://your-web-service.com' }, | |||
| ]); | |||
| ``` | |||
| or | |||
| ``` | |||
| import { BASE_PATH } from 'restClient'; | |||
| @NgModule({ | |||
| imports: [], | |||
| declarations: [ AppComponent ], | |||
| providers: [ provide: BASE_PATH, useValue: 'https://your-web-service.com' ], | |||
| bootstrap: [ AppComponent ] | |||
| }) | |||
| export class AppModule {} | |||
| ``` | |||
| #### Using @angular/cli | |||
| First extend your `src/environments/*.ts` files by adding the corresponding base path: | |||
| ``` | |||
| export const environment = { | |||
| production: false, | |||
| API_BASE_PATH: 'http://127.0.0.1:8080' | |||
| }; | |||
| ``` | |||
| In the src/app/app.module.ts: | |||
| ``` | |||
| import { BASE_PATH } from 'restClient'; | |||
| import { environment } from '../environments/environment'; | |||
| @NgModule({ | |||
| declarations: [ | |||
| AppComponent | |||
| ], | |||
| imports: [ ], | |||
| providers: [{ provide: BASE_PATH, useValue: environment.API_BASE_PATH }], | |||
| bootstrap: [ AppComponent ] | |||
| }) | |||
| export class AppModule { } | |||
| ``` | |||
| @@ -0,0 +1,31 @@ | |||
| import { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core'; | |||
| import { Configuration } from './configuration'; | |||
| import { HttpClient } from '@angular/common/http'; | |||
| import { RulesService } from './api/rules.service'; | |||
| @NgModule({ | |||
| imports: [], | |||
| declarations: [], | |||
| exports: [], | |||
| providers: [] | |||
| }) | |||
| export class ApiModule { | |||
| public static forRoot(configurationFactory: () => Configuration): ModuleWithProviders<ApiModule> { | |||
| return { | |||
| ngModule: ApiModule, | |||
| providers: [ { provide: Configuration, useFactory: configurationFactory } ] | |||
| }; | |||
| } | |||
| constructor( @Optional() @SkipSelf() parentModule: ApiModule, | |||
| @Optional() http: HttpClient) { | |||
| if (parentModule) { | |||
| throw new Error('ApiModule is already loaded. Import in your base AppModule only.'); | |||
| } | |||
| if (!http) { | |||
| throw new Error('You need to import the HttpClientModule in your AppModule! \n' + | |||
| 'See also https://github.com/angular/angular/issues/20575'); | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,4 @@ | |||
| export * from './rules.service'; | |||
| import { RulesService } from './rules.service'; | |||
| export * from './rules.serviceInterface' | |||
| export const APIS = [RulesService]; | |||
| @@ -0,0 +1,300 @@ | |||
| /** | |||
| * Rules | |||
| * API for create rules | |||
| * | |||
| * The version of the OpenAPI document: 1.0 | |||
| * | |||
| * | |||
| * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). | |||
| * https://openapi-generator.tech | |||
| * Do not edit the class manually. | |||
| */ | |||
| /* tslint:disable:no-unused-variable member-ordering */ | |||
| import { Inject, Injectable, Optional } from '@angular/core'; | |||
| import { HttpClient, HttpHeaders, HttpParams, | |||
| HttpResponse, HttpEvent, HttpParameterCodec } from '@angular/common/http'; | |||
| import { CustomHttpParameterCodec } from '../encoder'; | |||
| import { Observable } from 'rxjs'; | |||
| import { CreateRuleDto } from '../model/models'; | |||
| import { Rule } from '../model/models'; | |||
| import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; | |||
| import { Configuration } from '../configuration'; | |||
| import { | |||
| RulesServiceInterface | |||
| } from './rules.serviceInterface'; | |||
| @Injectable({ | |||
| providedIn: 'root' | |||
| }) | |||
| export class RulesService implements RulesServiceInterface { | |||
| protected basePath = 'http://localhost'; | |||
| public defaultHeaders = new HttpHeaders(); | |||
| public configuration = new Configuration(); | |||
| public encoder: HttpParameterCodec; | |||
| constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) { | |||
| if (configuration) { | |||
| this.configuration = configuration; | |||
| } | |||
| if (typeof this.configuration.basePath !== 'string') { | |||
| if (typeof basePath !== 'string') { | |||
| basePath = this.basePath; | |||
| } | |||
| this.configuration.basePath = basePath; | |||
| } | |||
| this.encoder = this.configuration.encoder || new CustomHttpParameterCodec(); | |||
| } | |||
| private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams { | |||
| if (typeof value === "object" && value instanceof Date === false) { | |||
| httpParams = this.addToHttpParamsRecursive(httpParams, value); | |||
| } else { | |||
| httpParams = this.addToHttpParamsRecursive(httpParams, value, key); | |||
| } | |||
| return httpParams; | |||
| } | |||
| private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams { | |||
| if (value == null) { | |||
| return httpParams; | |||
| } | |||
| if (typeof value === "object") { | |||
| if (Array.isArray(value)) { | |||
| (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key)); | |||
| } else if (value instanceof Date) { | |||
| if (key != null) { | |||
| httpParams = httpParams.append(key, | |||
| (value as Date).toISOString().substr(0, 10)); | |||
| } else { | |||
| throw Error("key may not be null if value is Date"); | |||
| } | |||
| } else { | |||
| Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive( | |||
| httpParams, value[k], key != null ? `${key}.${k}` : k)); | |||
| } | |||
| } else if (key != null) { | |||
| httpParams = httpParams.append(key, value); | |||
| } else { | |||
| throw Error("key may not be null if value is not object or array"); | |||
| } | |||
| return httpParams; | |||
| } | |||
| /** | |||
| * @param createRuleDto | |||
| * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. | |||
| * @param reportProgress flag to report request and response progress. | |||
| */ | |||
| public create(createRuleDto: CreateRuleDto, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Rule>; | |||
| public create(createRuleDto: CreateRuleDto, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Rule>>; | |||
| public create(createRuleDto: CreateRuleDto, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Rule>>; | |||
| public create(createRuleDto: CreateRuleDto, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> { | |||
| if (createRuleDto === null || createRuleDto === undefined) { | |||
| throw new Error('Required parameter createRuleDto was null or undefined when calling create.'); | |||
| } | |||
| let headers = this.defaultHeaders; | |||
| let credential: string | undefined; | |||
| // authentication (basic) required | |||
| credential = this.configuration.lookupCredential('basic'); | |||
| if (credential) { | |||
| headers = headers.set('Authorization', 'Basic ' + credential); | |||
| } | |||
| let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; | |||
| if (httpHeaderAcceptSelected === undefined) { | |||
| // to determine the Accept header | |||
| const httpHeaderAccepts: string[] = [ | |||
| 'application/json' | |||
| ]; | |||
| httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); | |||
| } | |||
| if (httpHeaderAcceptSelected !== undefined) { | |||
| headers = headers.set('Accept', httpHeaderAcceptSelected); | |||
| } | |||
| // to determine the Content-Type header | |||
| const consumes: string[] = [ | |||
| 'application/json' | |||
| ]; | |||
| const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes); | |||
| if (httpContentTypeSelected !== undefined) { | |||
| headers = headers.set('Content-Type', httpContentTypeSelected); | |||
| } | |||
| let responseType_: 'text' | 'json' = 'json'; | |||
| if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { | |||
| responseType_ = 'text'; | |||
| } | |||
| return this.httpClient.post<Rule>(`${this.configuration.basePath}/rules`, | |||
| createRuleDto, | |||
| { | |||
| responseType: <any>responseType_, | |||
| withCredentials: this.configuration.withCredentials, | |||
| headers: headers, | |||
| observe: observe, | |||
| reportProgress: reportProgress | |||
| } | |||
| ); | |||
| } | |||
| /** | |||
| * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. | |||
| * @param reportProgress flag to report request and response progress. | |||
| */ | |||
| public findAll(observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Array<Rule>>; | |||
| public findAll(observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Array<Rule>>>; | |||
| public findAll(observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Array<Rule>>>; | |||
| public findAll(observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> { | |||
| let headers = this.defaultHeaders; | |||
| let credential: string | undefined; | |||
| // authentication (basic) required | |||
| credential = this.configuration.lookupCredential('basic'); | |||
| if (credential) { | |||
| headers = headers.set('Authorization', 'Basic ' + credential); | |||
| } | |||
| let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; | |||
| if (httpHeaderAcceptSelected === undefined) { | |||
| // to determine the Accept header | |||
| const httpHeaderAccepts: string[] = [ | |||
| 'application/json' | |||
| ]; | |||
| httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); | |||
| } | |||
| if (httpHeaderAcceptSelected !== undefined) { | |||
| headers = headers.set('Accept', httpHeaderAcceptSelected); | |||
| } | |||
| let responseType_: 'text' | 'json' = 'json'; | |||
| if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { | |||
| responseType_ = 'text'; | |||
| } | |||
| return this.httpClient.get<Array<Rule>>(`${this.configuration.basePath}/rules`, | |||
| { | |||
| responseType: <any>responseType_, | |||
| withCredentials: this.configuration.withCredentials, | |||
| headers: headers, | |||
| observe: observe, | |||
| reportProgress: reportProgress | |||
| } | |||
| ); | |||
| } | |||
| /** | |||
| * @param id | |||
| * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. | |||
| * @param reportProgress flag to report request and response progress. | |||
| */ | |||
| public findOne(id: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Rule>; | |||
| public findOne(id: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Rule>>; | |||
| public findOne(id: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Rule>>; | |||
| public findOne(id: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> { | |||
| if (id === null || id === undefined) { | |||
| throw new Error('Required parameter id was null or undefined when calling findOne.'); | |||
| } | |||
| let headers = this.defaultHeaders; | |||
| let credential: string | undefined; | |||
| // authentication (basic) required | |||
| credential = this.configuration.lookupCredential('basic'); | |||
| if (credential) { | |||
| headers = headers.set('Authorization', 'Basic ' + credential); | |||
| } | |||
| let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; | |||
| if (httpHeaderAcceptSelected === undefined) { | |||
| // to determine the Accept header | |||
| const httpHeaderAccepts: string[] = [ | |||
| 'application/json' | |||
| ]; | |||
| httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); | |||
| } | |||
| if (httpHeaderAcceptSelected !== undefined) { | |||
| headers = headers.set('Accept', httpHeaderAcceptSelected); | |||
| } | |||
| let responseType_: 'text' | 'json' = 'json'; | |||
| if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { | |||
| responseType_ = 'text'; | |||
| } | |||
| return this.httpClient.get<Rule>(`${this.configuration.basePath}/rules/${encodeURIComponent(String(id))}`, | |||
| { | |||
| responseType: <any>responseType_, | |||
| withCredentials: this.configuration.withCredentials, | |||
| headers: headers, | |||
| observe: observe, | |||
| reportProgress: reportProgress | |||
| } | |||
| ); | |||
| } | |||
| /** | |||
| * @param id | |||
| * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. | |||
| * @param reportProgress flag to report request and response progress. | |||
| */ | |||
| public remove(id: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>; | |||
| public remove(id: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>; | |||
| public remove(id: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>; | |||
| public remove(id: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> { | |||
| if (id === null || id === undefined) { | |||
| throw new Error('Required parameter id was null or undefined when calling remove.'); | |||
| } | |||
| let headers = this.defaultHeaders; | |||
| let credential: string | undefined; | |||
| // authentication (basic) required | |||
| credential = this.configuration.lookupCredential('basic'); | |||
| if (credential) { | |||
| headers = headers.set('Authorization', 'Basic ' + credential); | |||
| } | |||
| let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; | |||
| if (httpHeaderAcceptSelected === undefined) { | |||
| // to determine the Accept header | |||
| const httpHeaderAccepts: string[] = [ | |||
| ]; | |||
| httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); | |||
| } | |||
| if (httpHeaderAcceptSelected !== undefined) { | |||
| headers = headers.set('Accept', httpHeaderAcceptSelected); | |||
| } | |||
| let responseType_: 'text' | 'json' = 'json'; | |||
| if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { | |||
| responseType_ = 'text'; | |||
| } | |||
| return this.httpClient.delete<any>(`${this.configuration.basePath}/rules/${encodeURIComponent(String(id))}`, | |||
| { | |||
| responseType: <any>responseType_, | |||
| withCredentials: this.configuration.withCredentials, | |||
| headers: headers, | |||
| observe: observe, | |||
| reportProgress: reportProgress | |||
| } | |||
| ); | |||
| } | |||
| } | |||
| @@ -0,0 +1,55 @@ | |||
| /** | |||
| * Rules | |||
| * API for create rules | |||
| * | |||
| * The version of the OpenAPI document: 1.0 | |||
| * | |||
| * | |||
| * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). | |||
| * https://openapi-generator.tech | |||
| * Do not edit the class manually. | |||
| */ | |||
| import { HttpHeaders } from '@angular/common/http'; | |||
| import { Observable } from 'rxjs'; | |||
| import { CreateRuleDto } from '../model/models'; | |||
| import { Rule } from '../model/models'; | |||
| import { Configuration } from '../configuration'; | |||
| export interface RulesServiceInterface { | |||
| defaultHeaders: HttpHeaders; | |||
| configuration: Configuration; | |||
| /** | |||
| * | |||
| * | |||
| * @param createRuleDto | |||
| */ | |||
| create(createRuleDto: CreateRuleDto, extraHttpRequestParams?: any): Observable<Rule>; | |||
| /** | |||
| * | |||
| * | |||
| */ | |||
| findAll(extraHttpRequestParams?: any): Observable<Array<Rule>>; | |||
| /** | |||
| * | |||
| * | |||
| * @param id | |||
| */ | |||
| findOne(id: string, extraHttpRequestParams?: any): Observable<Rule>; | |||
| /** | |||
| * | |||
| * | |||
| * @param id | |||
| */ | |||
| remove(id: string, extraHttpRequestParams?: any): Observable<{}>; | |||
| } | |||
| @@ -0,0 +1,130 @@ | |||
| import { HttpParameterCodec } from '@angular/common/http'; | |||
| export interface ConfigurationParameters { | |||
| /** | |||
| * @deprecated Since 5.0. Use credentials instead | |||
| */ | |||
| apiKeys?: {[ key: string ]: string}; | |||
| username?: string; | |||
| password?: string; | |||
| /** | |||
| * @deprecated Since 5.0. Use credentials instead | |||
| */ | |||
| accessToken?: string | (() => string); | |||
| basePath?: string; | |||
| withCredentials?: boolean; | |||
| encoder?: HttpParameterCodec; | |||
| /** | |||
| * The keys are the names in the securitySchemes section of the OpenAPI | |||
| * document. They should map to the value used for authentication | |||
| * minus any standard prefixes such as 'Basic' or 'Bearer'. | |||
| */ | |||
| credentials?: {[ key: string ]: string | (() => string | undefined)}; | |||
| } | |||
| export class Configuration { | |||
| /** | |||
| * @deprecated Since 5.0. Use credentials instead | |||
| */ | |||
| apiKeys?: {[ key: string ]: string}; | |||
| username?: string; | |||
| password?: string; | |||
| /** | |||
| * @deprecated Since 5.0. Use credentials instead | |||
| */ | |||
| accessToken?: string | (() => string); | |||
| basePath?: string; | |||
| withCredentials?: boolean; | |||
| encoder?: HttpParameterCodec; | |||
| /** | |||
| * The keys are the names in the securitySchemes section of the OpenAPI | |||
| * document. They should map to the value used for authentication | |||
| * minus any standard prefixes such as 'Basic' or 'Bearer'. | |||
| */ | |||
| credentials: {[ key: string ]: string | (() => string | undefined)}; | |||
| constructor(configurationParameters: ConfigurationParameters = {}) { | |||
| this.apiKeys = configurationParameters.apiKeys; | |||
| this.username = configurationParameters.username; | |||
| this.password = configurationParameters.password; | |||
| this.accessToken = configurationParameters.accessToken; | |||
| this.basePath = configurationParameters.basePath; | |||
| this.withCredentials = configurationParameters.withCredentials; | |||
| this.encoder = configurationParameters.encoder; | |||
| if (configurationParameters.credentials) { | |||
| this.credentials = configurationParameters.credentials; | |||
| } | |||
| else { | |||
| this.credentials = {}; | |||
| } | |||
| // init default basic credential | |||
| if (!this.credentials['basic']) { | |||
| this.credentials['basic'] = () => { | |||
| return (this.username || this.password) | |||
| ? btoa(this.username + ':' + this.password) | |||
| : undefined; | |||
| }; | |||
| } | |||
| } | |||
| /** | |||
| * Select the correct content-type to use for a request. | |||
| * Uses {@link Configuration#isJsonMime} to determine the correct content-type. | |||
| * If no content type is found return the first found type if the contentTypes is not empty | |||
| * @param contentTypes - the array of content types that are available for selection | |||
| * @returns the selected content-type or <code>undefined</code> if no selection could be made. | |||
| */ | |||
| public selectHeaderContentType (contentTypes: string[]): string | undefined { | |||
| if (contentTypes.length === 0) { | |||
| return undefined; | |||
| } | |||
| const type = contentTypes.find((x: string) => this.isJsonMime(x)); | |||
| if (type === undefined) { | |||
| return contentTypes[0]; | |||
| } | |||
| return type; | |||
| } | |||
| /** | |||
| * Select the correct accept content-type to use for a request. | |||
| * Uses {@link Configuration#isJsonMime} to determine the correct accept content-type. | |||
| * If no content type is found return the first found type if the contentTypes is not empty | |||
| * @param accepts - the array of content types that are available for selection. | |||
| * @returns the selected content-type or <code>undefined</code> if no selection could be made. | |||
| */ | |||
| public selectHeaderAccept(accepts: string[]): string | undefined { | |||
| if (accepts.length === 0) { | |||
| return undefined; | |||
| } | |||
| const type = accepts.find((x: string) => this.isJsonMime(x)); | |||
| if (type === undefined) { | |||
| return accepts[0]; | |||
| } | |||
| return type; | |||
| } | |||
| /** | |||
| * Check if the given MIME is a JSON MIME. | |||
| * JSON MIME examples: | |||
| * application/json | |||
| * application/json; charset=UTF8 | |||
| * APPLICATION/JSON | |||
| * application/vnd.company+json | |||
| * @param mime - MIME (Multipurpose Internet Mail Extensions) | |||
| * @return True if the given MIME is JSON, false otherwise. | |||
| */ | |||
| public isJsonMime(mime: string): boolean { | |||
| const jsonMime: RegExp = new RegExp('^(application\/json|[^;/ \t]+\/[^;/ \t]+[+]json)[ \t]*(;.*)?$', 'i'); | |||
| return mime !== null && (jsonMime.test(mime) || mime.toLowerCase() === 'application/json-patch+json'); | |||
| } | |||
| public lookupCredential(key: string): string | undefined { | |||
| const value = this.credentials[key]; | |||
| return typeof value === 'function' | |||
| ? value() | |||
| : value; | |||
| } | |||
| } | |||
| @@ -0,0 +1,20 @@ | |||
| import { HttpParameterCodec } from '@angular/common/http'; | |||
| /** | |||
| * Custom HttpParameterCodec | |||
| * Workaround for https://github.com/angular/angular/issues/18261 | |||
| */ | |||
| export class CustomHttpParameterCodec implements HttpParameterCodec { | |||
| encodeKey(k: string): string { | |||
| return encodeURIComponent(k); | |||
| } | |||
| encodeValue(v: string): string { | |||
| return encodeURIComponent(v); | |||
| } | |||
| decodeKey(k: string): string { | |||
| return decodeURIComponent(k); | |||
| } | |||
| decodeValue(v: string): string { | |||
| return decodeURIComponent(v); | |||
| } | |||
| } | |||
| @@ -0,0 +1,58 @@ | |||
| #!/bin/sh | |||
| # ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ | |||
| # | |||
| # Usage example: /bin/sh ./git_push.sh wing328 openapi-pestore-perl "minor update" "gitlab.com" | |||
| git_user_id=$1 | |||
| git_repo_id=$2 | |||
| release_note=$3 | |||
| git_host=$4 | |||
| if [ "$git_host" = "" ]; then | |||
| git_host="github.com" | |||
| echo "[INFO] No command line input provided. Set \$git_host to $git_host" | |||
| fi | |||
| if [ "$git_user_id" = "" ]; then | |||
| git_user_id="GIT_USER_ID" | |||
| echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" | |||
| fi | |||
| if [ "$git_repo_id" = "" ]; then | |||
| git_repo_id="GIT_REPO_ID" | |||
| echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" | |||
| fi | |||
| if [ "$release_note" = "" ]; then | |||
| release_note="Minor update" | |||
| echo "[INFO] No command line input provided. Set \$release_note to $release_note" | |||
| fi | |||
| # Initialize the local directory as a Git repository | |||
| git init | |||
| # Adds the files in the local repository and stages them for commit. | |||
| git add . | |||
| # Commits the tracked changes and prepares them to be pushed to a remote repository. | |||
| git commit -m "$release_note" | |||
| # Sets the new remote | |||
| git_remote=`git remote` | |||
| if [ "$git_remote" = "" ]; then # git remote not defined | |||
| if [ "$GIT_TOKEN" = "" ]; then | |||
| echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment." | |||
| git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git | |||
| else | |||
| git remote add origin https://${git_user_id}:${GIT_TOKEN}@${git_host}/${git_user_id}/${git_repo_id}.git | |||
| fi | |||
| fi | |||
| git pull origin master | |||
| # Pushes (Forces) the changes in the local repository up to the remote repository | |||
| echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git" | |||
| git push origin master 2>&1 | grep -v 'To https' | |||
| @@ -0,0 +1,5 @@ | |||
| export * from './api/api'; | |||
| export * from './model/models'; | |||
| export * from './variables'; | |||
| export * from './configuration'; | |||
| export * from './api.module'; | |||
| @@ -0,0 +1,25 @@ | |||
| /** | |||
| * Rules | |||
| * API for create rules | |||
| * | |||
| * The version of the OpenAPI document: 1.0 | |||
| * | |||
| * | |||
| * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). | |||
| * https://openapi-generator.tech | |||
| * Do not edit the class manually. | |||
| */ | |||
| export interface CreateRuleDto { | |||
| /** | |||
| * the paragraph of the rule. | |||
| */ | |||
| paragraph: string; | |||
| /** | |||
| * the rule | |||
| */ | |||
| text: string; | |||
| subRuleIds: Array<string>; | |||
| } | |||
| @@ -0,0 +1,2 @@ | |||
| export * from './createRuleDto'; | |||
| export * from './rule'; | |||
| @@ -0,0 +1,21 @@ | |||
| /** | |||
| * Rules | |||
| * API for create rules | |||
| * | |||
| * The version of the OpenAPI document: 1.0 | |||
| * | |||
| * | |||
| * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). | |||
| * https://openapi-generator.tech | |||
| * Do not edit the class manually. | |||
| */ | |||
| export interface Rule { | |||
| id: string; | |||
| paragraph: string; | |||
| text: string; | |||
| parentRule?: Rule | null; | |||
| subRule?: Array<Rule> | null; | |||
| } | |||
| @@ -0,0 +1,6 @@ | |||
| { | |||
| "$schema": "./node_modules/ng-packagr/ng-package.schema.json", | |||
| "lib": { | |||
| "entryFile": "index.ts" | |||
| } | |||
| } | |||
| @@ -0,0 +1,30 @@ | |||
| { | |||
| "name": "restClient", | |||
| "version": "1.0", | |||
| "description": "OpenAPI client for restClient", | |||
| "author": "OpenAPI-Generator Contributors", | |||
| "keywords": [ | |||
| "openapi-client", | |||
| "openapi-generator" | |||
| ], | |||
| "license": "Unlicense", | |||
| "scripts": { | |||
| "build": "ng-packagr -p ng-package.json" | |||
| }, | |||
| "peerDependencies": { | |||
| "@angular/core": "^11.0.0", | |||
| "rxjs": "^6.6.0" | |||
| }, | |||
| "devDependencies": { | |||
| "@angular/common": "^11.0.0", | |||
| "@angular/compiler": "^11.0.0", | |||
| "@angular/compiler-cli": "^11.0.0", | |||
| "@angular/core": "^11.0.0", | |||
| "@angular/platform-browser": "^11.0.0", | |||
| "ng-packagr": "^11.0.2", | |||
| "reflect-metadata": "^0.1.3", | |||
| "rxjs": "^6.6.0", | |||
| "tsickle": "^0.39.1", | |||
| "typescript": ">=4.0.0 <4.1.0", | |||
| "zone.js": "^0.11.3" | |||
| }} | |||
| @@ -0,0 +1,28 @@ | |||
| { | |||
| "compilerOptions": { | |||
| "emitDecoratorMetadata": true, | |||
| "experimentalDecorators": true, | |||
| "noImplicitAny": false, | |||
| "suppressImplicitAnyIndexErrors": true, | |||
| "target": "es6", | |||
| "module": "es6", | |||
| "moduleResolution": "node", | |||
| "removeComments": true, | |||
| "sourceMap": true, | |||
| "outDir": "./dist", | |||
| "noLib": false, | |||
| "declaration": true, | |||
| "lib": [ "es6", "dom" ], | |||
| "typeRoots": [ | |||
| "node_modules/@types" | |||
| ] | |||
| }, | |||
| "exclude": [ | |||
| "node_modules", | |||
| "dist" | |||
| ], | |||
| "filesGlob": [ | |||
| "./model/*.ts", | |||
| "./api/*.ts" | |||
| ] | |||
| } | |||
| @@ -0,0 +1,9 @@ | |||
| import { InjectionToken } from '@angular/core'; | |||
| export const BASE_PATH = new InjectionToken<string>('basePath'); | |||
| export const COLLECTION_FORMATS = { | |||
| 'csv': ',', | |||
| 'tsv': ' ', | |||
| 'ssv': ' ', | |||
| 'pipes': '|' | |||
| } | |||
| @@ -0,0 +1,7 @@ | |||
| { | |||
| "$schema": "node_modules/@openapitools/openapi-generator-cli/config.schema.json", | |||
| "spaces": 2, | |||
| "generator-cli": { | |||
| "version": "5.1.1" | |||
| } | |||
| } | |||
| @@ -3,7 +3,10 @@ | |||
| "version": "0.0.0", | |||
| "scripts": { | |||
| "ng": "ng", | |||
| "gen": "openapi-generator-cli generate -i http://localhost:3000/api-json -g typescript-angular -o api/ --additional-properties=npmName=restClient,supportsES6=true,withInterfaces=true", | |||
| "start": "ng serve", | |||
| "start:dev": "nest start --watch", | |||
| "start:debug": "nest start --debug --watch", | |||
| "build": "ng build", | |||
| "test": "ng test", | |||
| "lint": "ng lint", | |||
| @@ -21,6 +24,7 @@ | |||
| "@angular/platform-browser": "~11.2.11", | |||
| "@angular/platform-browser-dynamic": "~11.2.11", | |||
| "@angular/router": "~11.2.11", | |||
| "@openapitools/openapi-generator-cli": "^2.2.6", | |||
| "rxjs": "~6.6.0", | |||
| "tslib": "^2.0.0", | |||
| "zone.js": "~0.11.3" | |||
| @@ -0,0 +1,15 @@ | |||
| import { NgModule } from '@angular/core'; | |||
| import { CommonModule } from '@angular/common'; | |||
| import { CreateRuleComponent } from './create-rule/create-rule.component'; | |||
| @NgModule({ | |||
| declarations: [ | |||
| CreateRuleComponent | |||
| ], | |||
| imports: [ | |||
| CommonModule | |||
| ] | |||
| }) | |||
| export class AdminModule { } | |||
| @@ -0,0 +1 @@ | |||
| <p>create-rule works!</p> | |||
| @@ -0,0 +1,25 @@ | |||
| import { ComponentFixture, TestBed } from '@angular/core/testing'; | |||
| import { CreateRuleComponent } from './create-rule.component'; | |||
| describe('CreateRuleComponent', () => { | |||
| let component: CreateRuleComponent; | |||
| let fixture: ComponentFixture<CreateRuleComponent>; | |||
| beforeEach(async () => { | |||
| await TestBed.configureTestingModule({ | |||
| declarations: [ CreateRuleComponent ] | |||
| }) | |||
| .compileComponents(); | |||
| }); | |||
| beforeEach(() => { | |||
| fixture = TestBed.createComponent(CreateRuleComponent); | |||
| component = fixture.componentInstance; | |||
| fixture.detectChanges(); | |||
| }); | |||
| it('should create', () => { | |||
| expect(component).toBeTruthy(); | |||
| }); | |||
| }); | |||
| @@ -0,0 +1,15 @@ | |||
| import { Component, OnInit } from '@angular/core'; | |||
| @Component({ | |||
| selector: 'app-create-rule', | |||
| templateUrl: './create-rule.component.html', | |||
| styleUrls: ['./create-rule.component.scss'] | |||
| }) | |||
| export class CreateRuleComponent implements OnInit { | |||
| constructor() { } | |||
| ngOnInit(): void { | |||
| } | |||
| } | |||
| @@ -1,5 +0,0 @@ | |||
| export type Rule = { | |||
| paragraph: string; | |||
| text: string, | |||
| subRule?: Rule[]; | |||
| } | |||
| @@ -3,7 +3,7 @@ | |||
| <div mat-line> | |||
| §{{ rule.paragraph }} {{ rule.text }} | |||
| </div> | |||
| <mat-list-item mat-line *ngIf="rule.subRule"> | |||
| <mat-list-item mat-line *ngIf="rule.subRule?.length"> | |||
| <app-rule-list [rules]="rule.subRule"></app-rule-list> | |||
| </mat-list-item> | |||
| </mat-list-item> | |||
| @@ -1,5 +1,5 @@ | |||
| import { Component, Input, OnInit } from '@angular/core'; | |||
| import { Rule } from '../class/rule.class'; | |||
| import { Rule } from '../../../../api/model/rule'; | |||
| @Component({ | |||
| selector: 'app-rule-list', | |||
| @@ -6,10 +6,8 @@ import { MatListModule } from '@angular/material/list'; | |||
| import { MatTreeModule } from '@angular/material/tree'; | |||
| import { RuleListComponent } from './rule-list/rule-list.component'; | |||
| import { RulesComponent } from './rules/rules.component'; | |||
| import { ApiModule } from '../../../api/api.module'; | |||
| import { HttpClientModule } from '@angular/common/http'; | |||
| @NgModule({ | |||
| declarations: [ | |||
| RuleListComponent, | |||
| @@ -21,6 +19,8 @@ import { RulesComponent } from './rules/rules.component'; | |||
| MatCardModule, | |||
| MatIconModule, | |||
| MatTreeModule, | |||
| ApiModule, | |||
| HttpClientModule, | |||
| ], | |||
| exports: [ | |||
| RulesComponent | |||
| @@ -1,18 +1,21 @@ | |||
| import { Component, OnInit } from '@angular/core'; | |||
| import { Rule } from '../class/rule.class'; | |||
| import { Rule } from '../../../../api/model/rule'; | |||
| import { RulesService } from '../../../../api/api/rules.service'; | |||
| @Component({ | |||
| selector: 'app-rules', | |||
| templateUrl: './rules.component.html', | |||
| styleUrls: ['./rules.component.scss'] | |||
| }) | |||
| export class RulesComponent implements OnInit { | |||
| rules: Rule[] = [ | |||
| { paragraph: "1", text: "Hier könnte eine regel stehen!", subRule: [{ paragraph: "1", text: "sub rule" }] }, | |||
| { paragraph: "2", text: "Regel 2!" } | |||
| ] | |||
| constructor() { } | |||
| rules: Rule[] = [] | |||
| constructor(protected rulesService: RulesService) { | |||
| rulesService.configuration.basePath = 'http://localhost:3000'; | |||
| } | |||
| ngOnInit(): void { | |||
| this.rulesService.findAll('body').subscribe((rules: Rule[]) => { | |||
| this.rules = rules; | |||
| }) | |||
| } | |||
| } | |||