20 | {% block content %}{% endblock %} 21 |
├── static ├── robots.txt ├── favicon.ico └── style.css ├── app.yaml ├── index.yaml ├── templates ├── main.html └── base.html └── main.py /static/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Allow: / -------------------------------------------------------------------------------- /static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progrium/clickhooks/master/static/favicon.ico -------------------------------------------------------------------------------- /app.yaml: -------------------------------------------------------------------------------- 1 | application: clickhooks 2 | version: 1 3 | runtime: python 4 | api_version: 1 5 | 6 | handlers: 7 | - url: / 8 | script: main.py 9 | - url: /favicon.ico 10 | static_files: static/favicon.ico 11 | upload: static/favicon.ico 12 | - url: /robots.txt 13 | static_files: static/robots.txt 14 | upload: static/robots.txt 15 | - url: /static 16 | static_dir: static 17 | - url: /.* 18 | script: main.py -------------------------------------------------------------------------------- /index.yaml: -------------------------------------------------------------------------------- 1 | indexes: 2 | 3 | # AUTOGENERATED 4 | 5 | # This index.yaml is automatically updated whenever the dev_appserver 6 | # detects that a new type of query is run. If you want to manage the 7 | # index.yaml file manually, remove the above marker line (the line 8 | # saying "# AUTOGENERATED"). If you want to manage some indexes 9 | # manually, move them above the marker line. The index.yaml file is 10 | # automatically uploaded to the admin console when you next deploy 11 | # your application using appcfg.py. 12 | -------------------------------------------------------------------------------- /static/style.css: -------------------------------------------------------------------------------- 1 | body { font-family: Helvetica,Arial,sans-serif; font-size: smaller;} 2 | #header h1 { display: block; margin: 0;} 3 | #header { border-bottom: 2px solid darkblue; padding: 5px; padding-bottom: 1px; background-color: lightblue;} 4 | #wrapper { margin-left: auto; margin-right: auto; width: 800px;} 5 | #content { margin: 10px; } 6 | pre { font-size: larger;} 7 | ul { padding-left: 20px;} 8 | #make-form { margin: 20px; text-align: center; margin-right: 80px;} 9 | #make-form input { font-size: larger;} 10 | #footer { 11 | margin-top: 20px; 12 | border-top: 1px solid darkblue; 13 | background-color: lightblue; 14 | padding: 5px; 15 | padding-left: 10px; 16 | } 17 | #footer a:visited { color: blue;} -------------------------------------------------------------------------------- /templates/main.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | {% block content %} 3 | {% if user %} 4 |
These are your ClickHooks:
5 |
ClickHooks is like a URL shortener service, except its purpose is to provide you with a callback via HTTP POST (aka webhooks) when people go to your link. This should really be a feature of something like tr.im, but apparently they don't know what's up.
21 |