tinyurl
v1.0.7
Tinyurlは、Java上のシンプルなURLショートナービルドです。プロジェクトはオープンソースです(Apacheライセンス、バージョン2.0)
# SystemProperty / Default value
org.javastack.tinyurl.config=[classpath]/org.javastack.tinyurl.properties
file:///etc/tinyurl/org.javastack.tinyurl.properties
またはhttps://config-server/tinyurl/org.javastack.tinyurl.properties
などのURL形式を使用して、file:///etc/tinyurl/org.tynyurl.propertiesを使用します。 # Parameter / Default value
storage.dir=[webapp]/WEB-INF/storage/
whitelist.file=file://[storage.dir]/whitelist.conf
check.flags=WHITELIST,CONNECTION
check.cache.millis=60000
connection.timeout.millis=10000
read.timeout.millis=30000
dump.key=[random]
#
# Default KVStore Persistence
storage.class=org.javastack.tinyurl.PersistentKVStore
#
# Optional MySQL Persistence (default: not enabled)
#storage.class=org.javastack.tinyurl.jdbc.PersistentMySQL
#storage.url=jdbc:mysql://localhost:3306/tinyurl
#storage.username=tinyurl
#storage.password=secret
#
# QR Codes
#base.url=https://tiny.javastack.org/r/
#qr.size.min=50
#qr.size.max=1000
#qr.size.default=300
org.javastack.tinyurl.PersistentKVStore
:kvstore persistence(デフォルト、ポータブル)org.javastack.tinyurl.jdbc.PersistentMySQL
:mysqlの持続性example: https://tiny.javastack.org/r/
CATALINA_OPTS="-Dorg.javastack.tinyurl.config=file://${CATALINA_BASE}/conf/org.javastack.tinyurl.properties"
in tomcat/bin/setenv.sh(linux)GRANT ALL ON tinyurl.* TO 'tinyurl'@'%' IDENTIFIED BY 'secret';
短縮のAPIは非常に簡単です:
# Method: POST
# Path: /tiny
# Content-Type: application/x-www-form-urlencoded
# Parameter: "url=${longURLencoded}"
# Example: curl -i -d "url=https%3A%2F%2Fgithub.com%2Fggrandes%2Ftinyurl%2F" ${BASE_URL}/tiny
このようなものを返します:
HTTP/1.1 200 OK
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 19
Cache-control: must-revalidate, max-age=0
{ "id": "iN8diz" }
# Method: GET
# Path: /q/{id}
# Example: curl -i ${BASE_URL}/q/iN8diz
このようなものを返します:
HTTP/1.1 200 OK
Cache-Control: public
Content-Type: image/png
Content-Length: 475
.PNG...binary-data...
# Method: GET
# Path: /r/{id}
# Example: curl -i ${BASE_URL}/r/iN8diz
このようなものを返します:
HTTP/1.1 302 Found
Location: https://github.com/ggrandes/tinyurl/
Content-Length: 0
Cache-control: must-revalidate, max-age=0
現在のハードコードされた値:
KEY_SPACE
は6文字です(base64は64^ks(6)= 68.719.476.736キーmax)goo.gl、bit.ly、cort.asにインスピレーションを受けたこのコードは、Java-Minimalisticバージョンです。