diff --git a/README.org b/README.org
index 320f81a..af0c863 100644
--- a/README.org
+++ b/README.org
@@ -1,3 +1,5 @@
+#+STARTUP: showall
+
Quickly share bits of code, screenshots or whatnot with some friends.
Easily delete them too.
@@ -41,6 +43,32 @@ Easily delete them too.
If Hypo doens't know what kind of file you're uploading it will
default to treating it as a text file.
+** Viewing
+
+ All files can be viewed (from, for example, your web browser) in
+ three different ways. The regularly, raw and as download.
+
+ The regular way shows a web page with the file either syntax
+ highlighted using ~pygments~ or (in case it is an image) with the
+ image shown on the page. This is viewed by using the URL printed
+ after upload has completed. For example:
+
+ : http://yourserver.example.com/abcdef1
+
+ The raw view is just the file, saving this file is the same as
+ downloading it. This is viewed by prefixing the last part of the
+ URL with ~raw/~. For example:
+
+ : http://yourserver.example.com/raw/abcdef1
+
+ The download view is the same as the raw view except that the
+ ~Content-Disposition~ header has been set to ~attachment~. This causes
+ a download dialog to show up instead of your browser trying to
+ render it. This ir viewed by prefixing the last part of the URL
+ with ~dl/~. For example:
+
+ : http://yourserver.example.com/dl/abcdef1
+
** Deleting
After you have uploaded a file you can delete it again by using
@@ -53,6 +81,12 @@ Easily delete them too.
server, so anyone can delete (also post) files. Of course they
would first have to know the URL to send the delete to.
+* Clients
+
+ Hypo tries to stay simple to work with, at least on the
+ client-side. However, some clients may make things easier.
+ Currently there is only the (incomplete) [[http://code.ryuslash.org/hypo-emacs/][Emacs client]].
+
* License
Hypo is free software: you can redistribute it and/or modify it
diff --git a/hypo.hy b/hypo.hy
index a749984..b694596 100755
--- a/hypo.hy
+++ b/hypo.hy
@@ -28,7 +28,8 @@
(sys.exit 1)))
(def render (web.template.render "templates/"))
-(def urls (, (+ "/" *prefix* "raw/(.*)") "raw"
+(def urls (, (+ "/" *prefix*) "index"
+ (+ "/" *prefix* "raw/(.*)") "raw"
(+ "/" *prefix* "dl/(.*)") "download"
(+ "/" *prefix* "([a-f0-9]{7})$") "html"
(+ "/" *prefix* "(.*)") "upload"))
@@ -137,6 +138,9 @@ If no lexer is found fallback onto the text lexer."
(setv web.ctx.status (str "201 Created"))
(+ web.ctx.home "/" *prefix* (get h 0) "\n")))]])
+(defclass index []
+ [[GET (lambda [self] (render.index))]])
+
(defun hypo-start [argv]
(let ((sys.argv (cdr sys.argv))
(app (web.application urls (globals))))
diff --git a/templates/index.html b/templates/index.html
new file mode 100644
index 0000000..8b5bc73
--- /dev/null
+++ b/templates/index.html
@@ -0,0 +1,159 @@
+$# Hypo -- Quickly share stuff
+$# Copyright (C) 2013 Tom Willemse
+$#
+$# Hypo is free software: you can redistribute it and/or modify it
+$# under the terms of the GNU Affero General Public License as
+$# published by the Free Software Foundation, either version 3 of the
+$# License, or (at your option) any later version.
+$#
+$# Hypo is distributed in the hope that it will be useful, but WITHOUT
+$# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+$# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General
+$# Public License for more details.
+$#
+$# You should have received a copy of the GNU Affero General Public
+$# License along with Hypo. If not, see
+ This is hypo. Hypo is supposed to be an easy way to share/store + code snippets and other files. +
+ ++ Once setup it will not show much of anything, first you'll + have to upload something. +
+
+ Uploading is done with the PUT
HTTP method.
+ An example with curl:
+
# curl --upload-file README.org http://yourserver.example.com/ 2>/dev/null +http://yourserver.example.com/abcdef1+ +
+ After uploading a file to the server it will respond
+ with the url of your newly uploaded file. If you browse
+ to this URL using your favorite browser you will find a
+ page showing the file. For text files it will try to
+ provide some syntax highlighting, for certain types of
+ images (currently jpg
, png
+ and gif
) it will show the image.
+
+ If Hypo doens't know what kind of file you're uploading + it will default to treating it as a text file. +
++ All files can be viewed (from, for example, your web + browser) in three different ways. The regularly, raw and + as download. +
+ +
+ The regular way shows a web page with the file either
+ syntax highlighted using pygments
or (in
+ case it is an image) with the image shown on the page.
+ This is viewed by using the URL printed after upload has
+ completed. For example:
+
http://yourserver.example.com/abcdef1+ +
+ The raw view is just the file, saving this file is the
+ same as downloading it. This is viewed by prefixing the
+ last part of the URL with raw/
. For
+ example:
+
http://yourserver.example.com/raw/abcdef1+ +
+ The download view is the same as the raw view except
+ that the Content-Disposition
header has
+ been set to attachment
. This causes a
+ download dialog to show up instead of your browser
+ trying to render it. This ir viewed by prefixing the
+ last part of the URL with dl/
. For example:
+
http://yourserver.example.com/dl/abcdef1+
+ After you have uploaded a file you can delete it again
+ by using the DELETE
HTTP method. An example
+ with curl:
+
# curl -XDELETE http://yourserver.example.com/abcdef1 +None+ +
+ There is currently no way to authenticate yourself with + the server, so anyone can delete (also post) files. Of + course they would first have to know the URL to send the + delete to. +
++ Hypo tries to stay simple to work with, at least on the + client-side. However, some clients may make things easier. + Currently there is only the + (incomplete) Emacs + client. +
+