aboutsummaryrefslogtreecommitdiffstats
path: root/clip.rb
diff options
context:
space:
mode:
Diffstat (limited to 'clip.rb')
-rw-r--r--clip.rb63
1 files changed, 63 insertions, 0 deletions
diff --git a/clip.rb b/clip.rb
new file mode 100644
index 0000000..ef3c1ce
--- /dev/null
+++ b/clip.rb
@@ -0,0 +1,63 @@
+# Clip app
+
+Camping.goes :Clip
+
+module Clip
+ set :views, File.dirname(__FILE__) + '/views'
+end
+
+module Clip::Controllers
+ class Index < R '/'
+ def get
+ @clips = Clip.all
+
+ render :index
+ end
+ end
+
+ class Clips < R '/clips'
+ def post
+ @headers['Access-Control-Allow-Origin'] = '*'
+
+ @url_regex = /\b((?:https?:\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/?)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s\`!()\[\]{};:\'\".,<>?]))/i
+
+ @result = {}
+
+ if @input.url and @url_regex.match(@input.url) and not Clip.find_by_url(@input.url)
+ Clip.create(:url => @input.url)
+
+ @result[:success] = true
+ else
+ @result[:success] = false
+ end
+
+ @result = @result.to_json
+
+ render :clips, :layout => false
+ end
+ end
+end
+
+
+module Clip::Models
+ class Clip < Base
+ end
+
+ class BasicFields < V 1.0
+ def self.up
+ create_table Clip.table_name do |t|
+ t.text :url
+ t.timestamps
+ end
+ end
+
+ def self.down
+ drop_table Clip.table_name
+ end
+ end
+end
+
+
+def Clip.create
+ Clip::Models.create_schema
+end