use of io.micronaut.http.annotation.Get in project micronaut-starter by micronaut-projects.
the class DiffController method diffFeature.
/**
* Returns a diff for the given application type and feature.
*
* @param type The application type
* @param feature The feature
* @param build The build tool
* @param test The test framework
* @param lang The lang
* @param javaVersion The java version
* @param requestInfo The request info
* @return A string representing the difference
*/
@Get(uri = "/{type}/feature/{feature}{?lang,build,test,javaVersion,name}", produces = MediaType.TEXT_PLAIN)
@Override
@ApiResponse(responseCode = "404", description = "If no difference is found")
@ApiResponse(responseCode = "400", description = "If the supplied parameters are invalid")
@ApiResponse(responseCode = "200", description = "A textual diff", content = @Content(mediaType = "text/plain"))
public Flowable<String> diffFeature(@NotNull ApplicationType type, @Nullable String name, @NonNull @NotBlank String feature, @Nullable BuildTool build, @Nullable TestFramework test, @Nullable Language lang, @Nullable JdkVersion javaVersion, @Parameter(hidden = true) RequestInfo requestInfo) {
ProjectGenerator projectGenerator;
GeneratorContext generatorContext;
try {
Project project = name != null ? NameUtils.parse(name) : this.project;
Options options = new Options(lang != null ? lang : Language.JAVA, test != null ? test : TestFramework.JUNIT, build != null ? build : BuildTool.GRADLE);
projectGenerator = this.projectGenerator;
generatorContext = projectGenerator.createGeneratorContext(type, project, options, UserAgentParser.getOperatingSystem(requestInfo.getUserAgent()), Collections.singletonList(feature), ConsoleOutput.NOOP);
} catch (IllegalArgumentException e) {
throw new HttpStatusException(HttpStatus.BAD_REQUEST, e.getMessage());
}
return diffFlowable(projectGenerator, generatorContext);
}
use of io.micronaut.http.annotation.Get in project micronaut-starter by micronaut-projects.
the class DiffController method diffApp.
/**
* Diffs the whole application for all selected features.
* @param type The application type
* @param name The name of the application
* @param features The features
* @param build The build tool
* @param test The test framework
* @param lang The lang
* @param requestInfo The request info
* @return An HTTP response that emits a writable
*/
@Get(uri = "/{type}/{name}{?features,lang,build,test,javaVersion}", produces = MediaType.TEXT_PLAIN)
@Override
@ApiResponse(responseCode = "404", description = "If no difference is found")
@ApiResponse(responseCode = "400", description = "If the supplied parameters are invalid")
@ApiResponse(responseCode = "200", description = "A textual diff", content = @Content(mediaType = "text/plain"))
public Flowable<String> diffApp(ApplicationType type, @Pattern(regexp = "[\\w\\d-_\\.]+") String name, @Nullable List<String> features, @Nullable BuildTool build, @Nullable TestFramework test, @Nullable Language lang, @Nullable JdkVersion javaVersion, @Parameter(hidden = true) RequestInfo requestInfo) throws IOException {
ProjectGenerator projectGenerator;
GeneratorContext generatorContext;
try {
Project project = name != null ? NameUtils.parse(name) : this.project;
Options options = new Options(lang != null ? lang : Language.JAVA, test != null ? test : TestFramework.JUNIT, build != null ? build : BuildTool.GRADLE);
projectGenerator = this.projectGenerator;
generatorContext = projectGenerator.createGeneratorContext(type, project, options, UserAgentParser.getOperatingSystem(requestInfo.getUserAgent()), features != null ? features : Collections.emptyList(), ConsoleOutput.NOOP);
} catch (IllegalArgumentException e) {
throw new HttpStatusException(HttpStatus.BAD_REQUEST, e.getMessage());
}
return diffFlowable(projectGenerator, generatorContext);
}
use of io.micronaut.http.annotation.Get in project micronaut-starter by micronaut-projects.
the class ApplicationController method home.
/**
* Provides a description of the API.
* @param request The request
* @return A description of the API.
*/
@Get("/")
@Produces(MediaType.TEXT_PLAIN)
@ApiResponse(responseCode = "200", description = "A textual description of the API", content = @Content(mediaType = MediaType.TEXT_PLAIN))
HttpResponse<Writable> home(HttpRequest<?> request, @Parameter(hidden = true) RequestInfo info) {
Collection<MediaType> accept = request.accept();
URI redirectURI = configuration.getRedirectUri().orElse(null);
if (accept.contains(MediaType.TEXT_HTML_TYPE) && redirectURI != null) {
return HttpResponse.permanentRedirect(redirectURI);
} else {
return HttpResponse.ok(new Writable() {
@Override
public void writeTo(Writer out) {
// no-op
}
@Override
public void writeTo(OutputStream outputStream, @Nullable Charset charset) {
new RockerWritable(new starterApi().serverURL(info.getServerURL()).micronautVersion(VersionInfo.getMicronautVersion())).write(outputStream);
}
});
}
}
use of io.micronaut.http.annotation.Get in project micronaut-starter by micronaut-projects.
the class PreviewController method previewApp.
/**
* Previews the contents of a generated application..
* @param type The application type The application type
* @param name The name of the application The name of the application
* @param features The features The chosen features
* @param build The build type (optional, defaults to Gradle)
* @param test The test framework (optional, defaults to JUnit)
* @param lang The language (optional, defaults to Java)
* @return A preview of the application contents.
*/
@Get(uri = "/{type}/{name}{?features,lang,build,test,javaVersion}", produces = MediaType.APPLICATION_JSON)
@Override
public PreviewDTO previewApp(ApplicationType type, String name, @Nullable List<String> features, @Nullable BuildTool build, @Nullable TestFramework test, @Nullable Language lang, @Nullable JdkVersion javaVersion, @Parameter(hidden = true) RequestInfo requestInfo) throws IOException {
try {
Project project = NameUtils.parse(name);
MapOutputHandler outputHandler = new MapOutputHandler();
projectGenerator.generate(type, project, new Options(lang, test != null ? test.toTestFramework() : null, build == null ? BuildTool.GRADLE : build, javaVersion == null ? JdkVersion.JDK_8 : javaVersion), getOperatingSystem(requestInfo.getUserAgent()), features == null ? Collections.emptyList() : features, outputHandler, ConsoleOutput.NOOP);
Map<String, String> contents = outputHandler.getProject();
PreviewDTO previewDTO = new PreviewDTO(contents);
previewDTO.addLink(Relationship.CREATE, requestInfo.link(Relationship.CREATE, type));
previewDTO.addLink(Relationship.SELF, requestInfo.self());
return previewDTO;
} catch (IllegalArgumentException e) {
throw new HttpStatusException(HttpStatus.BAD_REQUEST, e.getMessage());
} catch (Exception e) {
LOG.error("Error generating application: " + e.getMessage(), e);
throw new IOException(e.getMessage(), e);
}
}
Aggregations