diff --git a/config.ru b/config.ru index 7cfb73b..49a1965 100644 --- a/config.ru +++ b/config.ru @@ -2,3 +2,20 @@ require ::File.expand_path('../config/environment', __FILE__) run Noosfero::Application +require "config/environment" + + +#use Rails::Rack::LogTailer +#use Rails::Rack::Static +#run ActionController::Dispatcher.new + +rails_app = Rack::Builder.new do + use Rails::Rack::LogTailer + use Rails::Rack::Static + run ActionController::Dispatcher.new +end + +run Rack::Cascade.new([ + API::API, + rails_app +]) diff --git a/lib/api/api.rb b/lib/api/api.rb new file mode 100644 index 0000000..0ef7fdf --- /dev/null +++ b/lib/api/api.rb @@ -0,0 +1,18 @@ +require 'grape' + +module API + class API < Grape::API + version 'v1' + prefix "api" + format :json + content_type :txt, "text/plain" + + mount V1::Articles + mount V1::Comments + +# helpers APIHelpers + +# require Articles + + end +end diff --git a/lib/api/v1/articles.rb b/lib/api/v1/articles.rb new file mode 100644 index 0000000..c35499c --- /dev/null +++ b/lib/api/v1/articles.rb @@ -0,0 +1,34 @@ +module API + module V1 + class Articles < Grape::API + + resource :articles do + + get do + first_update = DateTime.parse(params[:first_update]) if params[:first_update] + last_update = DateTime.parse(params[:last_update]) if params[:last_update] + + if first_update.nil? + begin_date = Article.first.created_at + end_date = last_update.nil? ? DateTime.now : last_update + else + begin_date = first_update + end_date = DateTime.now + end + + limit = params[:limit].to_i + limit = 20 if limit == 0 + conditions = {} + conditions[:type] = params[:content_type] if params[:content_type] #FIXME validate type + conditions[:created_at] = begin_date...end_date + Article.find(:all, :conditions => conditions, :offset => (first_update.nil? ? 0 : 1), :limit => limit, :order => "created_at DESC") + end + + get ':id' do + Article.find(params[:id]) + end + end + + end + end +end diff --git a/lib/api/v1/comments.rb b/lib/api/v1/comments.rb new file mode 100644 index 0000000..6c6d9ad --- /dev/null +++ b/lib/api/v1/comments.rb @@ -0,0 +1,19 @@ +module API + module V1 + class Comments < Grape::API + + resource :articles do + + get ":id/comments" do + Article.find(params[:id]).comments + end + + get ":id/comments/:comment_id" do + Article.find(params[:id]).comments.find(params[:comment_id]) + end + + end + + end + end +end -- libgit2 0.21.2