{ | |||||
// 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; | |||||
}) | |||||
} | } | ||||
} | } |