Skip to content

Instantly share code, notes, and snippets.

@kyonmm
Created February 11, 2012 03:52
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save kyonmm/1795988 to your computer and use it in GitHub Desktop.
Save kyonmm/1795988 to your computer and use it in GitHub Desktop.
Groovyで簡易HTTPサーバー
import com.sun.net.httpserver.HttpExchange
import com.sun.net.httpserver.HttpHandler
import com.sun.net.httpserver.HttpServer
import groovy.xml.MarkupBuilder
def PORT = 6001
HttpServer server = HttpServer.create(new InetSocketAddress(PORT), 0);
server.createContext("/", new HttpHandler() {
@Override
public void handle(HttpExchange he) throws IOException {
def buf = getContents(he.getRequestURI().getPath())
he.getResponseHeaders().add("Content-Type", "text/html")
he.sendResponseHeaders(200, buf.length)
he.getResponseBody().write(buf)
he.close()
}
})
server.start()
byte[] getContents(String path){
byte[] buf;
if (path == "/1") {
buf = index().getBytes()
}
if (path == "/2") {
buf = second().getBytes()
}
if (path == "/3") {
buf = third().getBytes()
}
if (path == "/3_2") {
buf = third_2().getBytes()
}
if (path == "/3_3") {
buf = third_3().getBytes()
}
if (path == "/4") {
buf = forth().getBytes()
}
if (path == "/5") {
buf = fifth().getBytes()
}
if (path == "/5_2") {
buf = fifth_2().getBytes()
}
if (path == "/6") {
buf = sixth().getBytes()
}
return buf
}
String index() {
StringWriter sw = new StringWriter()
MarkupBuilder builder = new MarkupBuilder(sw);
builder.html() {
h1('うさぎ組 in JGGUGCAMP 2011')
h2('presented by kyon_mm')
a(href: "/2", "next")
}
return sw.toString()
}
String second() {
StringWriter sw = new StringWriter()
MarkupBuilder builder = new MarkupBuilder(sw);
builder.html() {
h1('自己紹介')
h2('きょん(kyon_mm)')
h2('うさみみ 24歳です')
h2('愛知に転職しました')
h2('Groovy初心者から抜け出せない系エンジニア')
h2('自動化、ソフトウェアテスト、品質保証 が好き')
h2('最近 Android やってるみたい')
a(href: "/1", "prev")
a(href: "/3", "next")
}
return sw.toString()
}
String third() {
StringWriter sw = new StringWriter()
MarkupBuilder builder = new MarkupBuilder(sw);
builder.html() {
h1('今朝 LL名古屋 #llnagoya っていうイベントで発表してきました')
h2('内容は Groovy vs Clojure')
a(href: "/2", "prev")
a(href: "/3_2", "next")
}
return sw.toString()
}
String third_2() {
StringWriter sw = new StringWriter()
MarkupBuilder builder = new MarkupBuilder(sw);
builder.html() {
h1('今朝 LL名古屋 #llnagoya っていうイベントで発表してきました')
h2('内容は Groovy vs Clojure')
h2('発表資料はClojureで書きました')
a(href: "/3", "prev")
a(href: "/3_3", "next")
}
return sw.toString()
}
String third_3() {
StringWriter sw = new StringWriter()
MarkupBuilder builder = new MarkupBuilder(sw);
builder.html() {
h1('今朝 LL名古屋 #llnagoya っていうイベントで発表してきました')
h2('内容は Groovy vs Clojure')
h2('発表資料はClojureで書きました')
h2('わかったのはJavaライブラリ使うならGroovy一択だということ')
h2('あとPowerAssertかわいいれす^q^')
a(href: "/3_2", "prev")
a(href: "/4", "next")
}
return sw.toString()
}
String forth() {
StringWriter sw = new StringWriter()
MarkupBuilder builder = new MarkupBuilder(sw);
builder.html() {
h1('そういえばこれのどこがGroovyなのか')
a(href: "/3", "prev")
a(href: "/5", "next")
}
return sw.toString()
}
String fifth() {
StringWriter sw = new StringWriter()
MarkupBuilder builder = new MarkupBuilder(sw);
builder.html() {
h1('実はこれGroovyで書いたHTTPサーバー')
a(href: "/4", "prev")
a(href: "/5_2", "next")
}
return sw.toString()
}
String fifth_2() {
StringWriter sw = new StringWriter()
MarkupBuilder builder = new MarkupBuilder(sw);
builder.html() {
h1('実はこれGroovyで書いたHTTPサーバー')
h2('で返しているHTMLがMarkupBuilderで生成したHTML')
h5('だからこんなに素っ気な(ry')
a(href: "/5", "prev")
a(href: "/6", "next")
}
return sw.toString()
}
String sixth() {
StringWriter sw = new StringWriter()
MarkupBuilder builder = new MarkupBuilder(sw);
builder.html() {
h1('ということで遅れてきてしまったけどよろしくお願いしますぴょん◆')
a(href: "/5", "prev")
a(href: "/1", "top")
}
return sw.toString()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment