| { | |||||
| // 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" | |||||
| } | |||||
| ] | |||||
| } |
| wwwroot/*.js | |||||
| node_modules | |||||
| typings | |||||
| dist |
| # 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 |
| .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 |
| 5.1.1 |
| ## 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 { } | |||||
| ``` |
| 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'); | |||||
| } | |||||
| } | |||||
| } |
| export * from './rules.service'; | |||||
| import { RulesService } from './rules.service'; | |||||
| export * from './rules.serviceInterface' | |||||
| export const APIS = [RulesService]; |
| /** | |||||
| * 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 | |||||
| } | |||||
| ); | |||||
| } | |||||
| } |
| /** | |||||
| * 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<{}>; | |||||
| } |
| 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; | |||||
| } | |||||
| } |
| 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); | |||||
| } | |||||
| } |
| #!/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' | |||||
| export * from './api/api'; | |||||
| export * from './model/models'; | |||||
| export * from './variables'; | |||||
| export * from './configuration'; | |||||
| export * from './api.module'; |
| /** | |||||
| * 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>; | |||||
| } | |||||
| export * from './createRuleDto'; | |||||
| export * from './rule'; |
| /** | |||||
| * 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; | |||||
| } | |||||
| { | |||||
| "$schema": "./node_modules/ng-packagr/ng-package.schema.json", | |||||
| "lib": { | |||||
| "entryFile": "index.ts" | |||||
| } | |||||
| } |
| { | |||||
| "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" | |||||
| }} |
| { | |||||
| "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" | |||||
| ] | |||||
| } |
| import { InjectionToken } from '@angular/core'; | |||||
| export const BASE_PATH = new InjectionToken<string>('basePath'); | |||||
| export const COLLECTION_FORMATS = { | |||||
| 'csv': ',', | |||||
| 'tsv': ' ', | |||||
| 'ssv': ' ', | |||||
| 'pipes': '|' | |||||
| } |
| { | |||||
| "$schema": "node_modules/@openapitools/openapi-generator-cli/config.schema.json", | |||||
| "spaces": 2, | |||||
| "generator-cli": { | |||||
| "version": "5.1.1" | |||||
| } | |||||
| } |
| "version": "0.0.0", | "version": "0.0.0", | ||||
| "scripts": { | "scripts": { | ||||
| "ng": "ng", | "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": "ng serve", | ||||
| "start:dev": "nest start --watch", | |||||
| "start:debug": "nest start --debug --watch", | |||||
| "build": "ng build", | "build": "ng build", | ||||
| "test": "ng test", | "test": "ng test", | ||||
| "lint": "ng lint", | "lint": "ng lint", | ||||
| "@angular/platform-browser": "~11.2.11", | "@angular/platform-browser": "~11.2.11", | ||||
| "@angular/platform-browser-dynamic": "~11.2.11", | "@angular/platform-browser-dynamic": "~11.2.11", | ||||
| "@angular/router": "~11.2.11", | "@angular/router": "~11.2.11", | ||||
| "@openapitools/openapi-generator-cli": "^2.2.6", | |||||
| "rxjs": "~6.6.0", | "rxjs": "~6.6.0", | ||||
| "tslib": "^2.0.0", | "tslib": "^2.0.0", | ||||
| "zone.js": "~0.11.3" | "zone.js": "~0.11.3" |
| 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 { } |
| <p>create-rule works!</p> |
| 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(); | |||||
| }); | |||||
| }); |
| 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 { | |||||
| } | |||||
| } |
| export type Rule = { | |||||
| paragraph: string; | |||||
| text: string, | |||||
| subRule?: Rule[]; | |||||
| } |
| <div mat-line> | <div mat-line> | ||||
| §{{ rule.paragraph }} {{ rule.text }} | §{{ rule.paragraph }} {{ rule.text }} | ||||
| </div> | </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> | <app-rule-list [rules]="rule.subRule"></app-rule-list> | ||||
| </mat-list-item> | </mat-list-item> | ||||
| </mat-list-item> | </mat-list-item> |
| import { Component, Input, OnInit } from '@angular/core'; | import { Component, Input, OnInit } from '@angular/core'; | ||||
| import { Rule } from '../class/rule.class'; | |||||
| import { Rule } from '../../../../api/model/rule'; | |||||
| @Component({ | @Component({ | ||||
| selector: 'app-rule-list', | selector: 'app-rule-list', |
| import { MatTreeModule } from '@angular/material/tree'; | import { MatTreeModule } from '@angular/material/tree'; | ||||
| import { RuleListComponent } from './rule-list/rule-list.component'; | import { RuleListComponent } from './rule-list/rule-list.component'; | ||||
| import { RulesComponent } from './rules/rules.component'; | import { RulesComponent } from './rules/rules.component'; | ||||
| import { ApiModule } from '../../../api/api.module'; | |||||
| import { HttpClientModule } from '@angular/common/http'; | |||||
| @NgModule({ | @NgModule({ | ||||
| declarations: [ | declarations: [ | ||||
| RuleListComponent, | RuleListComponent, | ||||
| MatCardModule, | MatCardModule, | ||||
| MatIconModule, | MatIconModule, | ||||
| MatTreeModule, | MatTreeModule, | ||||
| ApiModule, | |||||
| HttpClientModule, | |||||
| ], | ], | ||||
| exports: [ | exports: [ | ||||
| RulesComponent | RulesComponent |
| import { Component, OnInit } from '@angular/core'; | 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({ | @Component({ | ||||
| selector: 'app-rules', | selector: 'app-rules', | ||||
| templateUrl: './rules.component.html', | templateUrl: './rules.component.html', | ||||
| styleUrls: ['./rules.component.scss'] | styleUrls: ['./rules.component.scss'] | ||||
| }) | }) | ||||
| export class RulesComponent implements OnInit { | 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 { | ngOnInit(): void { | ||||
| this.rulesService.findAll('body').subscribe((rules: Rule[]) => { | |||||
| this.rules = rules; | |||||
| }) | |||||
| } | } | ||||
| } | } |