public
Description: Kup is a URL redirection service meant to be hosted on Google App Engine.
Homepage: http://www.kup.in
Clone URL: git://github.com/gvishnu/kup.git
Search Repo:
Finalizing everything for 1.0
gvishnu (author)
Tue Apr 08 14:05:10 -0700 2008
commit  e0b21f29f5309e2bfb0b861a5e3c34490a22b9fa
tree    5cfeea9e9fbeb22b30dd04e9b2ed9db89ce5360c
parent  7192c28a4a04f5063d4f3b1cf066bf8b10bac99d
...
6
7
8
9
10
...
6
7
8
 
 
0
@@ -6,6 +6,4 @@
0
 handlers:
0
 - url: /.*
0
   script: kup.py
0
-- url: /_i
0
- static_dir: images
...
1
2
3
 
4
5
 
 
 
 
 
 
 
6
7
8
9
10
11
 
 
 
 
 
 
12
13
 
14
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
 
16
...
1
2
 
3
4
 
5
6
7
8
9
10
11
12
13
14
 
 
 
15
16
17
18
19
20
21
 
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
0
@@ -1,17 +1,91 @@
0
 <!DOCTYPE html>
0
 <html>
0
-<head><title>Kup: Short, fast URL redirection service.</title>
0
+<head><title>Kup: Short &amp; fast URL redirection service.</title>
0
 <style type="text/css">
0
-
0
+#wrapper { position: absolute; width: 300px; height: 200px; margin-left: -150px; margin-top: -100px; left: 50%; top: 50%; }
0
+h1 { font-family: "Trebuchet MS", "Lucida Grande", "Bitstream Vera Sans", "Arial", "serif"; padding: 0; margin: 0; margin-bottom: 10px; }
0
+h1 em { font-size: 12px; }
0
+a { color: #222; text-decoration: none; }
0
+#url { width: 300px; margin-bottom: 10px; }
0
+#kupped { font-size: 13px; font-family: 'Georgia', 'Verdana', 'sans-serif'; line-height: 1.5em; margin-bottom: 12px; }
0
+.green { border: 2px solid #00AA00; }
0
 </style>  
0
 </head>
0
 <body>
0
-<form action="/_" method="post">
0
-<div><input name="url" id="url" rows="3" cols="60"></div>
0
-<div><input type="submit" value="Kup URL!"></div>
0
+<div id="wrapper">
0
+<h1><a href="/">Kup: <em>Short &amp; fast URL redirection service.</em></a></h1>
0
+<form method="post" id="form" name="form" onsubmit="return false;">
0
+<div><input id="url" name="url" rows="3" cols="60"></div>
0
+<div id="kupped"></div>
0
+<div id="div_submit"><input type="submit" id="submit" name="submit" value="Kup URL!"/></div>
0
 </form>
0
-</body>
0
+</div>
0
 <script type="text/javascript">
0
+
0
+function $(el) { return document.getElementById(el); }
0
+
0
+/* Simple cross-browser AJAX function */
0
+function ajax(url, vars, callbackFunction) {
0
+ var request = window.XMLHttpRequest ?
0
+ new XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP.3.0");
0
+ request.open("POST", url, true);
0
+ request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
0
+ request.onreadystatechange = function() {
0
+ if (request.readyState == 4 && request.status == 200) {
0
+ if (request.responseText) {
0
+ callbackFunction(request.responseText);
0
+ }
0
+ }
0
+ };
0
+ request.send(vars);
0
+}
0
+
0
+function is_mac() {
0
+ if (navigator.appVersion.indexOf("Mac")!=-1)
0
+ return true;
0
+ else
0
+ return false;
0
+}
0
+
0
+function reload() {
0
+ $('url').value = '';
0
+ $('div_submit').innerHTML = '<input type="submit" id="submit" name="submit" value="Kup URL!"/>';
0
+ $('kupped').innerHTML = '';
0
+ $('url').className = '';
0
+}
0
+
0
+function kupback(response) {
0
+ $('submit').value = "Kup URL!";
0
+ $('submit').disabled = false;
0
+ $('url').disabled = false;
0
+ if(response == "ERROR") {
0
+ $('kupped').innerHTML = "<em>'" + $('url').value + "'</em> isn't a valid URL!";
0
+ } else {
0
+ $('url').value = response;
0
+ $('url').className = 'green';
0
+ copy_char = (is_mac() == true ? '&#8984;' : 'Ctrl');
0
+ $('kupped').innerHTML = 'Click the above field and press ' + copy_char + '+C to copy to clipboard.';
0
+ $('div_submit').innerHTML = '<button onclick="javascript: reload()">Another?</button>'
0
+ }
0
+}
0
+
0
+$('form').onsubmit = function() {
0
+ $('submit').value = "Kupifying...";
0
+ $('submit').disabled = true;
0
+ $('url').disabled = true;
0
+ ajax('/_', 'url=' + $('url').value, kupback);
0
+ return false;
0
+};
0
+
0
+$('url').onfocus = function() {
0
+ $('url').select();
0
+}
0
+
0
+window.onload = function() {
0
+ $('url').value = '';
0
+}
0
+
0
 </script>
0
+</body>
0
 </html>
...
10
11
12
13
 
14
15
16
...
10
11
12
 
13
14
15
16
0
@@ -10,7 +10,7 @@
0
 # automatically uploaded to the admin console when you next deploy
0
 # your application using appcfg.py.
0
 
0
-# Used once in query history.
0
+# Used 20 times in query history.
0
 - kind: URL
0
   properties:
0
   - name: url_id
0
...
26
27
28
29
 
 
30
31
32
...
34
35
36
37
38
 
 
39
40
41
...
51
52
53
 
54
55
56
...
80
81
82
83
 
84
85
86
...
99
100
101
102
 
103
104
105
...
26
27
28
 
29
30
31
32
33
...
35
36
37
 
 
38
39
40
41
42
...
52
53
54
55
56
57
58
...
82
83
84
 
85
86
87
88
...
101
102
103
 
104
105
106
107
0
@@ -26,7 +26,8 @@
0
   def check_already_existing(self, url):
0
     u = False
0
     try:
0
- u = db.GqlQuery("SELECT * from URL WHERE url = :1", url)[0]
0
+ u = db.GqlQuery("SELECT * from URL WHERE url = :1", url)
0
+ u = u[0]
0
       return u
0
     except (IndexError, AttributeError):
0
       return False
0
@@ -34,8 +35,8 @@
0
   def find_last_url(self):
0
     u = False
0
     try:
0
- u = db.GqlQuery("SELECT * from URL ORDER BY url_id DESC LIMIT 1")
0
- return u[0]
0
+ u = db.GqlQuery("SELECT * from URL ORDER BY url_id DESC LIMIT 1")[0]
0
+ return u
0
     except IndexError:
0
       return False
0
   
0
@@ -51,6 +52,7 @@
0
   def get(self):
0
     template = file(os.path.join(os.path.dirname(__file__), 'index.html'))
0
     template = template.read()
0
+ self.response.content_type = "text/html; charset=utf8"
0
     self.response.out.write(template)
0
 
0
 class Redirect(webapp.RequestHandler):
0
@@ -80,7 +82,7 @@
0
     #if already existing, return that record.
0
     b = u.check_already_existing(next_url)
0
     if(b):
0
- self.response.out.write(u.pattern)
0
+ self.response.out.write('http://kup.in/' + b.pattern)
0
       return
0
       
0
     last_url = u.find_last_url()
0
@@ -99,7 +101,7 @@
0
     u.pattern = next_url_pattern
0
     u.put()
0
         
0
- self.response.out.write(next_url_pattern)
0
+ self.response.out.write('http://kup.in/' + next_url_pattern)
0
 
0
 def main():
0
   application = webapp.WSGIApplication(
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0
@@ -1,18 +1 @@
0
-class Kupify:
0
- def next(self, previous_pattern):
0
- if(previous_pattern == 'z'):
0
- return 'aa'
0
- if(previous_pattern == ''):
0
- return 'a'
0
- if(previous_pattern.endswith("z")):
0
- return self.next(previous_pattern[0:-1]) + 'a'
0
- else:
0
- return previous_pattern[0:-1] + chr(ord(previous_pattern[-1]) + 1)
0
-
0
-
0
-def test():
0
- k = Kupify()
0
- return k.next("c")
0
-
0
-print test()

Comments

    No one has commented yet.