mirror of
				https://github.com/OpenAPITools/openapi-generator.git
				synced 2025-11-04 02:33:54 +00:00 
			
		
		
		
	Merge pull request #1862 from cbornet/feign_auth
Add auth support to feign library
This commit is contained in:
		
						commit
						ef8e5dbcf5
					
				@ -223,12 +223,11 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig {
 | 
				
			|||||||
        final String authFolder = (sourceFolder + '/' + invokerPackage + ".auth").replace(".", "/");
 | 
					        final String authFolder = (sourceFolder + '/' + invokerPackage + ".auth").replace(".", "/");
 | 
				
			||||||
        if ("feign".equals(getLibrary())) {
 | 
					        if ("feign".equals(getLibrary())) {
 | 
				
			||||||
            supportingFiles.add(new SupportingFile("FormAwareEncoder.mustache", invokerFolder, "FormAwareEncoder.java"));
 | 
					            supportingFiles.add(new SupportingFile("FormAwareEncoder.mustache", invokerFolder, "FormAwareEncoder.java"));
 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            supportingFiles.add(new SupportingFile("auth/HttpBasicAuth.mustache", authFolder, "HttpBasicAuth.java"));
 | 
					 | 
				
			||||||
            supportingFiles.add(new SupportingFile("auth/ApiKeyAuth.mustache", authFolder, "ApiKeyAuth.java"));
 | 
					 | 
				
			||||||
            supportingFiles.add(new SupportingFile("auth/OAuth.mustache", authFolder, "OAuth.java"));
 | 
					 | 
				
			||||||
            supportingFiles.add(new SupportingFile("auth/OAuthFlow.mustache", authFolder, "OAuthFlow.java"));
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        supportingFiles.add(new SupportingFile("auth/HttpBasicAuth.mustache", authFolder, "HttpBasicAuth.java"));
 | 
				
			||||||
 | 
					        supportingFiles.add(new SupportingFile("auth/ApiKeyAuth.mustache", authFolder, "ApiKeyAuth.java"));
 | 
				
			||||||
 | 
					        supportingFiles.add(new SupportingFile("auth/OAuth.mustache", authFolder, "OAuth.java"));
 | 
				
			||||||
 | 
					        supportingFiles.add(new SupportingFile("auth/OAuthFlow.mustache", authFolder, "OAuthFlow.java"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (!("feign".equals(getLibrary()) || "retrofit".equals(getLibrary()) || "retrofit2".equals(getLibrary()))) {
 | 
					        if (!("feign".equals(getLibrary()) || "retrofit".equals(getLibrary()) || "retrofit2".equals(getLibrary()))) {
 | 
				
			||||||
            supportingFiles.add(new SupportingFile("apiException.mustache", invokerFolder, "ApiException.java"));
 | 
					            supportingFiles.add(new SupportingFile("apiException.mustache", invokerFolder, "ApiException.java"));
 | 
				
			||||||
 | 
				
			|||||||
@ -1,12 +1,22 @@
 | 
				
			|||||||
package {{invokerPackage}};
 | 
					package {{invokerPackage}};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.LinkedHashMap;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.apache.oltu.oauth2.client.request.OAuthClientRequest.AuthenticationRequestBuilder;
 | 
				
			||||||
 | 
					import org.apache.oltu.oauth2.client.request.OAuthClientRequest.TokenRequestBuilder;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.fasterxml.jackson.databind.DeserializationFeature;
 | 
					import com.fasterxml.jackson.databind.DeserializationFeature;
 | 
				
			||||||
import com.fasterxml.jackson.databind.ObjectMapper;
 | 
					import com.fasterxml.jackson.databind.ObjectMapper;
 | 
				
			||||||
import com.fasterxml.jackson.databind.SerializationFeature;
 | 
					import com.fasterxml.jackson.databind.SerializationFeature;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import feign.Feign;
 | 
					import feign.Feign;
 | 
				
			||||||
 | 
					import feign.RequestInterceptor;
 | 
				
			||||||
import feign.jackson.JacksonDecoder;
 | 
					import feign.jackson.JacksonDecoder;
 | 
				
			||||||
import feign.jackson.JacksonEncoder;
 | 
					import feign.jackson.JacksonEncoder;
 | 
				
			||||||
import feign.slf4j.Slf4jLogger;
 | 
					import feign.slf4j.Slf4jLogger;
 | 
				
			||||||
 | 
					import {{invokerPackage}}.auth.*;
 | 
				
			||||||
 | 
					import {{invokerPackage}}.auth.OAuth.AccessTokenListener;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{{>generatedAnnotation}}
 | 
					{{>generatedAnnotation}}
 | 
				
			||||||
public class ApiClient {
 | 
					public class ApiClient {
 | 
				
			||||||
@ -14,11 +24,80 @@ public class ApiClient {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  private ObjectMapper objectMapper;
 | 
					  private ObjectMapper objectMapper;
 | 
				
			||||||
  private String basePath = "{{basePath}}";
 | 
					  private String basePath = "{{basePath}}";
 | 
				
			||||||
 | 
					  private Map<String, RequestInterceptor> apiAuthorizations;
 | 
				
			||||||
 | 
					  private Feign.Builder feignBuilder;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public ApiClient() {
 | 
					  public ApiClient() {
 | 
				
			||||||
    objectMapper = createObjectMapper();
 | 
					    objectMapper = createObjectMapper();
 | 
				
			||||||
 | 
					    apiAuthorizations = new LinkedHashMap<String, RequestInterceptor>();
 | 
				
			||||||
 | 
					    feignBuilder = Feign.builder()
 | 
				
			||||||
 | 
					                .encoder(new FormAwareEncoder(new JacksonEncoder(objectMapper)))
 | 
				
			||||||
 | 
					                .decoder(new JacksonDecoder(objectMapper))
 | 
				
			||||||
 | 
					                .logger(new Slf4jLogger());
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public ApiClient(String[] authNames) {
 | 
				
			||||||
 | 
					    this();
 | 
				
			||||||
 | 
					    for(String authName : authNames) { {{#hasAuthMethods}}
 | 
				
			||||||
 | 
					      RequestInterceptor auth;
 | 
				
			||||||
 | 
					      {{#authMethods}}if (authName == "{{name}}") { {{#isBasic}}
 | 
				
			||||||
 | 
					        auth = new HttpBasicAuth();{{/isBasic}}{{#isApiKey}}
 | 
				
			||||||
 | 
					        auth = new ApiKeyAuth({{#isKeyInHeader}}"header"{{/isKeyInHeader}}{{^isKeyInHeader}}"query"{{/isKeyInHeader}}, "{{keyParamName}}");{{/isApiKey}}{{#isOAuth}}
 | 
				
			||||||
 | 
					        auth = new OAuth(OAuthFlow.{{flow}}, "{{authorizationUrl}}", "{{tokenUrl}}", "{{#scopes}}{{scope}}{{#hasMore}}, {{/hasMore}}{{/scopes}}");{{/isOAuth}}
 | 
				
			||||||
 | 
					      } else {{/authMethods}}{
 | 
				
			||||||
 | 
					        throw new RuntimeException("auth name \"" + authName + "\" not found in available auth names");
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      addAuthorization(authName, auth);{{/hasAuthMethods}}{{^hasAuthMethods}}
 | 
				
			||||||
 | 
					      throw new RuntimeException("auth name \"" + authName + "\" not found in available auth names");{{/hasAuthMethods}}
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Basic constructor for single auth name
 | 
				
			||||||
 | 
					   * @param authName
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public ApiClient(String authName) {
 | 
				
			||||||
 | 
					    this(new String[]{authName});
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Helper constructor for single api key
 | 
				
			||||||
 | 
					   * @param authName
 | 
				
			||||||
 | 
					   * @param apiKey
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public ApiClient(String authName, String apiKey) {
 | 
				
			||||||
 | 
					    this(authName);
 | 
				
			||||||
 | 
					    this.setApiKey(apiKey);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Helper constructor for single basic auth or password oauth2
 | 
				
			||||||
 | 
					   * @param authName
 | 
				
			||||||
 | 
					   * @param username
 | 
				
			||||||
 | 
					   * @param password
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public ApiClient(String authName, String username, String password) {
 | 
				
			||||||
 | 
					    this(authName);
 | 
				
			||||||
 | 
					    this.setCredentials(username,  password);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Helper constructor for single password oauth2
 | 
				
			||||||
 | 
					   * @param authName
 | 
				
			||||||
 | 
					   * @param clientId
 | 
				
			||||||
 | 
					   * @param secret
 | 
				
			||||||
 | 
					   * @param username
 | 
				
			||||||
 | 
					   * @param password
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					   public ApiClient(String authName, String clientId, String secret, String username, String password) {
 | 
				
			||||||
 | 
					     this(authName);
 | 
				
			||||||
 | 
					     this.getTokenEndPoint()
 | 
				
			||||||
 | 
					            .setClientId(clientId)
 | 
				
			||||||
 | 
					            .setClientSecret(secret)
 | 
				
			||||||
 | 
					            .setUsername(username)
 | 
				
			||||||
 | 
					            .setPassword(password);
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public String getBasePath() {
 | 
					  public String getBasePath() {
 | 
				
			||||||
    return basePath;
 | 
					    return basePath;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@ -28,6 +107,23 @@ public class ApiClient {
 | 
				
			|||||||
    return this;
 | 
					    return this;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public Map<String, RequestInterceptor> getApiAuthorizations() {
 | 
				
			||||||
 | 
					    return apiAuthorizations;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public void setApiAuthorizations(Map<String, RequestInterceptor> apiAuthorizations) {
 | 
				
			||||||
 | 
					    this.apiAuthorizations = apiAuthorizations;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public Feign.Builder getFeignBuilder() {
 | 
				
			||||||
 | 
					    return feignBuilder;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public ApiClient setFeignBuilder(Feign.Builder feignBuilder) {
 | 
				
			||||||
 | 
					    this.feignBuilder = feignBuilder;
 | 
				
			||||||
 | 
					    return this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  private ObjectMapper createObjectMapper() {
 | 
					  private ObjectMapper createObjectMapper() {
 | 
				
			||||||
    ObjectMapper objectMapper = new ObjectMapper();
 | 
					    ObjectMapper objectMapper = new ObjectMapper();
 | 
				
			||||||
    objectMapper.enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING);
 | 
					    objectMapper.enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING);
 | 
				
			||||||
@ -45,13 +141,7 @@ public class ApiClient {
 | 
				
			|||||||
   *    XYZResponse response = api.someMethod(...);
 | 
					   *    XYZResponse response = api.someMethod(...);
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  public <T extends Api> T buildClient(Class<T> clientClass) {
 | 
					  public <T extends Api> T buildClient(Class<T> clientClass) {
 | 
				
			||||||
        return Feign.builder()
 | 
					    return feignBuilder.target(clientClass, basePath);
 | 
				
			||||||
                .encoder(new FormAwareEncoder(new JacksonEncoder(objectMapper)))
 | 
					 | 
				
			||||||
                .decoder(new JacksonDecoder(objectMapper))
 | 
					 | 
				
			||||||
// enable for basic auth:
 | 
					 | 
				
			||||||
//                .requestInterceptor(new feign.auth.BasicAuthRequestInterceptor(username, password))
 | 
					 | 
				
			||||||
                .logger(new Slf4jLogger())
 | 
					 | 
				
			||||||
                .target(clientClass, basePath);
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
@ -83,4 +173,137 @@ public class ApiClient {
 | 
				
			|||||||
    if (StringUtil.containsIgnoreCase(contentTypes, "application/json")) return "application/json";
 | 
					    if (StringUtil.containsIgnoreCase(contentTypes, "application/json")) return "application/json";
 | 
				
			||||||
    return contentTypes[0];
 | 
					    return contentTypes[0];
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Helper method to configure the first api key found
 | 
				
			||||||
 | 
					   * @param apiKey
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public void setApiKey(String apiKey) {
 | 
				
			||||||
 | 
					    for(RequestInterceptor apiAuthorization : apiAuthorizations.values()) {
 | 
				
			||||||
 | 
					      if (apiAuthorization instanceof ApiKeyAuth) {
 | 
				
			||||||
 | 
					        ApiKeyAuth keyAuth = (ApiKeyAuth) apiAuthorization;
 | 
				
			||||||
 | 
					        keyAuth.setApiKey(apiKey);
 | 
				
			||||||
 | 
					        return ;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    throw new RuntimeException("No API key authentication configured!");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Helper method to configure the username/password for basic auth or password OAuth
 | 
				
			||||||
 | 
					   * @param username
 | 
				
			||||||
 | 
					   * @param password
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public void setCredentials(String username, String password) {
 | 
				
			||||||
 | 
					    for(RequestInterceptor apiAuthorization : apiAuthorizations.values()) {
 | 
				
			||||||
 | 
					      if (apiAuthorization instanceof HttpBasicAuth) {
 | 
				
			||||||
 | 
					        HttpBasicAuth basicAuth = (HttpBasicAuth) apiAuthorization;
 | 
				
			||||||
 | 
					        basicAuth.setCredentials(username, password);
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      if (apiAuthorization instanceof OAuth) {
 | 
				
			||||||
 | 
					        OAuth oauth = (OAuth) apiAuthorization;
 | 
				
			||||||
 | 
					        oauth.getTokenRequestBuilder().setUsername(username).setPassword(password);
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    throw new RuntimeException("No Basic authentication or OAuth configured!");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Helper method to configure the token endpoint of the first oauth found in the apiAuthorizations (there should be only one)
 | 
				
			||||||
 | 
					   * @return
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public TokenRequestBuilder getTokenEndPoint() {
 | 
				
			||||||
 | 
					    for(RequestInterceptor apiAuthorization : apiAuthorizations.values()) {
 | 
				
			||||||
 | 
					      if (apiAuthorization instanceof OAuth) {
 | 
				
			||||||
 | 
					        OAuth oauth = (OAuth) apiAuthorization;
 | 
				
			||||||
 | 
					        return oauth.getTokenRequestBuilder();
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return null;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Helper method to configure authorization endpoint of the first oauth found in the apiAuthorizations (there should be only one)
 | 
				
			||||||
 | 
					   * @return
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public AuthenticationRequestBuilder getAuthorizationEndPoint() {
 | 
				
			||||||
 | 
					    for(RequestInterceptor apiAuthorization : apiAuthorizations.values()) {
 | 
				
			||||||
 | 
					      if (apiAuthorization instanceof OAuth) {
 | 
				
			||||||
 | 
					        OAuth oauth = (OAuth) apiAuthorization;
 | 
				
			||||||
 | 
					        return oauth.getAuthenticationRequestBuilder();
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return null;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Helper method to pre-set the oauth access token of the first oauth found in the apiAuthorizations (there should be only one)
 | 
				
			||||||
 | 
					   * @param accessToken
 | 
				
			||||||
 | 
					   * @param expiresIn : validity period in seconds
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public void setAccessToken(String accessToken, Long expiresIn) {
 | 
				
			||||||
 | 
					    for(RequestInterceptor apiAuthorization : apiAuthorizations.values()) {
 | 
				
			||||||
 | 
					      if (apiAuthorization instanceof OAuth) {
 | 
				
			||||||
 | 
					        OAuth oauth = (OAuth) apiAuthorization;
 | 
				
			||||||
 | 
					        oauth.setAccessToken(accessToken, expiresIn);
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Helper method to configure the oauth accessCode/implicit flow parameters
 | 
				
			||||||
 | 
					   * @param clientId
 | 
				
			||||||
 | 
					   * @param clientSecret
 | 
				
			||||||
 | 
					   * @param redirectURI
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public void configureAuthorizationFlow(String clientId, String clientSecret, String redirectURI) {
 | 
				
			||||||
 | 
					    for(RequestInterceptor apiAuthorization : apiAuthorizations.values()) {
 | 
				
			||||||
 | 
					      if (apiAuthorization instanceof OAuth) {
 | 
				
			||||||
 | 
					        OAuth oauth = (OAuth) apiAuthorization;
 | 
				
			||||||
 | 
					        oauth.getTokenRequestBuilder()
 | 
				
			||||||
 | 
					                .setClientId(clientId)
 | 
				
			||||||
 | 
					                .setClientSecret(clientSecret)
 | 
				
			||||||
 | 
					                .setRedirectURI(redirectURI);
 | 
				
			||||||
 | 
					        oauth.getAuthenticationRequestBuilder()
 | 
				
			||||||
 | 
					                .setClientId(clientId)
 | 
				
			||||||
 | 
					                .setRedirectURI(redirectURI);
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Configures a listener which is notified when a new access token is received.
 | 
				
			||||||
 | 
					   * @param accessTokenListener
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public void registerAccessTokenListener(AccessTokenListener accessTokenListener) {
 | 
				
			||||||
 | 
					    for(RequestInterceptor apiAuthorization : apiAuthorizations.values()) {
 | 
				
			||||||
 | 
					      if (apiAuthorization instanceof OAuth) {
 | 
				
			||||||
 | 
					        OAuth oauth = (OAuth) apiAuthorization;
 | 
				
			||||||
 | 
					        oauth.registerAccessTokenListener(accessTokenListener);
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public RequestInterceptor getAuthorization(String authName) {
 | 
				
			||||||
 | 
					    return apiAuthorizations.get(authName);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Adds an authorization to be used by the client
 | 
				
			||||||
 | 
					   * @param authName
 | 
				
			||||||
 | 
					   * @param authorization
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public void addAuthorization(String authName, RequestInterceptor authorization) {
 | 
				
			||||||
 | 
					    if (apiAuthorizations.containsKey(authName)) {
 | 
				
			||||||
 | 
					      throw new RuntimeException("auth name \"" + authName + "\" already in api authorizations");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    apiAuthorizations.put(authName, authorization);
 | 
				
			||||||
 | 
					    feignBuilder.requestInterceptor(authorization);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,41 @@
 | 
				
			|||||||
 | 
					package {{invokerPackage}}.auth;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import feign.RequestInterceptor;
 | 
				
			||||||
 | 
					import feign.RequestTemplate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class ApiKeyAuth implements RequestInterceptor {
 | 
				
			||||||
 | 
					    private final String location;
 | 
				
			||||||
 | 
					    private final String paramName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private String apiKey;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public ApiKeyAuth(String location, String paramName) {
 | 
				
			||||||
 | 
					        this.location = location;
 | 
				
			||||||
 | 
					        this.paramName = paramName;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getLocation() {
 | 
				
			||||||
 | 
					        return location;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getParamName() {
 | 
				
			||||||
 | 
					        return paramName;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getApiKey() {
 | 
				
			||||||
 | 
					        return apiKey;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setApiKey(String apiKey) {
 | 
				
			||||||
 | 
					        this.apiKey = apiKey;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void apply(RequestTemplate template) {
 | 
				
			||||||
 | 
					        if (location == "query") {
 | 
				
			||||||
 | 
					            template.query(paramName, apiKey);
 | 
				
			||||||
 | 
					        } else if (location == "header") {
 | 
				
			||||||
 | 
					            template.header(paramName, apiKey);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,41 @@
 | 
				
			|||||||
 | 
					package {{invokerPackage}}.auth;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import feign.RequestInterceptor;
 | 
				
			||||||
 | 
					import feign.RequestTemplate;
 | 
				
			||||||
 | 
					import feign.auth.BasicAuthRequestInterceptor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * An interceptor that adds the request header needed to use HTTP basic authentication.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public class HttpBasicAuth implements RequestInterceptor {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private String username;
 | 
				
			||||||
 | 
					    private String password;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    public String getUsername() {
 | 
				
			||||||
 | 
					        return username;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setUsername(String username) {
 | 
				
			||||||
 | 
					        this.username = username;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getPassword() {
 | 
				
			||||||
 | 
					        return password;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setPassword(String password) {
 | 
				
			||||||
 | 
					        this.password = password;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setCredentials(String username, String password) {
 | 
				
			||||||
 | 
					        this.username = username;
 | 
				
			||||||
 | 
					        this.password = password;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @Override
 | 
				
			||||||
 | 
					  public void apply(RequestTemplate template) {
 | 
				
			||||||
 | 
					      RequestInterceptor requestInterceptor = new BasicAuthRequestInterceptor(username, password);
 | 
				
			||||||
 | 
					      requestInterceptor.apply(template);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,203 @@
 | 
				
			|||||||
 | 
					package {{invokerPackage}}.auth;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.IOException;
 | 
				
			||||||
 | 
					import java.util.Collection;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					import java.util.Map.Entry;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.apache.oltu.oauth2.client.HttpClient;
 | 
				
			||||||
 | 
					import org.apache.oltu.oauth2.client.OAuthClient;
 | 
				
			||||||
 | 
					import org.apache.oltu.oauth2.client.request.OAuthClientRequest;
 | 
				
			||||||
 | 
					import org.apache.oltu.oauth2.client.request.OAuthClientRequest.AuthenticationRequestBuilder;
 | 
				
			||||||
 | 
					import org.apache.oltu.oauth2.client.request.OAuthClientRequest.TokenRequestBuilder;
 | 
				
			||||||
 | 
					import org.apache.oltu.oauth2.client.response.OAuthClientResponse;
 | 
				
			||||||
 | 
					import org.apache.oltu.oauth2.client.response.OAuthClientResponseFactory;
 | 
				
			||||||
 | 
					import org.apache.oltu.oauth2.client.response.OAuthJSONAccessTokenResponse;
 | 
				
			||||||
 | 
					import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
 | 
				
			||||||
 | 
					import org.apache.oltu.oauth2.common.exception.OAuthSystemException;
 | 
				
			||||||
 | 
					import org.apache.oltu.oauth2.common.message.types.GrantType;
 | 
				
			||||||
 | 
					import org.apache.oltu.oauth2.common.token.BasicOAuthToken;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import feign.Client;
 | 
				
			||||||
 | 
					import feign.Request.Options;
 | 
				
			||||||
 | 
					import feign.RequestInterceptor;
 | 
				
			||||||
 | 
					import feign.RequestTemplate;
 | 
				
			||||||
 | 
					import feign.Response;
 | 
				
			||||||
 | 
					import feign.Util;
 | 
				
			||||||
 | 
					import {{invokerPackage}}.StringUtil;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class OAuth implements RequestInterceptor {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public interface AccessTokenListener {
 | 
				
			||||||
 | 
					        public void notify(BasicOAuthToken token);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private volatile String accessToken;
 | 
				
			||||||
 | 
					    private Long expirationTimeMillis;
 | 
				
			||||||
 | 
					    private OAuthClient oauthClient;
 | 
				
			||||||
 | 
					    private TokenRequestBuilder tokenRequestBuilder;
 | 
				
			||||||
 | 
					    private AuthenticationRequestBuilder authenticationRequestBuilder;
 | 
				
			||||||
 | 
					    private AccessTokenListener accessTokenListener;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public OAuth(Client client, TokenRequestBuilder requestBuilder) {
 | 
				
			||||||
 | 
					        setOauthClient(client);
 | 
				
			||||||
 | 
					        this.tokenRequestBuilder = requestBuilder;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public OAuth(Client client, OAuthFlow flow, String authorizationUrl, String tokenUrl, String scopes) {
 | 
				
			||||||
 | 
					        this(client, OAuthClientRequest.tokenLocation(tokenUrl).setScope(scopes));
 | 
				
			||||||
 | 
					        setFlow(flow);
 | 
				
			||||||
 | 
					        authenticationRequestBuilder = OAuthClientRequest.authorizationLocation(authorizationUrl);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public OAuth(OAuthFlow flow, String authorizationUrl, String tokenUrl, String scopes) {
 | 
				
			||||||
 | 
					        this(new Client.Default(null, null), flow, authorizationUrl, tokenUrl, scopes);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setFlow(OAuthFlow flow) {
 | 
				
			||||||
 | 
					        switch(flow) {
 | 
				
			||||||
 | 
					        case accessCode:
 | 
				
			||||||
 | 
					        case implicit:
 | 
				
			||||||
 | 
					            tokenRequestBuilder.setGrantType(GrantType.AUTHORIZATION_CODE);
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        case password:
 | 
				
			||||||
 | 
					            tokenRequestBuilder.setGrantType(GrantType.PASSWORD);
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        case application:
 | 
				
			||||||
 | 
					            tokenRequestBuilder.setGrantType(GrantType.CLIENT_CREDENTIALS);
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        default:
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void apply(RequestTemplate template) {
 | 
				
			||||||
 | 
					        // If the request already have an authorization (eg. Basic auth), do nothing
 | 
				
			||||||
 | 
					        if (template.headers().containsKey("Authorization")) {
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        // If first time, get the token
 | 
				
			||||||
 | 
					        if (expirationTimeMillis == null || System.currentTimeMillis() >= expirationTimeMillis) {
 | 
				
			||||||
 | 
					            try {
 | 
				
			||||||
 | 
					                updateAccessToken();
 | 
				
			||||||
 | 
					            } catch (OAuthSystemException e) {
 | 
				
			||||||
 | 
					                e.printStackTrace();
 | 
				
			||||||
 | 
					                return;
 | 
				
			||||||
 | 
					            } catch (OAuthProblemException e) {
 | 
				
			||||||
 | 
					                e.printStackTrace();
 | 
				
			||||||
 | 
					                return;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (getAccessToken() != null) {
 | 
				
			||||||
 | 
					            template.header("Authorization", "Bearer " + getAccessToken());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public synchronized void updateAccessToken() throws OAuthSystemException, OAuthProblemException {
 | 
				
			||||||
 | 
					        if (getAccessToken() == null) {
 | 
				
			||||||
 | 
					            OAuthJSONAccessTokenResponse accessTokenResponse = oauthClient.accessToken(tokenRequestBuilder.buildBodyMessage());
 | 
				
			||||||
 | 
					            if (accessTokenResponse != null && accessTokenResponse.getAccessToken() != null) {
 | 
				
			||||||
 | 
					                setAccessToken(accessTokenResponse.getAccessToken(), accessTokenResponse.getExpiresIn());
 | 
				
			||||||
 | 
					                if (accessTokenListener != null) {
 | 
				
			||||||
 | 
					                    accessTokenListener.notify((BasicOAuthToken) accessTokenResponse.getOAuthToken());
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void registerAccessTokenListener(AccessTokenListener accessTokenListener) {
 | 
				
			||||||
 | 
					        this.accessTokenListener = accessTokenListener;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public synchronized String getAccessToken() {
 | 
				
			||||||
 | 
					        return accessToken;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public synchronized void setAccessToken(String accessToken, Long expiresIn) {
 | 
				
			||||||
 | 
					        this.accessToken = accessToken;
 | 
				
			||||||
 | 
					        this.expirationTimeMillis = System.currentTimeMillis() + expiresIn * 1000;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public TokenRequestBuilder getTokenRequestBuilder() {
 | 
				
			||||||
 | 
					        return tokenRequestBuilder;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setTokenRequestBuilder(TokenRequestBuilder tokenRequestBuilder) {
 | 
				
			||||||
 | 
					        this.tokenRequestBuilder = tokenRequestBuilder;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public AuthenticationRequestBuilder getAuthenticationRequestBuilder() {
 | 
				
			||||||
 | 
					        return authenticationRequestBuilder;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setAuthenticationRequestBuilder(AuthenticationRequestBuilder authenticationRequestBuilder) {
 | 
				
			||||||
 | 
					        this.authenticationRequestBuilder = authenticationRequestBuilder;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public OAuthClient getOauthClient() {
 | 
				
			||||||
 | 
					        return oauthClient;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setOauthClient(OAuthClient oauthClient) {
 | 
				
			||||||
 | 
					        this.oauthClient = oauthClient;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setOauthClient(Client client) {
 | 
				
			||||||
 | 
					        this.oauthClient = new OAuthClient( new OAuthFeignClient(client));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public class OAuthFeignClient implements HttpClient {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private Client client;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public OAuthFeignClient() {
 | 
				
			||||||
 | 
					            this.client = new Client.Default(null, null);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public OAuthFeignClient(Client client) {
 | 
				
			||||||
 | 
					            this.client = client;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public <T extends OAuthClientResponse> T execute(OAuthClientRequest request, Map<String, String> headers,
 | 
				
			||||||
 | 
					                String requestMethod, Class<T> responseClass)
 | 
				
			||||||
 | 
					                        throws OAuthSystemException, OAuthProblemException {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            RequestTemplate req = new RequestTemplate()
 | 
				
			||||||
 | 
					                    .append(request.getLocationUri())
 | 
				
			||||||
 | 
					                    .method(requestMethod)
 | 
				
			||||||
 | 
					                    .body(request.getBody());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            for (Entry<String, String> entry : headers.entrySet()) {
 | 
				
			||||||
 | 
					                req.header(entry.getKey(), entry.getValue());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            Response feignResponse;
 | 
				
			||||||
 | 
					            String body = "";
 | 
				
			||||||
 | 
					            try {
 | 
				
			||||||
 | 
					                feignResponse = client.execute(req.request(), new Options());
 | 
				
			||||||
 | 
					                body = Util.toString(feignResponse.body().asReader());
 | 
				
			||||||
 | 
					            } catch (IOException e) {
 | 
				
			||||||
 | 
					                throw new OAuthSystemException(e);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            String contentType = null;
 | 
				
			||||||
 | 
					            Collection<String> contentTypeHeader =  feignResponse.headers().get("Content-Type");
 | 
				
			||||||
 | 
					            if(contentTypeHeader != null) {
 | 
				
			||||||
 | 
					                contentType = StringUtil.join(contentTypeHeader.toArray(new String[0]), ";");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return OAuthClientResponseFactory.createCustomResponse(
 | 
				
			||||||
 | 
					                    body,
 | 
				
			||||||
 | 
					                    contentType,
 | 
				
			||||||
 | 
					                    feignResponse.status(),
 | 
				
			||||||
 | 
					                    responseClass
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void shutdown() {
 | 
				
			||||||
 | 
					            // Nothing to do here
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -164,6 +164,12 @@
 | 
				
			|||||||
      <version>2.2</version>
 | 
					      <version>2.2</version>
 | 
				
			||||||
    </dependency>
 | 
					    </dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <dependency>
 | 
				
			||||||
 | 
					      <groupId>org.apache.oltu.oauth2</groupId>
 | 
				
			||||||
 | 
					      <artifactId>org.apache.oltu.oauth2.client</artifactId>
 | 
				
			||||||
 | 
					      <version>${oltu-version}</version>
 | 
				
			||||||
 | 
					    </dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <!-- test dependencies -->
 | 
					    <!-- test dependencies -->
 | 
				
			||||||
    <dependency>
 | 
					    <dependency>
 | 
				
			||||||
      <groupId>junit</groupId>
 | 
					      <groupId>junit</groupId>
 | 
				
			||||||
@ -179,5 +185,6 @@
 | 
				
			|||||||
    <jodatime-version>2.5</jodatime-version>
 | 
					    <jodatime-version>2.5</jodatime-version>
 | 
				
			||||||
    <junit-version>4.12</junit-version>
 | 
					    <junit-version>4.12</junit-version>
 | 
				
			||||||
    <maven-plugin-version>1.0.0</maven-plugin-version>
 | 
					    <maven-plugin-version>1.0.0</maven-plugin-version>
 | 
				
			||||||
 | 
					    <oltu-version>1.0.0</oltu-version>
 | 
				
			||||||
  </properties>
 | 
					  </properties>
 | 
				
			||||||
</project>
 | 
					</project>
 | 
				
			||||||
 | 
				
			|||||||
@ -164,6 +164,12 @@
 | 
				
			|||||||
      <version>2.2</version>
 | 
					      <version>2.2</version>
 | 
				
			||||||
    </dependency>
 | 
					    </dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <dependency>
 | 
				
			||||||
 | 
					      <groupId>org.apache.oltu.oauth2</groupId>
 | 
				
			||||||
 | 
					      <artifactId>org.apache.oltu.oauth2.client</artifactId>
 | 
				
			||||||
 | 
					      <version>${oltu-version}</version>
 | 
				
			||||||
 | 
					    </dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <!-- test dependencies -->
 | 
					    <!-- test dependencies -->
 | 
				
			||||||
    <dependency>
 | 
					    <dependency>
 | 
				
			||||||
      <groupId>junit</groupId>
 | 
					      <groupId>junit</groupId>
 | 
				
			||||||
@ -179,5 +185,6 @@
 | 
				
			|||||||
    <jodatime-version>2.5</jodatime-version>
 | 
					    <jodatime-version>2.5</jodatime-version>
 | 
				
			||||||
    <junit-version>4.12</junit-version>
 | 
					    <junit-version>4.12</junit-version>
 | 
				
			||||||
    <maven-plugin-version>1.0.0</maven-plugin-version>
 | 
					    <maven-plugin-version>1.0.0</maven-plugin-version>
 | 
				
			||||||
 | 
					    <oltu-version>1.0.0</oltu-version>
 | 
				
			||||||
  </properties>
 | 
					  </properties>
 | 
				
			||||||
</project>
 | 
					</project>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,24 +1,102 @@
 | 
				
			|||||||
package io.swagger.client;
 | 
					package io.swagger.client;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.LinkedHashMap;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.apache.oltu.oauth2.client.request.OAuthClientRequest.AuthenticationRequestBuilder;
 | 
				
			||||||
 | 
					import org.apache.oltu.oauth2.client.request.OAuthClientRequest.TokenRequestBuilder;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.fasterxml.jackson.databind.DeserializationFeature;
 | 
					import com.fasterxml.jackson.databind.DeserializationFeature;
 | 
				
			||||||
import com.fasterxml.jackson.databind.ObjectMapper;
 | 
					import com.fasterxml.jackson.databind.ObjectMapper;
 | 
				
			||||||
import com.fasterxml.jackson.databind.SerializationFeature;
 | 
					import com.fasterxml.jackson.databind.SerializationFeature;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import feign.Feign;
 | 
					import feign.Feign;
 | 
				
			||||||
 | 
					import feign.RequestInterceptor;
 | 
				
			||||||
import feign.jackson.JacksonDecoder;
 | 
					import feign.jackson.JacksonDecoder;
 | 
				
			||||||
import feign.jackson.JacksonEncoder;
 | 
					import feign.jackson.JacksonEncoder;
 | 
				
			||||||
import feign.slf4j.Slf4jLogger;
 | 
					import feign.slf4j.Slf4jLogger;
 | 
				
			||||||
 | 
					import io.swagger.client.auth.*;
 | 
				
			||||||
 | 
					import io.swagger.client.auth.OAuth.AccessTokenListener;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-05T14:39:18.888+08:00")
 | 
					@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-11T21:48:33.457Z")
 | 
				
			||||||
public class ApiClient {
 | 
					public class ApiClient {
 | 
				
			||||||
  public interface Api {}
 | 
					  public interface Api {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  private ObjectMapper objectMapper;
 | 
					  private ObjectMapper objectMapper;
 | 
				
			||||||
  private String basePath = "http://petstore.swagger.io/v2";
 | 
					  private String basePath = "http://petstore.swagger.io/v2";
 | 
				
			||||||
 | 
					  private Map<String, RequestInterceptor> apiAuthorizations;
 | 
				
			||||||
 | 
					  private Feign.Builder feignBuilder;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public ApiClient() {
 | 
					  public ApiClient() {
 | 
				
			||||||
    objectMapper = createObjectMapper();
 | 
					    objectMapper = createObjectMapper();
 | 
				
			||||||
 | 
					    apiAuthorizations = new LinkedHashMap<String, RequestInterceptor>();
 | 
				
			||||||
 | 
					    feignBuilder = Feign.builder()
 | 
				
			||||||
 | 
					                .encoder(new FormAwareEncoder(new JacksonEncoder(objectMapper)))
 | 
				
			||||||
 | 
					                .decoder(new JacksonDecoder(objectMapper))
 | 
				
			||||||
 | 
					                .logger(new Slf4jLogger());
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public ApiClient(String[] authNames) {
 | 
				
			||||||
 | 
					    this();
 | 
				
			||||||
 | 
					    for(String authName : authNames) { 
 | 
				
			||||||
 | 
					      RequestInterceptor auth;
 | 
				
			||||||
 | 
					      if (authName == "petstore_auth") { 
 | 
				
			||||||
 | 
					        auth = new OAuth(OAuthFlow.implicit, "http://petstore.swagger.io/api/oauth/dialog", "", "write:pets, read:pets");
 | 
				
			||||||
 | 
					      } else if (authName == "api_key") { 
 | 
				
			||||||
 | 
					        auth = new ApiKeyAuth("header", "api_key");
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        throw new RuntimeException("auth name \"" + authName + "\" not found in available auth names");
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      addAuthorization(authName, auth);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Basic constructor for single auth name
 | 
				
			||||||
 | 
					   * @param authName
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public ApiClient(String authName) {
 | 
				
			||||||
 | 
					    this(new String[]{authName});
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Helper constructor for single api key
 | 
				
			||||||
 | 
					   * @param authName
 | 
				
			||||||
 | 
					   * @param apiKey
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public ApiClient(String authName, String apiKey) {
 | 
				
			||||||
 | 
					    this(authName);
 | 
				
			||||||
 | 
					    this.setApiKey(apiKey);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Helper constructor for single basic auth or password oauth2
 | 
				
			||||||
 | 
					   * @param authName
 | 
				
			||||||
 | 
					   * @param username
 | 
				
			||||||
 | 
					   * @param password
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public ApiClient(String authName, String username, String password) {
 | 
				
			||||||
 | 
					    this(authName);
 | 
				
			||||||
 | 
					    this.setCredentials(username,  password);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Helper constructor for single password oauth2
 | 
				
			||||||
 | 
					   * @param authName
 | 
				
			||||||
 | 
					   * @param clientId
 | 
				
			||||||
 | 
					   * @param secret
 | 
				
			||||||
 | 
					   * @param username
 | 
				
			||||||
 | 
					   * @param password
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					   public ApiClient(String authName, String clientId, String secret, String username, String password) {
 | 
				
			||||||
 | 
					     this(authName);
 | 
				
			||||||
 | 
					     this.getTokenEndPoint()
 | 
				
			||||||
 | 
					            .setClientId(clientId)
 | 
				
			||||||
 | 
					            .setClientSecret(secret)
 | 
				
			||||||
 | 
					            .setUsername(username)
 | 
				
			||||||
 | 
					            .setPassword(password);
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public String getBasePath() {
 | 
					  public String getBasePath() {
 | 
				
			||||||
    return basePath;
 | 
					    return basePath;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@ -28,6 +106,23 @@ public class ApiClient {
 | 
				
			|||||||
    return this;
 | 
					    return this;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public Map<String, RequestInterceptor> getApiAuthorizations() {
 | 
				
			||||||
 | 
					    return apiAuthorizations;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public void setApiAuthorizations(Map<String, RequestInterceptor> apiAuthorizations) {
 | 
				
			||||||
 | 
					    this.apiAuthorizations = apiAuthorizations;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public Feign.Builder getFeignBuilder() {
 | 
				
			||||||
 | 
					    return feignBuilder;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public ApiClient setFeignBuilder(Feign.Builder feignBuilder) {
 | 
				
			||||||
 | 
					    this.feignBuilder = feignBuilder;
 | 
				
			||||||
 | 
					    return this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  private ObjectMapper createObjectMapper() {
 | 
					  private ObjectMapper createObjectMapper() {
 | 
				
			||||||
    ObjectMapper objectMapper = new ObjectMapper();
 | 
					    ObjectMapper objectMapper = new ObjectMapper();
 | 
				
			||||||
    objectMapper.enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING);
 | 
					    objectMapper.enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING);
 | 
				
			||||||
@ -45,13 +140,7 @@ public class ApiClient {
 | 
				
			|||||||
   *    XYZResponse response = api.someMethod(...);
 | 
					   *    XYZResponse response = api.someMethod(...);
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  public <T extends Api> T buildClient(Class<T> clientClass) {
 | 
					  public <T extends Api> T buildClient(Class<T> clientClass) {
 | 
				
			||||||
        return Feign.builder()
 | 
					    return feignBuilder.target(clientClass, basePath);
 | 
				
			||||||
                .encoder(new FormAwareEncoder(new JacksonEncoder(objectMapper)))
 | 
					 | 
				
			||||||
                .decoder(new JacksonDecoder(objectMapper))
 | 
					 | 
				
			||||||
// enable for basic auth:
 | 
					 | 
				
			||||||
//                .requestInterceptor(new feign.auth.BasicAuthRequestInterceptor(username, password))
 | 
					 | 
				
			||||||
                .logger(new Slf4jLogger())
 | 
					 | 
				
			||||||
                .target(clientClass, basePath);
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
@ -83,4 +172,137 @@ public class ApiClient {
 | 
				
			|||||||
    if (StringUtil.containsIgnoreCase(contentTypes, "application/json")) return "application/json";
 | 
					    if (StringUtil.containsIgnoreCase(contentTypes, "application/json")) return "application/json";
 | 
				
			||||||
    return contentTypes[0];
 | 
					    return contentTypes[0];
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Helper method to configure the first api key found
 | 
				
			||||||
 | 
					   * @param apiKey
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public void setApiKey(String apiKey) {
 | 
				
			||||||
 | 
					    for(RequestInterceptor apiAuthorization : apiAuthorizations.values()) {
 | 
				
			||||||
 | 
					      if (apiAuthorization instanceof ApiKeyAuth) {
 | 
				
			||||||
 | 
					        ApiKeyAuth keyAuth = (ApiKeyAuth) apiAuthorization;
 | 
				
			||||||
 | 
					        keyAuth.setApiKey(apiKey);
 | 
				
			||||||
 | 
					        return ;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    throw new RuntimeException("No API key authentication configured!");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Helper method to configure the username/password for basic auth or password OAuth
 | 
				
			||||||
 | 
					   * @param username
 | 
				
			||||||
 | 
					   * @param password
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public void setCredentials(String username, String password) {
 | 
				
			||||||
 | 
					    for(RequestInterceptor apiAuthorization : apiAuthorizations.values()) {
 | 
				
			||||||
 | 
					      if (apiAuthorization instanceof HttpBasicAuth) {
 | 
				
			||||||
 | 
					        HttpBasicAuth basicAuth = (HttpBasicAuth) apiAuthorization;
 | 
				
			||||||
 | 
					        basicAuth.setCredentials(username, password);
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      if (apiAuthorization instanceof OAuth) {
 | 
				
			||||||
 | 
					        OAuth oauth = (OAuth) apiAuthorization;
 | 
				
			||||||
 | 
					        oauth.getTokenRequestBuilder().setUsername(username).setPassword(password);
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    throw new RuntimeException("No Basic authentication or OAuth configured!");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Helper method to configure the token endpoint of the first oauth found in the apiAuthorizations (there should be only one)
 | 
				
			||||||
 | 
					   * @return
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public TokenRequestBuilder getTokenEndPoint() {
 | 
				
			||||||
 | 
					    for(RequestInterceptor apiAuthorization : apiAuthorizations.values()) {
 | 
				
			||||||
 | 
					      if (apiAuthorization instanceof OAuth) {
 | 
				
			||||||
 | 
					        OAuth oauth = (OAuth) apiAuthorization;
 | 
				
			||||||
 | 
					        return oauth.getTokenRequestBuilder();
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return null;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Helper method to configure authorization endpoint of the first oauth found in the apiAuthorizations (there should be only one)
 | 
				
			||||||
 | 
					   * @return
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public AuthenticationRequestBuilder getAuthorizationEndPoint() {
 | 
				
			||||||
 | 
					    for(RequestInterceptor apiAuthorization : apiAuthorizations.values()) {
 | 
				
			||||||
 | 
					      if (apiAuthorization instanceof OAuth) {
 | 
				
			||||||
 | 
					        OAuth oauth = (OAuth) apiAuthorization;
 | 
				
			||||||
 | 
					        return oauth.getAuthenticationRequestBuilder();
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return null;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Helper method to pre-set the oauth access token of the first oauth found in the apiAuthorizations (there should be only one)
 | 
				
			||||||
 | 
					   * @param accessToken
 | 
				
			||||||
 | 
					   * @param expiresIn : validity period in seconds
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public void setAccessToken(String accessToken, Long expiresIn) {
 | 
				
			||||||
 | 
					    for(RequestInterceptor apiAuthorization : apiAuthorizations.values()) {
 | 
				
			||||||
 | 
					      if (apiAuthorization instanceof OAuth) {
 | 
				
			||||||
 | 
					        OAuth oauth = (OAuth) apiAuthorization;
 | 
				
			||||||
 | 
					        oauth.setAccessToken(accessToken, expiresIn);
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Helper method to configure the oauth accessCode/implicit flow parameters
 | 
				
			||||||
 | 
					   * @param clientId
 | 
				
			||||||
 | 
					   * @param clientSecret
 | 
				
			||||||
 | 
					   * @param redirectURI
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public void configureAuthorizationFlow(String clientId, String clientSecret, String redirectURI) {
 | 
				
			||||||
 | 
					    for(RequestInterceptor apiAuthorization : apiAuthorizations.values()) {
 | 
				
			||||||
 | 
					      if (apiAuthorization instanceof OAuth) {
 | 
				
			||||||
 | 
					        OAuth oauth = (OAuth) apiAuthorization;
 | 
				
			||||||
 | 
					        oauth.getTokenRequestBuilder()
 | 
				
			||||||
 | 
					                .setClientId(clientId)
 | 
				
			||||||
 | 
					                .setClientSecret(clientSecret)
 | 
				
			||||||
 | 
					                .setRedirectURI(redirectURI);
 | 
				
			||||||
 | 
					        oauth.getAuthenticationRequestBuilder()
 | 
				
			||||||
 | 
					                .setClientId(clientId)
 | 
				
			||||||
 | 
					                .setRedirectURI(redirectURI);
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Configures a listener which is notified when a new access token is received.
 | 
				
			||||||
 | 
					   * @param accessTokenListener
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public void registerAccessTokenListener(AccessTokenListener accessTokenListener) {
 | 
				
			||||||
 | 
					    for(RequestInterceptor apiAuthorization : apiAuthorizations.values()) {
 | 
				
			||||||
 | 
					      if (apiAuthorization instanceof OAuth) {
 | 
				
			||||||
 | 
					        OAuth oauth = (OAuth) apiAuthorization;
 | 
				
			||||||
 | 
					        oauth.registerAccessTokenListener(accessTokenListener);
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public RequestInterceptor getAuthorization(String authName) {
 | 
				
			||||||
 | 
					    return apiAuthorizations.get(authName);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Adds an authorization to be used by the client
 | 
				
			||||||
 | 
					   * @param authName
 | 
				
			||||||
 | 
					   * @param authorization
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public void addAuthorization(String authName, RequestInterceptor authorization) {
 | 
				
			||||||
 | 
					    if (apiAuthorizations.containsKey(authName)) {
 | 
				
			||||||
 | 
					      throw new RuntimeException("auth name \"" + authName + "\" already in api authorizations");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    apiAuthorizations.put(authName, authorization);
 | 
				
			||||||
 | 
					    feignBuilder.requestInterceptor(authorization);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -14,7 +14,7 @@ import feign.codec.EncodeException;
 | 
				
			|||||||
import feign.codec.Encoder;
 | 
					import feign.codec.Encoder;
 | 
				
			||||||
import feign.RequestTemplate;
 | 
					import feign.RequestTemplate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-05T14:39:18.888+08:00")
 | 
					@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-11T21:48:33.457Z")
 | 
				
			||||||
public class FormAwareEncoder implements Encoder {
 | 
					public class FormAwareEncoder implements Encoder {
 | 
				
			||||||
  public static final String UTF_8 = "utf-8";
 | 
					  public static final String UTF_8 = "utf-8";
 | 
				
			||||||
  private static final String LINE_FEED = "\r\n";
 | 
					  private static final String LINE_FEED = "\r\n";
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
package io.swagger.client;
 | 
					package io.swagger.client;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-05T14:39:18.888+08:00")
 | 
					@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-11T21:48:33.457Z")
 | 
				
			||||||
public class StringUtil {
 | 
					public class StringUtil {
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * Check if the given array contains the given value (with case-insensitive comparison).
 | 
					   * Check if the given array contains the given value (with case-insensitive comparison).
 | 
				
			||||||
 | 
				
			|||||||
@ -8,7 +8,7 @@ import java.io.File;
 | 
				
			|||||||
import java.util.*;
 | 
					import java.util.*;
 | 
				
			||||||
import feign.*;
 | 
					import feign.*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-05T14:39:18.888+08:00")
 | 
					@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-11T21:48:33.457Z")
 | 
				
			||||||
public interface PetApi extends ApiClient.Api {
 | 
					public interface PetApi extends ApiClient.Api {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -8,7 +8,7 @@ import io.swagger.client.model.Order;
 | 
				
			|||||||
import java.util.*;
 | 
					import java.util.*;
 | 
				
			||||||
import feign.*;
 | 
					import feign.*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-05T14:39:18.888+08:00")
 | 
					@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-11T21:48:33.457Z")
 | 
				
			||||||
public interface StoreApi extends ApiClient.Api {
 | 
					public interface StoreApi extends ApiClient.Api {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -8,7 +8,7 @@ import java.util.*;
 | 
				
			|||||||
import java.util.*;
 | 
					import java.util.*;
 | 
				
			||||||
import feign.*;
 | 
					import feign.*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-05T14:39:18.888+08:00")
 | 
					@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-11T21:48:33.457Z")
 | 
				
			||||||
public interface UserApi extends ApiClient.Api {
 | 
					public interface UserApi extends ApiClient.Api {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,41 @@
 | 
				
			|||||||
 | 
					package io.swagger.client.auth;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import feign.RequestInterceptor;
 | 
				
			||||||
 | 
					import feign.RequestTemplate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class ApiKeyAuth implements RequestInterceptor {
 | 
				
			||||||
 | 
					    private final String location;
 | 
				
			||||||
 | 
					    private final String paramName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private String apiKey;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public ApiKeyAuth(String location, String paramName) {
 | 
				
			||||||
 | 
					        this.location = location;
 | 
				
			||||||
 | 
					        this.paramName = paramName;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getLocation() {
 | 
				
			||||||
 | 
					        return location;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getParamName() {
 | 
				
			||||||
 | 
					        return paramName;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getApiKey() {
 | 
				
			||||||
 | 
					        return apiKey;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setApiKey(String apiKey) {
 | 
				
			||||||
 | 
					        this.apiKey = apiKey;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void apply(RequestTemplate template) {
 | 
				
			||||||
 | 
					        if (location == "query") {
 | 
				
			||||||
 | 
					            template.query(paramName, apiKey);
 | 
				
			||||||
 | 
					        } else if (location == "header") {
 | 
				
			||||||
 | 
					            template.header(paramName, apiKey);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,41 @@
 | 
				
			|||||||
 | 
					package io.swagger.client.auth;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import feign.RequestInterceptor;
 | 
				
			||||||
 | 
					import feign.RequestTemplate;
 | 
				
			||||||
 | 
					import feign.auth.BasicAuthRequestInterceptor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * An interceptor that adds the request header needed to use HTTP basic authentication.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public class HttpBasicAuth implements RequestInterceptor {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private String username;
 | 
				
			||||||
 | 
					    private String password;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    public String getUsername() {
 | 
				
			||||||
 | 
					        return username;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setUsername(String username) {
 | 
				
			||||||
 | 
					        this.username = username;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getPassword() {
 | 
				
			||||||
 | 
					        return password;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setPassword(String password) {
 | 
				
			||||||
 | 
					        this.password = password;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setCredentials(String username, String password) {
 | 
				
			||||||
 | 
					        this.username = username;
 | 
				
			||||||
 | 
					        this.password = password;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @Override
 | 
				
			||||||
 | 
					  public void apply(RequestTemplate template) {
 | 
				
			||||||
 | 
					      RequestInterceptor requestInterceptor = new BasicAuthRequestInterceptor(username, password);
 | 
				
			||||||
 | 
					      requestInterceptor.apply(template);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,203 @@
 | 
				
			|||||||
 | 
					package io.swagger.client.auth;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.IOException;
 | 
				
			||||||
 | 
					import java.util.Collection;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					import java.util.Map.Entry;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.apache.oltu.oauth2.client.HttpClient;
 | 
				
			||||||
 | 
					import org.apache.oltu.oauth2.client.OAuthClient;
 | 
				
			||||||
 | 
					import org.apache.oltu.oauth2.client.request.OAuthClientRequest;
 | 
				
			||||||
 | 
					import org.apache.oltu.oauth2.client.request.OAuthClientRequest.AuthenticationRequestBuilder;
 | 
				
			||||||
 | 
					import org.apache.oltu.oauth2.client.request.OAuthClientRequest.TokenRequestBuilder;
 | 
				
			||||||
 | 
					import org.apache.oltu.oauth2.client.response.OAuthClientResponse;
 | 
				
			||||||
 | 
					import org.apache.oltu.oauth2.client.response.OAuthClientResponseFactory;
 | 
				
			||||||
 | 
					import org.apache.oltu.oauth2.client.response.OAuthJSONAccessTokenResponse;
 | 
				
			||||||
 | 
					import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
 | 
				
			||||||
 | 
					import org.apache.oltu.oauth2.common.exception.OAuthSystemException;
 | 
				
			||||||
 | 
					import org.apache.oltu.oauth2.common.message.types.GrantType;
 | 
				
			||||||
 | 
					import org.apache.oltu.oauth2.common.token.BasicOAuthToken;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import feign.Client;
 | 
				
			||||||
 | 
					import feign.Request.Options;
 | 
				
			||||||
 | 
					import feign.RequestInterceptor;
 | 
				
			||||||
 | 
					import feign.RequestTemplate;
 | 
				
			||||||
 | 
					import feign.Response;
 | 
				
			||||||
 | 
					import feign.Util;
 | 
				
			||||||
 | 
					import io.swagger.client.StringUtil;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class OAuth implements RequestInterceptor {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public interface AccessTokenListener {
 | 
				
			||||||
 | 
					        public void notify(BasicOAuthToken token);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private volatile String accessToken;
 | 
				
			||||||
 | 
					    private Long expirationTimeMillis;
 | 
				
			||||||
 | 
					    private OAuthClient oauthClient;
 | 
				
			||||||
 | 
					    private TokenRequestBuilder tokenRequestBuilder;
 | 
				
			||||||
 | 
					    private AuthenticationRequestBuilder authenticationRequestBuilder;
 | 
				
			||||||
 | 
					    private AccessTokenListener accessTokenListener;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public OAuth(Client client, TokenRequestBuilder requestBuilder) {
 | 
				
			||||||
 | 
					        setOauthClient(client);
 | 
				
			||||||
 | 
					        this.tokenRequestBuilder = requestBuilder;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public OAuth(Client client, OAuthFlow flow, String authorizationUrl, String tokenUrl, String scopes) {
 | 
				
			||||||
 | 
					        this(client, OAuthClientRequest.tokenLocation(tokenUrl).setScope(scopes));
 | 
				
			||||||
 | 
					        setFlow(flow);
 | 
				
			||||||
 | 
					        authenticationRequestBuilder = OAuthClientRequest.authorizationLocation(authorizationUrl);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public OAuth(OAuthFlow flow, String authorizationUrl, String tokenUrl, String scopes) {
 | 
				
			||||||
 | 
					        this(new Client.Default(null, null), flow, authorizationUrl, tokenUrl, scopes);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setFlow(OAuthFlow flow) {
 | 
				
			||||||
 | 
					        switch(flow) {
 | 
				
			||||||
 | 
					        case accessCode:
 | 
				
			||||||
 | 
					        case implicit:
 | 
				
			||||||
 | 
					            tokenRequestBuilder.setGrantType(GrantType.AUTHORIZATION_CODE);
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        case password:
 | 
				
			||||||
 | 
					            tokenRequestBuilder.setGrantType(GrantType.PASSWORD);
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        case application:
 | 
				
			||||||
 | 
					            tokenRequestBuilder.setGrantType(GrantType.CLIENT_CREDENTIALS);
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        default:
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void apply(RequestTemplate template) {
 | 
				
			||||||
 | 
					        // If the request already have an authorization (eg. Basic auth), do nothing
 | 
				
			||||||
 | 
					        if (template.headers().containsKey("Authorization")) {
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        // If first time, get the token
 | 
				
			||||||
 | 
					        if (expirationTimeMillis == null || System.currentTimeMillis() >= expirationTimeMillis) {
 | 
				
			||||||
 | 
					            try {
 | 
				
			||||||
 | 
					                updateAccessToken();
 | 
				
			||||||
 | 
					            } catch (OAuthSystemException e) {
 | 
				
			||||||
 | 
					                e.printStackTrace();
 | 
				
			||||||
 | 
					                return;
 | 
				
			||||||
 | 
					            } catch (OAuthProblemException e) {
 | 
				
			||||||
 | 
					                e.printStackTrace();
 | 
				
			||||||
 | 
					                return;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (getAccessToken() != null) {
 | 
				
			||||||
 | 
					            template.header("Authorization", "Bearer " + getAccessToken());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public synchronized void updateAccessToken() throws OAuthSystemException, OAuthProblemException {
 | 
				
			||||||
 | 
					        if (getAccessToken() == null) {
 | 
				
			||||||
 | 
					            OAuthJSONAccessTokenResponse accessTokenResponse = oauthClient.accessToken(tokenRequestBuilder.buildBodyMessage());
 | 
				
			||||||
 | 
					            if (accessTokenResponse != null && accessTokenResponse.getAccessToken() != null) {
 | 
				
			||||||
 | 
					                setAccessToken(accessTokenResponse.getAccessToken(), accessTokenResponse.getExpiresIn());
 | 
				
			||||||
 | 
					                if (accessTokenListener != null) {
 | 
				
			||||||
 | 
					                    accessTokenListener.notify((BasicOAuthToken) accessTokenResponse.getOAuthToken());
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void registerAccessTokenListener(AccessTokenListener accessTokenListener) {
 | 
				
			||||||
 | 
					        this.accessTokenListener = accessTokenListener;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public synchronized String getAccessToken() {
 | 
				
			||||||
 | 
					        return accessToken;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public synchronized void setAccessToken(String accessToken, Long expiresIn) {
 | 
				
			||||||
 | 
					        this.accessToken = accessToken;
 | 
				
			||||||
 | 
					        this.expirationTimeMillis = System.currentTimeMillis() + expiresIn * 1000;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public TokenRequestBuilder getTokenRequestBuilder() {
 | 
				
			||||||
 | 
					        return tokenRequestBuilder;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setTokenRequestBuilder(TokenRequestBuilder tokenRequestBuilder) {
 | 
				
			||||||
 | 
					        this.tokenRequestBuilder = tokenRequestBuilder;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public AuthenticationRequestBuilder getAuthenticationRequestBuilder() {
 | 
				
			||||||
 | 
					        return authenticationRequestBuilder;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setAuthenticationRequestBuilder(AuthenticationRequestBuilder authenticationRequestBuilder) {
 | 
				
			||||||
 | 
					        this.authenticationRequestBuilder = authenticationRequestBuilder;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public OAuthClient getOauthClient() {
 | 
				
			||||||
 | 
					        return oauthClient;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setOauthClient(OAuthClient oauthClient) {
 | 
				
			||||||
 | 
					        this.oauthClient = oauthClient;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setOauthClient(Client client) {
 | 
				
			||||||
 | 
					        this.oauthClient = new OAuthClient( new OAuthFeignClient(client));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public class OAuthFeignClient implements HttpClient {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private Client client;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public OAuthFeignClient() {
 | 
				
			||||||
 | 
					            this.client = new Client.Default(null, null);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public OAuthFeignClient(Client client) {
 | 
				
			||||||
 | 
					            this.client = client;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public <T extends OAuthClientResponse> T execute(OAuthClientRequest request, Map<String, String> headers,
 | 
				
			||||||
 | 
					                String requestMethod, Class<T> responseClass)
 | 
				
			||||||
 | 
					                        throws OAuthSystemException, OAuthProblemException {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            RequestTemplate req = new RequestTemplate()
 | 
				
			||||||
 | 
					                    .append(request.getLocationUri())
 | 
				
			||||||
 | 
					                    .method(requestMethod)
 | 
				
			||||||
 | 
					                    .body(request.getBody());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            for (Entry<String, String> entry : headers.entrySet()) {
 | 
				
			||||||
 | 
					                req.header(entry.getKey(), entry.getValue());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            Response feignResponse;
 | 
				
			||||||
 | 
					            String body = "";
 | 
				
			||||||
 | 
					            try {
 | 
				
			||||||
 | 
					                feignResponse = client.execute(req.request(), new Options());
 | 
				
			||||||
 | 
					                body = Util.toString(feignResponse.body().asReader());
 | 
				
			||||||
 | 
					            } catch (IOException e) {
 | 
				
			||||||
 | 
					                throw new OAuthSystemException(e);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            String contentType = null;
 | 
				
			||||||
 | 
					            Collection<String> contentTypeHeader =  feignResponse.headers().get("Content-Type");
 | 
				
			||||||
 | 
					            if(contentTypeHeader != null) {
 | 
				
			||||||
 | 
					                contentType = StringUtil.join(contentTypeHeader.toArray(new String[0]), ";");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return OAuthClientResponseFactory.createCustomResponse(
 | 
				
			||||||
 | 
					                    body,
 | 
				
			||||||
 | 
					                    contentType,
 | 
				
			||||||
 | 
					                    feignResponse.status(),
 | 
				
			||||||
 | 
					                    responseClass
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void shutdown() {
 | 
				
			||||||
 | 
					            // Nothing to do here
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					package io.swagger.client.auth;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public enum OAuthFlow {
 | 
				
			||||||
 | 
					    accessCode, implicit, password, application
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -10,7 +10,7 @@ import io.swagger.annotations.ApiModelProperty;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-05T14:39:18.888+08:00")
 | 
					@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-11T21:48:33.457Z")
 | 
				
			||||||
public class Category   {
 | 
					public class Category   {
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  private Long id = null;
 | 
					  private Long id = null;
 | 
				
			||||||
@ -53,8 +53,10 @@ public class Category   {
 | 
				
			|||||||
      return false;
 | 
					      return false;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    Category category = (Category) o;
 | 
					    Category category = (Category) o;
 | 
				
			||||||
    return Objects.equals(id, category.id) &&
 | 
					
 | 
				
			||||||
        Objects.equals(name, category.name);
 | 
					    return true && Objects.equals(id, category.id) &&
 | 
				
			||||||
 | 
					        Objects.equals(name, category.name)
 | 
				
			||||||
 | 
					    ;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @Override
 | 
					  @Override
 | 
				
			||||||
 | 
				
			|||||||
@ -11,7 +11,7 @@ import java.util.Date;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-05T14:39:18.888+08:00")
 | 
					@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-11T21:48:33.457Z")
 | 
				
			||||||
public class Order   {
 | 
					public class Order   {
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  private Long id = null;
 | 
					  private Long id = null;
 | 
				
			||||||
@ -131,12 +131,14 @@ public class Order   {
 | 
				
			|||||||
      return false;
 | 
					      return false;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    Order order = (Order) o;
 | 
					    Order order = (Order) o;
 | 
				
			||||||
    return Objects.equals(id, order.id) &&
 | 
					
 | 
				
			||||||
 | 
					    return true && Objects.equals(id, order.id) &&
 | 
				
			||||||
        Objects.equals(petId, order.petId) &&
 | 
					        Objects.equals(petId, order.petId) &&
 | 
				
			||||||
        Objects.equals(quantity, order.quantity) &&
 | 
					        Objects.equals(quantity, order.quantity) &&
 | 
				
			||||||
        Objects.equals(shipDate, order.shipDate) &&
 | 
					        Objects.equals(shipDate, order.shipDate) &&
 | 
				
			||||||
        Objects.equals(status, order.status) &&
 | 
					        Objects.equals(status, order.status) &&
 | 
				
			||||||
        Objects.equals(complete, order.complete);
 | 
					        Objects.equals(complete, order.complete)
 | 
				
			||||||
 | 
					    ;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @Override
 | 
					  @Override
 | 
				
			||||||
 | 
				
			|||||||
@ -13,7 +13,7 @@ import java.util.*;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-05T14:39:18.888+08:00")
 | 
					@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-11T21:48:33.457Z")
 | 
				
			||||||
public class Pet   {
 | 
					public class Pet   {
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  private Long id = null;
 | 
					  private Long id = null;
 | 
				
			||||||
@ -133,12 +133,14 @@ public class Pet   {
 | 
				
			|||||||
      return false;
 | 
					      return false;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    Pet pet = (Pet) o;
 | 
					    Pet pet = (Pet) o;
 | 
				
			||||||
    return Objects.equals(id, pet.id) &&
 | 
					
 | 
				
			||||||
 | 
					    return true && Objects.equals(id, pet.id) &&
 | 
				
			||||||
        Objects.equals(category, pet.category) &&
 | 
					        Objects.equals(category, pet.category) &&
 | 
				
			||||||
        Objects.equals(name, pet.name) &&
 | 
					        Objects.equals(name, pet.name) &&
 | 
				
			||||||
        Objects.equals(photoUrls, pet.photoUrls) &&
 | 
					        Objects.equals(photoUrls, pet.photoUrls) &&
 | 
				
			||||||
        Objects.equals(tags, pet.tags) &&
 | 
					        Objects.equals(tags, pet.tags) &&
 | 
				
			||||||
        Objects.equals(status, pet.status);
 | 
					        Objects.equals(status, pet.status)
 | 
				
			||||||
 | 
					    ;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @Override
 | 
					  @Override
 | 
				
			||||||
 | 
				
			|||||||
@ -10,7 +10,7 @@ import io.swagger.annotations.ApiModelProperty;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-05T14:39:18.888+08:00")
 | 
					@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-11T21:48:33.457Z")
 | 
				
			||||||
public class Tag   {
 | 
					public class Tag   {
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  private Long id = null;
 | 
					  private Long id = null;
 | 
				
			||||||
@ -53,8 +53,10 @@ public class Tag   {
 | 
				
			|||||||
      return false;
 | 
					      return false;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    Tag tag = (Tag) o;
 | 
					    Tag tag = (Tag) o;
 | 
				
			||||||
    return Objects.equals(id, tag.id) &&
 | 
					
 | 
				
			||||||
        Objects.equals(name, tag.name);
 | 
					    return true && Objects.equals(id, tag.id) &&
 | 
				
			||||||
 | 
					        Objects.equals(name, tag.name)
 | 
				
			||||||
 | 
					    ;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @Override
 | 
					  @Override
 | 
				
			||||||
 | 
				
			|||||||
@ -10,7 +10,7 @@ import io.swagger.annotations.ApiModelProperty;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-05T14:39:18.888+08:00")
 | 
					@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-11T21:48:33.457Z")
 | 
				
			||||||
public class User   {
 | 
					public class User   {
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  private Long id = null;
 | 
					  private Long id = null;
 | 
				
			||||||
@ -138,14 +138,16 @@ public class User   {
 | 
				
			|||||||
      return false;
 | 
					      return false;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    User user = (User) o;
 | 
					    User user = (User) o;
 | 
				
			||||||
    return Objects.equals(id, user.id) &&
 | 
					
 | 
				
			||||||
 | 
					    return true && Objects.equals(id, user.id) &&
 | 
				
			||||||
        Objects.equals(username, user.username) &&
 | 
					        Objects.equals(username, user.username) &&
 | 
				
			||||||
        Objects.equals(firstName, user.firstName) &&
 | 
					        Objects.equals(firstName, user.firstName) &&
 | 
				
			||||||
        Objects.equals(lastName, user.lastName) &&
 | 
					        Objects.equals(lastName, user.lastName) &&
 | 
				
			||||||
        Objects.equals(email, user.email) &&
 | 
					        Objects.equals(email, user.email) &&
 | 
				
			||||||
        Objects.equals(password, user.password) &&
 | 
					        Objects.equals(password, user.password) &&
 | 
				
			||||||
        Objects.equals(phone, user.phone) &&
 | 
					        Objects.equals(phone, user.phone) &&
 | 
				
			||||||
        Objects.equals(userStatus, user.userStatus);
 | 
					        Objects.equals(userStatus, user.userStatus)
 | 
				
			||||||
 | 
					    ;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @Override
 | 
					  @Override
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user