forked from loafle/openapi-generator-original
[angular] Add option to generate tagged unions (#7245)
Using the option `taggedUnions` will create a union type for each parent type instead of extending interfaces. The union types are tagged by using the discriminator values. And also: * Add support for aliases; * Add support for read-only properties.
This commit is contained in:
parent
36f69a034d
commit
157e6b7fab
@ -27,6 +27,7 @@ import io.swagger.models.properties.Property;
|
|||||||
import io.swagger.models.properties.StringProperty;
|
import io.swagger.models.properties.StringProperty;
|
||||||
|
|
||||||
public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen implements CodegenConfig {
|
public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||||
|
private static final String X_DISCRIMINATOR_TYPE = "x-discriminator-value";
|
||||||
private static final String UNDEFINED_VALUE = "undefined";
|
private static final String UNDEFINED_VALUE = "undefined";
|
||||||
|
|
||||||
protected String modelPropertyNaming= "camelCase";
|
protected String modelPropertyNaming= "camelCase";
|
||||||
@ -330,7 +331,7 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp
|
|||||||
if (p instanceof StringProperty) {
|
if (p instanceof StringProperty) {
|
||||||
StringProperty sp = (StringProperty) p;
|
StringProperty sp = (StringProperty) p;
|
||||||
if (sp.getDefault() != null) {
|
if (sp.getDefault() != null) {
|
||||||
return "\"" + sp.getDefault() + "\"";
|
return "'" + sp.getDefault() + "'";
|
||||||
}
|
}
|
||||||
return UNDEFINED_VALUE;
|
return UNDEFINED_VALUE;
|
||||||
} else if (p instanceof BooleanProperty) {
|
} else if (p instanceof BooleanProperty) {
|
||||||
@ -495,17 +496,44 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp
|
|||||||
Map<String, Object> mo = (Map<String, Object>) _mo;
|
Map<String, Object> mo = (Map<String, Object>) _mo;
|
||||||
CodegenModel cm = (CodegenModel) mo.get("model");
|
CodegenModel cm = (CodegenModel) mo.get("model");
|
||||||
cm.imports = new TreeSet(cm.imports);
|
cm.imports = new TreeSet(cm.imports);
|
||||||
|
// name enum with model name, e.g. StatusEnum => Pet.StatusEnum
|
||||||
for (CodegenProperty var : cm.vars) {
|
for (CodegenProperty var : cm.vars) {
|
||||||
// name enum with model name, e.g. StatuEnum => Pet.StatusEnum
|
|
||||||
if (Boolean.TRUE.equals(var.isEnum)) {
|
if (Boolean.TRUE.equals(var.isEnum)) {
|
||||||
var.datatypeWithEnum = var.datatypeWithEnum.replace(var.enumName, cm.classname + "." + var.enumName);
|
var.datatypeWithEnum = var.datatypeWithEnum.replace(var.enumName, cm.classname + "." + var.enumName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (cm.parent != null) {
|
||||||
|
for (CodegenProperty var : cm.allVars) {
|
||||||
|
if (Boolean.TRUE.equals(var.isEnum)) {
|
||||||
|
var.datatypeWithEnum = var.datatypeWithEnum
|
||||||
|
.replace(var.enumName, cm.classname + "." + var.enumName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return objs;
|
return objs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<String, Object> postProcessAllModels(Map<String, Object> objs) {
|
||||||
|
Map<String, Object> result = super.postProcessAllModels(objs);
|
||||||
|
|
||||||
|
for (Map.Entry<String, Object> entry : result.entrySet()) {
|
||||||
|
Map<String, Object> inner = (Map<String, Object>) entry.getValue();
|
||||||
|
List<Map<String, Object>> models = (List<Map<String, Object>>) inner.get("models");
|
||||||
|
for (Map<String, Object> mo : models) {
|
||||||
|
CodegenModel cm = (CodegenModel) mo.get("model");
|
||||||
|
if (cm.discriminator != null && cm.children != null) {
|
||||||
|
for (CodegenModel child : cm.children) {
|
||||||
|
this.setDiscriminatorValue(child, cm.discriminator, this.getDiscriminatorValue(child));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
public void setSupportsES6(Boolean value) {
|
public void setSupportsES6(Boolean value) {
|
||||||
supportsES6 = value;
|
supportsES6 = value;
|
||||||
}
|
}
|
||||||
@ -514,6 +542,25 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp
|
|||||||
return supportsES6;
|
return supportsES6;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setDiscriminatorValue(CodegenModel model, String baseName, String value) {
|
||||||
|
for (CodegenProperty prop : model.allVars) {
|
||||||
|
if (prop.baseName.equals(baseName)) {
|
||||||
|
prop.discriminatorValue = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (model.children != null) {
|
||||||
|
final boolean newDiscriminator = model.discriminator != null;
|
||||||
|
for (CodegenModel child : model.children) {
|
||||||
|
this.setDiscriminatorValue(child, baseName, newDiscriminator ? value : this.getDiscriminatorValue(child));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getDiscriminatorValue(CodegenModel model) {
|
||||||
|
return model.vendorExtensions.containsKey(X_DISCRIMINATOR_TYPE) ?
|
||||||
|
(String) model.vendorExtensions.get(X_DISCRIMINATOR_TYPE) : model.classname;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String escapeQuotationMark(String input) {
|
public String escapeQuotationMark(String input) {
|
||||||
// remove ', " to avoid code injection
|
// remove ', " to avoid code injection
|
||||||
|
@ -21,18 +21,22 @@ import io.swagger.models.properties.*;
|
|||||||
|
|
||||||
public class TypeScriptAngularClientCodegen extends AbstractTypeScriptClientCodegen {
|
public class TypeScriptAngularClientCodegen extends AbstractTypeScriptClientCodegen {
|
||||||
private static final SimpleDateFormat SNAPSHOT_SUFFIX_FORMAT = new SimpleDateFormat("yyyyMMddHHmm");
|
private static final SimpleDateFormat SNAPSHOT_SUFFIX_FORMAT = new SimpleDateFormat("yyyyMMddHHmm");
|
||||||
|
private static final String X_DISCRIMINATOR_TYPE = "x-discriminator-value";
|
||||||
|
|
||||||
public static final String NPM_NAME = "npmName";
|
public static final String NPM_NAME = "npmName";
|
||||||
public static final String NPM_VERSION = "npmVersion";
|
public static final String NPM_VERSION = "npmVersion";
|
||||||
public static final String NPM_REPOSITORY = "npmRepository";
|
public static final String NPM_REPOSITORY = "npmRepository";
|
||||||
public static final String SNAPSHOT = "snapshot";
|
public static final String SNAPSHOT = "snapshot";
|
||||||
public static final String WITH_INTERFACES = "withInterfaces";
|
public static final String WITH_INTERFACES = "withInterfaces";
|
||||||
|
public static final String TAGGED_UNIONS ="taggedUnions";
|
||||||
public static final String NG_VERSION = "ngVersion";
|
public static final String NG_VERSION = "ngVersion";
|
||||||
|
|
||||||
protected String npmName = null;
|
protected String npmName = null;
|
||||||
protected String npmVersion = "1.0.0";
|
protected String npmVersion = "1.0.0";
|
||||||
protected String npmRepository = null;
|
protected String npmRepository = null;
|
||||||
|
|
||||||
|
private boolean taggedUnions = false;
|
||||||
|
|
||||||
public TypeScriptAngularClientCodegen() {
|
public TypeScriptAngularClientCodegen() {
|
||||||
super();
|
super();
|
||||||
this.outputFolder = "generated-code/typescript-angular";
|
this.outputFolder = "generated-code/typescript-angular";
|
||||||
@ -55,6 +59,9 @@ public class TypeScriptAngularClientCodegen extends AbstractTypeScriptClientCode
|
|||||||
this.cliOptions.add(new CliOption(WITH_INTERFACES,
|
this.cliOptions.add(new CliOption(WITH_INTERFACES,
|
||||||
"Setting this property to true will generate interfaces next to the default class implementations.",
|
"Setting this property to true will generate interfaces next to the default class implementations.",
|
||||||
BooleanProperty.TYPE).defaultValue(Boolean.FALSE.toString()));
|
BooleanProperty.TYPE).defaultValue(Boolean.FALSE.toString()));
|
||||||
|
this.cliOptions.add(new CliOption(TAGGED_UNIONS,
|
||||||
|
"Use discriminators to create tagged unions instead of extending interfaces.",
|
||||||
|
BooleanProperty.TYPE).defaultValue(Boolean.FALSE.toString()));
|
||||||
this.cliOptions.add(new CliOption(NG_VERSION, "The version of Angular. Default is '4.3'"));
|
this.cliOptions.add(new CliOption(NG_VERSION, "The version of Angular. Default is '4.3'"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -101,6 +108,10 @@ public class TypeScriptAngularClientCodegen extends AbstractTypeScriptClientCode
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (additionalProperties.containsKey(TAGGED_UNIONS)) {
|
||||||
|
taggedUnions = Boolean.parseBoolean(additionalProperties.get(TAGGED_UNIONS).toString());
|
||||||
|
}
|
||||||
|
|
||||||
// determine NG version
|
// determine NG version
|
||||||
SemVer ngVersion;
|
SemVer ngVersion;
|
||||||
if (additionalProperties.containsKey(NG_VERSION)) {
|
if (additionalProperties.containsKey(NG_VERSION)) {
|
||||||
@ -295,14 +306,33 @@ public class TypeScriptAngularClientCodegen extends AbstractTypeScriptClientCode
|
|||||||
public Map<String, Object> postProcessModels(Map<String, Object> objs) {
|
public Map<String, Object> postProcessModels(Map<String, Object> objs) {
|
||||||
Map<String, Object> result = super.postProcessModels(objs);
|
Map<String, Object> result = super.postProcessModels(objs);
|
||||||
|
|
||||||
// Add additional filename information for imports
|
return postProcessModelsEnum(result);
|
||||||
List<Object> models = (List<Object>) postProcessModelsEnum(result).get("models");
|
}
|
||||||
for (Object _mo : models) {
|
|
||||||
Map<String, Object> mo = (Map<String, Object>) _mo;
|
|
||||||
CodegenModel cm = (CodegenModel) mo.get("model");
|
|
||||||
mo.put("tsImports", toTsImports(cm, cm.imports));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<String, Object> postProcessAllModels(Map<String, Object> objs) {
|
||||||
|
Map<String, Object> result = super.postProcessAllModels(objs);
|
||||||
|
|
||||||
|
for (Map.Entry<String, Object> entry : result.entrySet()) {
|
||||||
|
Map<String, Object> inner = (Map<String, Object>) entry.getValue();
|
||||||
|
List<Map<String, Object>> models = (List<Map<String, Object>>) inner.get("models");
|
||||||
|
for (Map<String, Object> mo : models) {
|
||||||
|
CodegenModel cm = (CodegenModel) mo.get("model");
|
||||||
|
if (taggedUnions) {
|
||||||
|
mo.put(TAGGED_UNIONS, true);
|
||||||
|
if (cm.discriminator != null && cm.children != null) {
|
||||||
|
for (CodegenModel child : cm.children) {
|
||||||
|
cm.imports.add(child.classname);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (cm.parent != null) {
|
||||||
|
cm.imports.remove(cm.parent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Add additional filename information for imports
|
||||||
|
mo.put("tsImports", toTsImports(cm, cm.imports));
|
||||||
|
}
|
||||||
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,6 +11,6 @@ import { {{classname}} } from './{{filename}}';
|
|||||||
* {{{description}}}
|
* {{{description}}}
|
||||||
*/
|
*/
|
||||||
{{/description}}
|
{{/description}}
|
||||||
{{#isEnum}}{{>modelEnum}}{{/isEnum}}{{^isEnum}}{{>modelGeneric}}{{/isEnum}}
|
{{#isEnum}}{{>modelEnum}}{{/isEnum}}{{^isEnum}}{{#isAlias}}{{>modelAlias}}{{/isAlias}}{{^isAlias}}{{#taggedUnions}}{{>modelTaggedUnion}}{{/taggedUnions}}{{^taggedUnions}}{{>modelGeneric}}{{/taggedUnions}}{{/isAlias}}{{/isEnum}}
|
||||||
{{/model}}
|
{{/model}}
|
||||||
{{/models}}
|
{{/models}}
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
export type {{classname}} = {{dataType}};
|
@ -1,28 +1,10 @@
|
|||||||
export interface {{classname}} {{#parent}}extends {{{parent}}} {{/parent}}{
|
export interface {{classname}} {{#parent}}extends {{{parent}}} {{/parent}}{ {{>modelGenericAdditionalProperties}}
|
||||||
{{#additionalPropertiesType}}
|
|
||||||
[key: string]: {{{additionalPropertiesType}}}{{#hasVars}} | any{{/hasVars}};
|
|
||||||
|
|
||||||
{{/additionalPropertiesType}}
|
|
||||||
{{#vars}}
|
{{#vars}}
|
||||||
{{#description}}
|
{{#description}}
|
||||||
/**
|
/**
|
||||||
* {{{description}}}
|
* {{{description}}}
|
||||||
*/
|
*/
|
||||||
{{/description}}
|
{{/description}}
|
||||||
{{name}}{{^required}}?{{/required}}: {{#isEnum}}{{{datatypeWithEnum}}}{{/isEnum}}{{^isEnum}}{{{datatype}}}{{/isEnum}};
|
{{#isReadOnly}}readonly {{/isReadOnly}}{{name}}{{^required}}?{{/required}}: {{#isEnum}}{{{datatypeWithEnum}}}{{/isEnum}}{{^isEnum}}{{{datatype}}}{{/isEnum}};
|
||||||
{{/vars}}
|
{{/vars}}
|
||||||
}{{#hasEnums}}
|
}{{>modelGenericEnums}}
|
||||||
export namespace {{classname}} {
|
|
||||||
{{#vars}}
|
|
||||||
{{#isEnum}}
|
|
||||||
export type {{enumName}} = {{#allowableValues}}{{#enumVars}}{{{value}}}{{^-last}} | {{/-last}}{{/enumVars}}{{/allowableValues}};
|
|
||||||
export const {{enumName}} = {
|
|
||||||
{{#allowableValues}}
|
|
||||||
{{#enumVars}}
|
|
||||||
{{name}}: {{{value}}} as {{enumName}}{{^-last}},{{/-last}}
|
|
||||||
{{/enumVars}}
|
|
||||||
{{/allowableValues}}
|
|
||||||
}
|
|
||||||
{{/isEnum}}
|
|
||||||
{{/vars}}
|
|
||||||
}{{/hasEnums}}
|
|
@ -0,0 +1,5 @@
|
|||||||
|
{{#additionalPropertiesType}}
|
||||||
|
|
||||||
|
[key: string]: {{{additionalPropertiesType}}}{{#hasVars}} | any{{/hasVars}};
|
||||||
|
|
||||||
|
{{/additionalPropertiesType}}
|
@ -0,0 +1,16 @@
|
|||||||
|
{{#hasEnums}}
|
||||||
|
|
||||||
|
export namespace {{classname}} {
|
||||||
|
{{#vars}}
|
||||||
|
{{#isEnum}}
|
||||||
|
export type {{enumName}} = {{#allowableValues}}{{#enumVars}}{{{value}}}{{^-last}} | {{/-last}}{{/enumVars}}{{/allowableValues}};
|
||||||
|
export const {{enumName}} = {
|
||||||
|
{{#allowableValues}}
|
||||||
|
{{#enumVars}}
|
||||||
|
{{name}}: {{{value}}} as {{enumName}}{{^-last}},{{/-last}}
|
||||||
|
{{/enumVars}}
|
||||||
|
{{/allowableValues}}
|
||||||
|
}
|
||||||
|
{{/isEnum}}
|
||||||
|
{{/vars}}
|
||||||
|
}{{/hasEnums}}
|
@ -0,0 +1,21 @@
|
|||||||
|
{{#discriminator}}
|
||||||
|
export type {{classname}} = {{#children}}{{^-first}} | {{/-first}}{{classname}}{{/children}};
|
||||||
|
{{/discriminator}}
|
||||||
|
{{^discriminator}}
|
||||||
|
{{#parent}}
|
||||||
|
export interface {{classname}} { {{>modelGenericAdditionalProperties}}
|
||||||
|
{{#allVars}}
|
||||||
|
{{#description}}
|
||||||
|
/**
|
||||||
|
* {{{description}}}
|
||||||
|
*/
|
||||||
|
{{/description}}
|
||||||
|
{{name}}{{^required}}?{{/required}}: {{#discriminatorValue}}'{{discriminatorValue}}'{{/discriminatorValue}}{{^discriminatorValue}}{{#isEnum}}{{{datatypeWithEnum}}}{{/isEnum}}{{^isEnum}}{{{datatype}}}{{/isEnum}}{{/discriminatorValue}};
|
||||||
|
{{/allVars}}
|
||||||
|
}
|
||||||
|
{{>modelGenericEnums}}
|
||||||
|
{{/parent}}
|
||||||
|
{{^parent}}
|
||||||
|
{{>modelGeneric}}
|
||||||
|
{{/parent}}
|
||||||
|
{{/discriminator}}
|
@ -35,6 +35,7 @@ public class TypeScriptAngularClientOptionsProvider implements OptionsProvider {
|
|||||||
.put(TypeScriptAngularClientCodegen.NPM_VERSION, NMP_VERSION)
|
.put(TypeScriptAngularClientCodegen.NPM_VERSION, NMP_VERSION)
|
||||||
.put(TypeScriptAngularClientCodegen.SNAPSHOT, Boolean.FALSE.toString())
|
.put(TypeScriptAngularClientCodegen.SNAPSHOT, Boolean.FALSE.toString())
|
||||||
.put(TypeScriptAngularClientCodegen.WITH_INTERFACES, Boolean.FALSE.toString())
|
.put(TypeScriptAngularClientCodegen.WITH_INTERFACES, Boolean.FALSE.toString())
|
||||||
|
.put(TypeScriptAngularClientCodegen.TAGGED_UNIONS, Boolean.FALSE.toString())
|
||||||
.put(TypeScriptAngularClientCodegen.NPM_REPOSITORY, NPM_REPOSITORY)
|
.put(TypeScriptAngularClientCodegen.NPM_REPOSITORY, NPM_REPOSITORY)
|
||||||
.put(TypeScriptAngularClientCodegen.NG_VERSION, NG_VERSION)
|
.put(TypeScriptAngularClientCodegen.NG_VERSION, NG_VERSION)
|
||||||
.put(CodegenConstants.ALLOW_UNICODE_IDENTIFIERS, ALLOW_UNICODE_IDENTIFIERS_VALUE)
|
.put(CodegenConstants.ALLOW_UNICODE_IDENTIFIERS, ALLOW_UNICODE_IDENTIFIERS_VALUE)
|
||||||
|
@ -4,7 +4,6 @@ import io.swagger.codegen.AbstractOptionsTest;
|
|||||||
import io.swagger.codegen.CodegenConfig;
|
import io.swagger.codegen.CodegenConfig;
|
||||||
import io.swagger.codegen.languages.TypeScriptAngularClientCodegen;
|
import io.swagger.codegen.languages.TypeScriptAngularClientCodegen;
|
||||||
import io.swagger.codegen.options.TypeScriptAngularClientOptionsProvider;
|
import io.swagger.codegen.options.TypeScriptAngularClientOptionsProvider;
|
||||||
import io.swagger.codegen.options.TypeScriptAngularClientOptionsProvider;
|
|
||||||
import mockit.Expectations;
|
import mockit.Expectations;
|
||||||
import mockit.Tested;
|
import mockit.Tested;
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
2.3.0-SNAPSHOT
|
2.3.0
|
@ -1,21 +1,28 @@
|
|||||||
import { NgModule, ModuleWithProviders } from '@angular/core';
|
import { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core';
|
||||||
import { CommonModule } from '@angular/common';
|
import { CommonModule } from '@angular/common';
|
||||||
import { HttpModule } from '@angular/http';
|
import { HttpClientModule } from '@angular/common/http';
|
||||||
import { Configuration } from './configuration';
|
import { Configuration } from './configuration';
|
||||||
|
|
||||||
import { FakeService } from './api/fake.service';
|
import { FakeService } from './api/fake.service';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [ CommonModule, HttpModule ],
|
imports: [ CommonModule, HttpClientModule ],
|
||||||
declarations: [],
|
declarations: [],
|
||||||
exports: [],
|
exports: [],
|
||||||
providers: [ FakeService ]
|
providers: [
|
||||||
|
FakeService ]
|
||||||
})
|
})
|
||||||
export class ApiModule {
|
export class ApiModule {
|
||||||
public static forConfig(configurationFactory: () => Configuration): ModuleWithProviders {
|
public static forRoot(configurationFactory: () => Configuration): ModuleWithProviders {
|
||||||
return {
|
return {
|
||||||
ngModule: ApiModule,
|
ngModule: ApiModule,
|
||||||
providers: [ {provide: Configuration, useFactory: configurationFactory}]
|
providers: [ { provide: Configuration, useFactory: configurationFactory } ]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
constructor( @Optional() @SkipSelf() parentModule: ApiModule) {
|
||||||
|
if (parentModule) {
|
||||||
|
throw new Error('ApiModule is already loaded. Import your base AppModule only.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,19 +9,18 @@
|
|||||||
* https://github.com/swagger-api/swagger-codegen.git
|
* https://github.com/swagger-api/swagger-codegen.git
|
||||||
* Do not edit the class manually.
|
* Do not edit the class manually.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* tslint:disable:no-unused-variable member-ordering */
|
/* tslint:disable:no-unused-variable member-ordering */
|
||||||
|
|
||||||
import { Inject, Injectable, Optional } from '@angular/core';
|
import { Inject, Injectable, Optional } from '@angular/core';
|
||||||
import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
|
import { HttpClient, HttpHeaders, HttpParams,
|
||||||
|
HttpResponse, HttpEvent } from '@angular/common/http';
|
||||||
|
import { CustomHttpUrlEncodingCodec } from '../encoder';
|
||||||
|
|
||||||
import { Observable } from 'rxjs/Observable';
|
import { Observable } from 'rxjs/Observable';
|
||||||
import '../rxjs-operators';
|
|
||||||
|
|
||||||
|
|
||||||
import { BASE_PATH, COLLECTION_FORMATS } from '../variables';
|
import { BASE_PATH, COLLECTION_FORMATS } from '../variables';
|
||||||
import { Configuration } from '../configuration';
|
import { Configuration } from '../configuration';
|
||||||
import { CustomHttpUrlEncodingCodec } from '../encoder';
|
|
||||||
|
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
@ -56,21 +55,36 @@ export class FakeService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* To test code injection *_/ ' \" =end -- \\r\\n \\n \\r
|
* To test code injection *_/ ' \" =end -- \\r\\n \\n \\r
|
||||||
*
|
*
|
||||||
* @param test code inject * ' " =end rn n r To test code injection *_/ ' \" =end -- \\r\\n \\n \\r
|
* @param testCodeInjectEndRnNR To test code injection *_/ ' \" =end -- \\r\\n \\n \\r
|
||||||
|
* @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 testCodeInjectEndRnNR(test code inject * ' " =end rn n r?: string): Observable<{}> {
|
public testCodeInjectEndRnNR(testCodeInjectEndRnNR?: string, observe?: 'body', reportProgress?: boolean): Observable<any>;
|
||||||
|
public testCodeInjectEndRnNR(testCodeInjectEndRnNR?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<any>>;
|
||||||
|
public testCodeInjectEndRnNR(testCodeInjectEndRnNR?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<any>>;
|
||||||
|
public testCodeInjectEndRnNR(testCodeInjectEndRnNR?: string, observe: any = 'body', reportProgress: boolean = false ): Observable<any> {
|
||||||
|
|
||||||
let headers = this.defaultHeaders;
|
let headers = this.defaultHeaders;
|
||||||
|
|
||||||
|
// to determine the Accept header
|
||||||
|
let httpHeaderAccepts: string[] = [
|
||||||
|
'application/json',
|
||||||
|
'*_/ =end -- '
|
||||||
|
];
|
||||||
|
let httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
|
||||||
|
if (httpHeaderAcceptSelected != undefined) {
|
||||||
|
headers = headers.set("Accept", httpHeaderAcceptSelected);
|
||||||
|
}
|
||||||
|
|
||||||
// to determine the Content-Type header
|
// to determine the Content-Type header
|
||||||
let consumes: string[] = [
|
let consumes: string[] = [
|
||||||
'application/json',
|
'application/json',
|
||||||
'*_/ =end -- '
|
'*_/ =end -- '
|
||||||
];
|
];
|
||||||
|
|
||||||
const canConsumeForm = this.canConsumeForm(consumes);
|
const canConsumeForm = this.canConsumeForm(consumes);
|
||||||
|
|
||||||
let formParams: { append(param: string, value: any): void; };
|
let formParams: { append(param: string, value: any): void; };
|
||||||
@ -82,17 +96,19 @@ export class FakeService {
|
|||||||
formParams = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});
|
formParams = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (testCodeInjectEndRnNR !== undefined) {
|
||||||
|
formParams = formParams.append('test code inject */ ' " =end -- \r\n \n \r', <any>testCodeInjectEndRnNR) || formParams;
|
||||||
if (test code inject * ' " =end rn n r !== undefined) {
|
|
||||||
formParams = formParams.append('test code inject */ ' " =end -- \r\n \n \r', <any>test code inject * ' " =end rn n r) || formParams;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.httpClient.put<any>(`${this.basePath}/fake`,
|
return this.httpClient.put<any>(`${this.basePath}/fake`,
|
||||||
convertFormParamsToString ? formParams.toString() : formParams, {
|
convertFormParamsToString ? formParams.toString() : formParams,
|
||||||
headers: headers,
|
{
|
||||||
withCredentials: this.configuration.withCredentials,
|
withCredentials: this.configuration.withCredentials,
|
||||||
});
|
headers: headers,
|
||||||
|
observe: observe,
|
||||||
|
reportProgress: reportProgress
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -23,4 +23,57 @@ export class Configuration {
|
|||||||
this.basePath = configurationParameters.basePath;
|
this.basePath = configurationParameters.basePath;
|
||||||
this.withCredentials = configurationParameters.withCredentials;
|
this.withCredentials = configurationParameters.withCredentials;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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 {string[]} contentTypes - the array of content types that are available for selection
|
||||||
|
* @returns {string} 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
let type = contentTypes.find(x => 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 {string[]} accepts - the array of content types that are available for selection.
|
||||||
|
* @returns {string} 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
let type = accepts.find(x => 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 {string} mime - MIME (Multipurpose Internet Mail Extensions)
|
||||||
|
* @return {boolean} 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');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,7 @@ git_remote=`git remote`
|
|||||||
if [ "$git_remote" = "" ]; then # git remote not defined
|
if [ "$git_remote" = "" ]; then # git remote not defined
|
||||||
|
|
||||||
if [ "$GIT_TOKEN" = "" ]; then
|
if [ "$GIT_TOKEN" = "" ]; then
|
||||||
echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git crediential in your environment."
|
echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment."
|
||||||
git remote add origin https://github.com/${git_user_id}/${git_repo_id}.git
|
git remote add origin https://github.com/${git_user_id}/${git_repo_id}.git
|
||||||
else
|
else
|
||||||
git remote add origin https://${git_user_id}:${GIT_TOKEN}@github.com/${git_user_id}/${git_repo_id}.git
|
git remote add origin https://${git_user_id}:${GIT_TOKEN}@github.com/${git_user_id}/${git_repo_id}.git
|
||||||
|
@ -0,0 +1,22 @@
|
|||||||
|
/**
|
||||||
|
* Swagger Petstore *_/ ' \" =end -- \\r\\n \\n \\r
|
||||||
|
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ *_/ ' \" =end --
|
||||||
|
*
|
||||||
|
* OpenAPI spec version: 1.0.0 *_/ ' \" =end -- \\r\\n \\n \\r
|
||||||
|
* Contact: apiteam@swagger.io *_/ ' \" =end -- \\r\\n \\n \\r
|
||||||
|
*
|
||||||
|
* NOTE: This class is auto generated by the swagger code generator program.
|
||||||
|
* https://github.com/swagger-api/swagger-codegen.git
|
||||||
|
* Do not edit the class manually.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Model for testing reserved words *_/ ' \" =end -- \\r\\n \\n \\r
|
||||||
|
*/
|
||||||
|
export interface ModelReturn {
|
||||||
|
/**
|
||||||
|
* property description *_/ ' \" =end -- \\r\\n \\n \\r
|
||||||
|
*/
|
||||||
|
_return?: number;
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
/**
|
||||||
|
* Swagger Petstore
|
||||||
|
* This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters.
|
||||||
|
*
|
||||||
|
* OpenAPI spec version: 1.0.0
|
||||||
|
* Contact: apiteam@swagger.io
|
||||||
|
*
|
||||||
|
* NOTE: This class is auto generated by the swagger code generator program.
|
||||||
|
* https://github.com/swagger-api/swagger-codegen.git
|
||||||
|
* Do not edit the class manually.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Describes the result of uploading an image resource
|
||||||
|
*/
|
||||||
|
export interface ApiResponse {
|
||||||
|
code?: number;
|
||||||
|
type?: string;
|
||||||
|
message?: string;
|
||||||
|
}
|
@ -14,7 +14,7 @@
|
|||||||
/**
|
/**
|
||||||
* A category for a pet
|
* A category for a pet
|
||||||
*/
|
*/
|
||||||
export interface Category {
|
export interface Category {
|
||||||
id?: number;
|
id?: number;
|
||||||
name?: string;
|
name?: string;
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
/**
|
/**
|
||||||
* An order for a pets from the pet store
|
* An order for a pets from the pet store
|
||||||
*/
|
*/
|
||||||
export interface Order {
|
export interface Order {
|
||||||
id?: number;
|
id?: number;
|
||||||
petId?: number;
|
petId?: number;
|
||||||
quantity?: number;
|
quantity?: number;
|
||||||
|
@ -16,7 +16,7 @@ import { Tag } from './tag';
|
|||||||
/**
|
/**
|
||||||
* A pet for sale in the pet store
|
* A pet for sale in the pet store
|
||||||
*/
|
*/
|
||||||
export interface Pet {
|
export interface Pet {
|
||||||
id?: number;
|
id?: number;
|
||||||
category?: Category;
|
category?: Category;
|
||||||
name: string;
|
name: string;
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
/**
|
/**
|
||||||
* A tag for a pet
|
* A tag for a pet
|
||||||
*/
|
*/
|
||||||
export interface Tag {
|
export interface Tag {
|
||||||
id?: number;
|
id?: number;
|
||||||
name?: string;
|
name?: string;
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
/**
|
/**
|
||||||
* A User who is purchasing from the pet store
|
* A User who is purchasing from the pet store
|
||||||
*/
|
*/
|
||||||
export interface User {
|
export interface User {
|
||||||
id?: number;
|
id?: number;
|
||||||
username?: string;
|
username?: string;
|
||||||
firstName?: string;
|
firstName?: string;
|
||||||
|
@ -0,0 +1,21 @@
|
|||||||
|
/**
|
||||||
|
* Swagger Petstore
|
||||||
|
* This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters.
|
||||||
|
*
|
||||||
|
* OpenAPI spec version: 1.0.0
|
||||||
|
* Contact: apiteam@swagger.io
|
||||||
|
*
|
||||||
|
* NOTE: This class is auto generated by the swagger code generator program.
|
||||||
|
* https://github.com/swagger-api/swagger-codegen.git
|
||||||
|
* Do not edit the class manually.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Describes the result of uploading an image resource
|
||||||
|
*/
|
||||||
|
export interface ApiResponse {
|
||||||
|
code?: number;
|
||||||
|
type?: string;
|
||||||
|
message?: string;
|
||||||
|
}
|
@ -14,7 +14,7 @@
|
|||||||
/**
|
/**
|
||||||
* A category for a pet
|
* A category for a pet
|
||||||
*/
|
*/
|
||||||
export interface Category {
|
export interface Category {
|
||||||
id?: number;
|
id?: number;
|
||||||
name?: string;
|
name?: string;
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
/**
|
/**
|
||||||
* An order for a pets from the pet store
|
* An order for a pets from the pet store
|
||||||
*/
|
*/
|
||||||
export interface Order {
|
export interface Order {
|
||||||
id?: number;
|
id?: number;
|
||||||
petId?: number;
|
petId?: number;
|
||||||
quantity?: number;
|
quantity?: number;
|
||||||
|
@ -16,7 +16,7 @@ import { Tag } from './tag';
|
|||||||
/**
|
/**
|
||||||
* A pet for sale in the pet store
|
* A pet for sale in the pet store
|
||||||
*/
|
*/
|
||||||
export interface Pet {
|
export interface Pet {
|
||||||
id?: number;
|
id?: number;
|
||||||
category?: Category;
|
category?: Category;
|
||||||
name: string;
|
name: string;
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
/**
|
/**
|
||||||
* A tag for a pet
|
* A tag for a pet
|
||||||
*/
|
*/
|
||||||
export interface Tag {
|
export interface Tag {
|
||||||
id?: number;
|
id?: number;
|
||||||
name?: string;
|
name?: string;
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
/**
|
/**
|
||||||
* A User who is purchasing from the pet store
|
* A User who is purchasing from the pet store
|
||||||
*/
|
*/
|
||||||
export interface User {
|
export interface User {
|
||||||
id?: number;
|
id?: number;
|
||||||
username?: string;
|
username?: string;
|
||||||
firstName?: string;
|
firstName?: string;
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
/**
|
/**
|
||||||
* Describes the result of uploading an image resource
|
* Describes the result of uploading an image resource
|
||||||
*/
|
*/
|
||||||
export interface ApiResponse {
|
export interface ApiResponse {
|
||||||
code?: number;
|
code?: number;
|
||||||
type?: string;
|
type?: string;
|
||||||
message?: string;
|
message?: string;
|
||||||
|
@ -0,0 +1,20 @@
|
|||||||
|
/**
|
||||||
|
* Swagger Petstore
|
||||||
|
* This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters.
|
||||||
|
*
|
||||||
|
* OpenAPI spec version: 1.0.0
|
||||||
|
* Contact: apiteam@swagger.io
|
||||||
|
*
|
||||||
|
* NOTE: This class is auto generated by the swagger code generator program.
|
||||||
|
* https://github.com/swagger-api/swagger-codegen.git
|
||||||
|
* Do not edit the class manually.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A category for a pet
|
||||||
|
*/
|
||||||
|
export interface Category {
|
||||||
|
id?: number;
|
||||||
|
name?: string;
|
||||||
|
}
|
@ -0,0 +1,35 @@
|
|||||||
|
/**
|
||||||
|
* Swagger Petstore
|
||||||
|
* This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters.
|
||||||
|
*
|
||||||
|
* OpenAPI spec version: 1.0.0
|
||||||
|
* Contact: apiteam@swagger.io
|
||||||
|
*
|
||||||
|
* NOTE: This class is auto generated by the swagger code generator program.
|
||||||
|
* https://github.com/swagger-api/swagger-codegen.git
|
||||||
|
* Do not edit the class manually.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An order for a pets from the pet store
|
||||||
|
*/
|
||||||
|
export interface Order {
|
||||||
|
id?: number;
|
||||||
|
petId?: number;
|
||||||
|
quantity?: number;
|
||||||
|
shipDate?: Date;
|
||||||
|
/**
|
||||||
|
* Order Status
|
||||||
|
*/
|
||||||
|
status?: Order.StatusEnum;
|
||||||
|
complete?: boolean;
|
||||||
|
}
|
||||||
|
export namespace Order {
|
||||||
|
export type StatusEnum = 'placed' | 'approved' | 'delivered';
|
||||||
|
export const StatusEnum = {
|
||||||
|
Placed: 'placed' as StatusEnum,
|
||||||
|
Approved: 'approved' as StatusEnum,
|
||||||
|
Delivered: 'delivered' as StatusEnum
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,37 @@
|
|||||||
|
/**
|
||||||
|
* Swagger Petstore
|
||||||
|
* This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters.
|
||||||
|
*
|
||||||
|
* OpenAPI spec version: 1.0.0
|
||||||
|
* Contact: apiteam@swagger.io
|
||||||
|
*
|
||||||
|
* NOTE: This class is auto generated by the swagger code generator program.
|
||||||
|
* https://github.com/swagger-api/swagger-codegen.git
|
||||||
|
* Do not edit the class manually.
|
||||||
|
*/
|
||||||
|
import { Category } from './category';
|
||||||
|
import { Tag } from './tag';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A pet for sale in the pet store
|
||||||
|
*/
|
||||||
|
export interface Pet {
|
||||||
|
id?: number;
|
||||||
|
category?: Category;
|
||||||
|
name: string;
|
||||||
|
photoUrls: Array<string>;
|
||||||
|
tags?: Array<Tag>;
|
||||||
|
/**
|
||||||
|
* pet status in the store
|
||||||
|
*/
|
||||||
|
status?: Pet.StatusEnum;
|
||||||
|
}
|
||||||
|
export namespace Pet {
|
||||||
|
export type StatusEnum = 'available' | 'pending' | 'sold';
|
||||||
|
export const StatusEnum = {
|
||||||
|
Available: 'available' as StatusEnum,
|
||||||
|
Pending: 'pending' as StatusEnum,
|
||||||
|
Sold: 'sold' as StatusEnum
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
/**
|
||||||
|
* Swagger Petstore
|
||||||
|
* This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters.
|
||||||
|
*
|
||||||
|
* OpenAPI spec version: 1.0.0
|
||||||
|
* Contact: apiteam@swagger.io
|
||||||
|
*
|
||||||
|
* NOTE: This class is auto generated by the swagger code generator program.
|
||||||
|
* https://github.com/swagger-api/swagger-codegen.git
|
||||||
|
* Do not edit the class manually.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A tag for a pet
|
||||||
|
*/
|
||||||
|
export interface Tag {
|
||||||
|
id?: number;
|
||||||
|
name?: string;
|
||||||
|
}
|
@ -0,0 +1,29 @@
|
|||||||
|
/**
|
||||||
|
* Swagger Petstore
|
||||||
|
* This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters.
|
||||||
|
*
|
||||||
|
* OpenAPI spec version: 1.0.0
|
||||||
|
* Contact: apiteam@swagger.io
|
||||||
|
*
|
||||||
|
* NOTE: This class is auto generated by the swagger code generator program.
|
||||||
|
* https://github.com/swagger-api/swagger-codegen.git
|
||||||
|
* Do not edit the class manually.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A User who is purchasing from the pet store
|
||||||
|
*/
|
||||||
|
export interface User {
|
||||||
|
id?: number;
|
||||||
|
username?: string;
|
||||||
|
firstName?: string;
|
||||||
|
lastName?: string;
|
||||||
|
email?: string;
|
||||||
|
password?: string;
|
||||||
|
phone?: string;
|
||||||
|
/**
|
||||||
|
* User Status
|
||||||
|
*/
|
||||||
|
userStatus?: number;
|
||||||
|
}
|
@ -14,7 +14,7 @@
|
|||||||
/**
|
/**
|
||||||
* Describes the result of uploading an image resource
|
* Describes the result of uploading an image resource
|
||||||
*/
|
*/
|
||||||
export interface ApiResponse {
|
export interface ApiResponse {
|
||||||
code?: number;
|
code?: number;
|
||||||
type?: string;
|
type?: string;
|
||||||
message?: string;
|
message?: string;
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
/**
|
/**
|
||||||
* A category for a pet
|
* A category for a pet
|
||||||
*/
|
*/
|
||||||
export interface Category {
|
export interface Category {
|
||||||
id?: number;
|
id?: number;
|
||||||
name?: string;
|
name?: string;
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
/**
|
/**
|
||||||
* An order for a pets from the pet store
|
* An order for a pets from the pet store
|
||||||
*/
|
*/
|
||||||
export interface Order {
|
export interface Order {
|
||||||
id?: number;
|
id?: number;
|
||||||
petId?: number;
|
petId?: number;
|
||||||
quantity?: number;
|
quantity?: number;
|
||||||
|
@ -16,7 +16,7 @@ import { Tag } from './tag';
|
|||||||
/**
|
/**
|
||||||
* A pet for sale in the pet store
|
* A pet for sale in the pet store
|
||||||
*/
|
*/
|
||||||
export interface Pet {
|
export interface Pet {
|
||||||
id?: number;
|
id?: number;
|
||||||
category?: Category;
|
category?: Category;
|
||||||
name: string;
|
name: string;
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
/**
|
/**
|
||||||
* A tag for a pet
|
* A tag for a pet
|
||||||
*/
|
*/
|
||||||
export interface Tag {
|
export interface Tag {
|
||||||
id?: number;
|
id?: number;
|
||||||
name?: string;
|
name?: string;
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
/**
|
/**
|
||||||
* A User who is purchasing from the pet store
|
* A User who is purchasing from the pet store
|
||||||
*/
|
*/
|
||||||
export interface User {
|
export interface User {
|
||||||
id?: number;
|
id?: number;
|
||||||
username?: string;
|
username?: string;
|
||||||
firstName?: string;
|
firstName?: string;
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
/**
|
/**
|
||||||
* Describes the result of uploading an image resource
|
* Describes the result of uploading an image resource
|
||||||
*/
|
*/
|
||||||
export interface ApiResponse {
|
export interface ApiResponse {
|
||||||
code?: number;
|
code?: number;
|
||||||
type?: string;
|
type?: string;
|
||||||
message?: string;
|
message?: string;
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
/**
|
/**
|
||||||
* A category for a pet
|
* A category for a pet
|
||||||
*/
|
*/
|
||||||
export interface Category {
|
export interface Category {
|
||||||
id?: number;
|
id?: number;
|
||||||
name?: string;
|
name?: string;
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
/**
|
/**
|
||||||
* An order for a pets from the pet store
|
* An order for a pets from the pet store
|
||||||
*/
|
*/
|
||||||
export interface Order {
|
export interface Order {
|
||||||
id?: number;
|
id?: number;
|
||||||
petId?: number;
|
petId?: number;
|
||||||
quantity?: number;
|
quantity?: number;
|
||||||
|
@ -16,7 +16,7 @@ import { Tag } from './tag';
|
|||||||
/**
|
/**
|
||||||
* A pet for sale in the pet store
|
* A pet for sale in the pet store
|
||||||
*/
|
*/
|
||||||
export interface Pet {
|
export interface Pet {
|
||||||
id?: number;
|
id?: number;
|
||||||
category?: Category;
|
category?: Category;
|
||||||
name: string;
|
name: string;
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
/**
|
/**
|
||||||
* A tag for a pet
|
* A tag for a pet
|
||||||
*/
|
*/
|
||||||
export interface Tag {
|
export interface Tag {
|
||||||
id?: number;
|
id?: number;
|
||||||
name?: string;
|
name?: string;
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
/**
|
/**
|
||||||
* A User who is purchasing from the pet store
|
* A User who is purchasing from the pet store
|
||||||
*/
|
*/
|
||||||
export interface User {
|
export interface User {
|
||||||
id?: number;
|
id?: number;
|
||||||
username?: string;
|
username?: string;
|
||||||
firstName?: string;
|
firstName?: string;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user