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 . + + + + Hypo + + + + + + +
+

Hypo

+ +

+ This is hypo. Hypo is supposed to be an easy way to share/store + code snippets and other files. +

+ +
+

Usage

+
+

+ Once setup it will not show much of anything, first you'll + have to upload something. +

+
+ +
+

Uploading

+
+

+ 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. +

+
+
+
+

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 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. +

+
+
+
+
+

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) Emacs + client. +

+
+
+ + +
+ +