Reorganizing to a parent project, a light and a heavy (validating) library, a commandline application and the server

This commit is contained in:
Jochen Stärk
2020-03-28 18:28:32 +01:00
parent 7b0a3f2ae0
commit dea42f950e
218 changed files with 1003962 additions and 269 deletions

View File

@@ -0,0 +1,51 @@
package api;
import org.glassfish.jersey.media.multipart.MultiPartFeature;
import org.glassfish.jersey.server.filter.RolesAllowedDynamicFeature;
import io.dropwizard.Application;
import io.dropwizard.auth.AuthDynamicFeature;
import io.dropwizard.auth.AuthValueFactoryProvider;
import io.dropwizard.auth.basic.BasicCredentialAuthFilter;
import io.dropwizard.setup.Bootstrap;
import io.dropwizard.setup.Environment;
import io.federecio.dropwizard.swagger.SwaggerBundle;
import io.federecio.dropwizard.swagger.SwaggerBundleConfiguration;
import mustang.MustangResource;
public class ApiApplication extends Application<ApiConfiguration> {
public static void main(String[] args) throws Exception {
new ApiApplication().run(args);
}
@Override
public String getName() {
return "Mustang Server";
}
@Override
public void initialize(Bootstrap<ApiConfiguration> bootstrap) {
bootstrap.addBundle(new SwaggerBundle<ApiConfiguration>() {
@Override
protected SwaggerBundleConfiguration getSwaggerBundleConfiguration(ApiConfiguration configuration) {
return configuration.swaggerBundleConfiguration;
}
});
}
@Override
public void run(ApiConfiguration configuration, Environment environment) {
final MustangResource resource = new MustangResource();
environment.jersey()
.register(new AuthDynamicFeature(new BasicCredentialAuthFilter.Builder<User>()
.setAuthenticator(new BasicAuthenticator()).setAuthorizer(new BasicAuthorizer())
.setRealm("Rest API access").buildAuthFilter()));
environment.jersey().register(RolesAllowedDynamicFeature.class);
environment.jersey().register(new AuthValueFactoryProvider.Binder<>(User.class));
environment.jersey().register(MultiPartFeature.class);
environment.jersey().register(resource);
}
}

View File

@@ -0,0 +1,12 @@
package api;
import io.dropwizard.Configuration;
import io.federecio.dropwizard.swagger.SwaggerBundleConfiguration;
import com.fasterxml.jackson.annotation.JsonProperty;
public class ApiConfiguration extends Configuration {
@JsonProperty("swagger")
public SwaggerBundleConfiguration swaggerBundleConfiguration;
}

View File

@@ -0,0 +1,18 @@
package api;
import java.util.Optional;
import io.dropwizard.auth.AuthenticationException;
import io.dropwizard.auth.Authenticator;
import io.dropwizard.auth.basic.BasicCredentials;
public class BasicAuthenticator implements Authenticator<BasicCredentials, User> {
@Override
public Optional<User> authenticate(BasicCredentials credentials) throws AuthenticationException {
if ("secret".equals(credentials.getPassword())) {
return Optional.of(new User(credentials.getUsername()));
}
return Optional.empty();
}
}

View File

@@ -0,0 +1,11 @@
package api;
import io.dropwizard.auth.Authorizer;
public class BasicAuthorizer implements Authorizer<User> {
@Override
public boolean authorize(User user, String role) {
return user.getName().equals("good-guy") && role.equals("ADMIN");
}
}

View File

@@ -0,0 +1,15 @@
package api;
import io.dropwizard.auth.PrincipalImpl;
public class User extends PrincipalImpl {
String username;
public User(String name) {
super(name);
username=name;
}
}