/json/packages and /json/screenshots implemented

This commit is contained in:
Christoph Haas 2016-06-28 17:03:40 +02:00
parent b3d0b2dc06
commit a90bb51b38
4 changed files with 25 additions and 0 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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".