Application.java 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package hello;
  2. import com.blade.Blade;
  3. import com.blade.server.netty.HttpConst;
  4. import hello.model.Message;
  5. import hello.model.World;
  6. import io.netty.buffer.ByteBuf;
  7. import io.netty.buffer.Unpooled;
  8. import io.netty.util.AsciiString;
  9. import io.netty.util.CharsetUtil;
  10. import java.util.Optional;
  11. import java.util.Random;
  12. import java.util.concurrent.ThreadLocalRandom;
  13. /**
  14. * Blade Application
  15. *
  16. * @author biezhi
  17. * @date 2017/9/22
  18. */
  19. public class Application {
  20. private static final int DB_ROWS = 308;
  21. private static final byte[] STATIC_PLAINTEXT = "Hello, World!".getBytes(CharsetUtil.UTF_8);
  22. private static final ByteBuf PLAINTEXT_CONTENT_BUFFER = Unpooled.unreleasableBuffer(Unpooled.directBuffer().writeBytes(STATIC_PLAINTEXT));
  23. private static final CharSequence PLAINTEXT_CLHEADER_VALUE = AsciiString.cached(String.valueOf(STATIC_PLAINTEXT.length));
  24. private static int getQueries(Optional<Integer> queryCount) {
  25. int count = queryCount.orElse(1);
  26. count = count < 1 ? 1 : count;
  27. count = count > 500 ? 500 : count;
  28. return count;
  29. }
  30. public static void main(String[] args) {
  31. Blade.me()
  32. .get("/json", (request, response) -> {
  33. response.contentType(HttpConst.getContentType("application/json"));
  34. response.json(new Message());
  35. })
  36. .get("/db", (request, response) -> {
  37. final Random random = ThreadLocalRandom.current();
  38. response.contentType(HttpConst.getContentType("application/json"));
  39. response.json(new World().find(random.nextInt(DB_ROWS) + 1));
  40. })
  41. .get("/queries", (request, response) -> {
  42. int queries = getQueries(request.queryInt("queries"));
  43. final World[] worlds = new World[queries];
  44. final Random random = ThreadLocalRandom.current();
  45. for (int i = 0; i < queries; i++) {
  46. worlds[i] = new World().find(random.nextInt(DB_ROWS) + 1);
  47. }
  48. response.contentType(HttpConst.getContentType("application/json"));
  49. response.json(worlds);
  50. })
  51. .get("/plaintext", (request, response) -> {
  52. response.contentType(HttpConst.getContentType("text/plain"));
  53. response.header(HttpConst.CONTENT_LENGTH, PLAINTEXT_CLHEADER_VALUE);
  54. response.body(PLAINTEXT_CONTENT_BUFFER.duplicate());
  55. })
  56. .disableSession()
  57. .start(Application.class, args);
  58. }
  59. }