Update README, add index page

This commit is contained in:
Tom Willemse 2013-08-25 23:21:39 +02:00
parent 71adee4820
commit 96bfb88a5e
3 changed files with 198 additions and 1 deletions

View file

@ -1,3 +1,5 @@
#+STARTUP: showall
Quickly share bits of code, screenshots or whatnot with some friends. Quickly share bits of code, screenshots or whatnot with some friends.
Easily delete them too. 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 If Hypo doens't know what kind of file you're uploading it will
default to treating it as a text file. 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 ** Deleting
After you have uploaded a file you can delete it again by using 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 server, so anyone can delete (also post) files. Of course they
would first have to know the URL to send the delete to. 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 * License
Hypo is free software: you can redistribute it and/or modify it Hypo is free software: you can redistribute it and/or modify it

View file

@ -28,7 +28,8 @@
(sys.exit 1))) (sys.exit 1)))
(def render (web.template.render "templates/")) (def render (web.template.render "templates/"))
(def urls (, (+ "/" *prefix* "raw/(.*)") "raw" (def urls (, (+ "/" *prefix*) "index"
(+ "/" *prefix* "raw/(.*)") "raw"
(+ "/" *prefix* "dl/(.*)") "download" (+ "/" *prefix* "dl/(.*)") "download"
(+ "/" *prefix* "([a-f0-9]{7})$") "html" (+ "/" *prefix* "([a-f0-9]{7})$") "html"
(+ "/" *prefix* "(.*)") "upload")) (+ "/" *prefix* "(.*)") "upload"))
@ -137,6 +138,9 @@ If no lexer is found fallback onto the text lexer."
(setv web.ctx.status (str "201 Created")) (setv web.ctx.status (str "201 Created"))
(+ web.ctx.home "/" *prefix* (get h 0) "\n")))]]) (+ web.ctx.home "/" *prefix* (get h 0) "\n")))]])
(defclass index []
[[GET (lambda [self] (render.index))]])
(defun hypo-start [argv] (defun hypo-start [argv]
(let ((sys.argv (cdr sys.argv)) (let ((sys.argv (cdr sys.argv))
(app (web.application urls (globals)))) (app (web.application urls (globals))))

159
templates/index.html Normal file
View file

@ -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 <http://www.gnu.org/licenses/>.
<!DOCTYPE html>
<html>
<head>
<title>Hypo</title>
<link href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.3.2/css/bootstrap.min.css"
type="text/css" rel="stylesheet" />
<meta name="robots" content="noindex, nofollow">
</head>
<body>
<div class="navbar navbar-static-top navbar-inverse">
<div class="navbar-inner">
<a class="brand">Hypo</a>
</div>
</div>
<div class="container">
<h1>Hypo</h1>
<p>
This is hypo. Hypo is supposed to be an easy way to share/store
code snippets and other files.
</p>
<div id="outline-container-sec-1-1" class="outline-3">
<h2 id="sec-1">Usage</h2>
<div class="outline-text-2" id="text-1">
<p>
Once setup it will not show much of anything, first you'll
have to upload something.
</p>
</div>
<div id="outline-container-sec-1-1" class="outline-3">
<h3 id="sec-1-1">Uploading</h3>
<div class="outline-text-3" id="text-1-1">
<p>
Uploading is done with the <code>PUT</code> HTTP method.
An example with curl:
</p>
<pre class="example"># curl --upload-file README.org http://yourserver.example.com/ 2&gt;/dev/null
http://yourserver.example.com/abcdef1</pre>
<p>
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 <code>jpg</code>, <code>png</code>
and <code>gif</code>) it will show the image.
</p>
<p>
If Hypo doens't know what kind of file you're uploading
it will default to treating it as a text file.
</p>
</div>
</div>
<div id="outline-container-sec-1-2" class="outline-3">
<h3 id="sec-1-2">Viewing</h3>
<div class="outline-text-3" id="text-1-2">
<p>
All files can be viewed (from, for example, your web
browser) in three different ways. The regularly, raw and
as download.
</p>
<p>
The regular way shows a web page with the file either
syntax highlighted using <code>pygments</code> 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:
</p>
<pre class="example">http://yourserver.example.com/abcdef1</pre>
<p>
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 <code>raw/</code>. For
example:
</p>
<pre class="example">http://yourserver.example.com/raw/abcdef1</pre>
<p>
The download view is the same as the raw view except
that the <code>Content-Disposition</code> header has
been set to <code>attachment</code>. 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 <code>dl/</code>. For example:
</p>
<pre class="example">http://yourserver.example.com/dl/abcdef1</pre>
</div>
</div>
<div id="outline-container-sec-1-3" class="outline-3">
<h3 id="sec-1-3">Deleting</h3>
<div class="outline-text-3" id="text-1-3">
<p>
After you have uploaded a file you can delete it again
by using the <code>DELETE</code> HTTP method. An example
with curl:
</p>
<pre class="example"># curl -XDELETE http://yourserver.example.com/abcdef1
None</pre>
<p>
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.
</p>
</div>
</div>
</div>
<div id="outline-container-sec-2" class="outline-2">
<h2 id="sec-2">Clients</h2>
<div class="outline-text-2" id="text-2">
<p>
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) <a href="http://code.ryuslash.org/hypo-emacs/">Emacs
client</a>.
</p>
</div>
</div>
<footer>
This site is powered
by <a href="http://projects.ryuslash.org/hypo">Hypo</a>. Hypo
is available under
the <a href="https://www.gnu.org/licenses/agpl-3.0.html">GNU
Affero General Public License</a>. You can download its source
code <a href="http://code.ryuslash.org/cgit.cgi/hypo/">here</a>.
</footer>
</div>
</body>
</html>