Search in sources :

Example 1 with APIClientGenerationException

use of org.wso2.carbon.apimgt.impl.APIClientGenerationException in project carbon-apimgt by wso2.

the class ApisApiServiceImpl method apisApiIdSdksLanguageGet.

/**
 * Rest api implementation to downloading the client sdk for given api in given sdk language.
 *
 * @param apiId : The id of the api.
 * @param language : Preferred sdk language.
 * @param messageContext : messageContext
 * @return : The sdk as a zip archive.
 */
@Override
public Response apisApiIdSdksLanguageGet(String apiId, String language, String xWSO2Tenant, MessageContext messageContext) throws APIManagementException {
    if (StringUtils.isEmpty(apiId) || StringUtils.isEmpty(language)) {
        String message = "Error generating the SDK. API id or language should not be empty";
        RestApiUtil.handleBadRequest(message, log);
    }
    String organization = RestApiUtil.getValidatedOrganization(messageContext);
    APIDTO api = getAPIByAPIId(apiId, organization);
    APIClientGenerationManager apiClientGenerationManager = new APIClientGenerationManager();
    Map<String, String> sdkArtifacts;
    String swaggerDefinition = api.getApiDefinition();
    if (api != null) {
        try {
            sdkArtifacts = apiClientGenerationManager.generateSDK(language, api.getName(), api.getVersion(), swaggerDefinition);
            // Create the sdk response.
            File sdkFile = new File(sdkArtifacts.get("zipFilePath"));
            return Response.ok(sdkFile, MediaType.APPLICATION_OCTET_STREAM_TYPE).header("Content-Disposition", "attachment; filename=\"" + sdkArtifacts.get("zipFileName") + "\"").build();
        } catch (APIClientGenerationException e) {
            String message = "Error generating client sdk for api: " + api.getName() + " for language: " + language;
            RestApiUtil.handleInternalServerError(message, e, log);
        }
    }
    String message = "Could not find an API for ID " + apiId;
    RestApiUtil.handleResourceNotFoundError(message, log);
    return null;
}
Also used : APIClientGenerationException(org.wso2.carbon.apimgt.impl.APIClientGenerationException) APIClientGenerationManager(org.wso2.carbon.apimgt.impl.APIClientGenerationManager) ResourceFile(org.wso2.carbon.apimgt.api.model.ResourceFile) File(java.io.File)

Aggregations

File (java.io.File)1 ResourceFile (org.wso2.carbon.apimgt.api.model.ResourceFile)1 APIClientGenerationException (org.wso2.carbon.apimgt.impl.APIClientGenerationException)1 APIClientGenerationManager (org.wso2.carbon.apimgt.impl.APIClientGenerationManager)1