You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
2.7 KiB

/* Beispiel angelehnt an http://www.torsten-horn.de/techdocs/jee-rest.htm */
package verteiltesysteme.aws;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
@Path(TCPTimeCounterRESTService.webContextPath)
public class TCPTimeCounterRESTService {
static final String webContextPath = "/counter";
static final String bucketName = "vertsys-counter";
private Long getCounter() {
// Verbindung zu S3
AmazonS3 s3Client = AmazonS3ClientBuilder.defaultClient();
String region = s3Client.getRegionName();
return new Long(s3Client.getObjectAsString(bucketName, region));
}
private boolean setCounter(Long counter) {
// Verbindung zu S3
AmazonS3 s3Client = AmazonS3ClientBuilder.defaultClient();
String region = s3Client.getRegionName();
s3Client.putObject(bucketName, region, new Long(counter).toString());
return true;
}
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getCounterPlain() {
return "Plain-Text: " + getCounter();
}
@GET
@Produces(MediaType.TEXT_HTML)
public String getCounterHtml() {
return "<html><head><title>TCPTimeCounter REST Service</title><meta http-equiv=\"refresh\" content=\"5\"/></head><body><h2>HTML: " + getCounter() + "</h2></body></html>";
}
@GET
@Produces(MediaType.APPLICATION_JSON)
public String getCounterJson() {
return "{\n \"type\": \"JSON\",\n \"output\": \"" + getCounter() + "\"\n}";
}
@POST
@Consumes(MediaType.TEXT_PLAIN)
@Produces(MediaType.TEXT_PLAIN)
public String incrCounterPlain(@FormParam("input") String input) {
Long currentCounterValue = getCounter();
currentCounterValue = currentCounterValue + (new Long(input)).longValue();
setCounter(currentCounterValue);
return "Plain-Text: TCPTimeCounter counter increased by " + input + " to " + currentCounterValue;
}
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.TEXT_HTML)
public String incrCounterHtml(@FormParam("input") String input) {
Long currentCounterValue = getCounter();
currentCounterValue = currentCounterValue + (new Long(input)).longValue();
setCounter(currentCounterValue);
return "<html><title>TCPTimeCounter counter increased by " + input + " to " + currentCounterValue + "</h2></body></html>";
}
@POST
@Consumes(MediaType.TEXT_PLAIN)
@Produces(MediaType.APPLICATION_JSON)
public String incrCounterJson(@QueryParam("input") String input) {
Long currentCounterValue = getCounter();
currentCounterValue = currentCounterValue + (new Long(input)).longValue();
setCounter(currentCounterValue);
return "{\n \"type\": \"JSON\",\n \"output\": \"Plain-Text: TCPTimeCounter counter increased by " + input + " to " + currentCounterValue + "\"\n}";
}
}