diff options
Diffstat (limited to 'clip.rb')
| -rw-r--r-- | clip.rb | 63 |
1 files changed, 63 insertions, 0 deletions
@@ -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 |
