Created
February 11, 2012 03:52
-
-
Save kyonmm/1795988 to your computer and use it in GitHub Desktop.
Groovyで簡易HTTPサーバー
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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