diff --git a/app/controllers/json_controller.rb b/app/controllers/json_controller.rb index 4a376e6..66251b3 100644 --- a/app/controllers/json_controller.rb +++ b/app/controllers/json_controller.rb @@ -1,14 +1,20 @@ class JsonController < ApplicationController + # JSON information on a single package def package @p = Package.find_by_name! params[:name] end + # JSON information on all packages def packages + @p = Package.all end + # JSON information on all screenshots def screenshots + @s = Screenshot.includes(:package) end + # JSON list of packages that do not have screenshots def packages_without_screenshots end end diff --git a/app/views/json/packages.json.jbuilder b/app/views/json/packages.json.jbuilder new file mode 100644 index 0000000..e3ea32d --- /dev/null +++ b/app/views/json/packages.json.jbuilder @@ -0,0 +1,6 @@ +json.cache! ['json_packages'], expires_in: 1.hour do + json.packages @p do |p| + json.extract! p, :maintainer, :name, :section, :maintainer_email, :homepage, :description + json.url package_url(p.name) + end +end diff --git a/app/views/json/screenshots.json.jbuilder b/app/views/json/screenshots.json.jbuilder new file mode 100644 index 0000000..e226259 --- /dev/null +++ b/app/views/json/screenshots.json.jbuilder @@ -0,0 +1,10 @@ +json.cache! ['json_screenshots'], expires_in: 1.hour do + json.screenshots @s do |s| + p = s.package + json.extract! s, :version + json.extract! p, :maintainer, :name, :section, :maintainer_email, :homepage, :description + json.url package_url(p.name) + json.small_image_url "#{request.protocol}#{request.host_with_port}#{s.image.url(:thumb, timestamp: false)}" + json.large_image_url "#{request.protocol}#{request.host_with_port}#{s.image.url(:large, timestamp: false)}" + end +end diff --git a/config/routes.rb b/config/routes.rb index 5307dda..9c73bd8 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -36,6 +36,9 @@ Debshots::Application.routes.draw do get 'without_screenshots', to: redirect('/packages?show=without') get 'json/package/:name' => 'json#package', as: :json_package, defaults: { format: :json } + get 'json/packages' => 'json#packages', as: :json_packages, defaults: { format: :json } + get 'json/screenshots' => 'json#screenshots', as: :json_screenshots, defaults: { format: :json } + # The priority is based upon order of creation: first created -> highest priority. # See how all your routes lay out with "rake routes".