From b3d0b2dc06bfa54bace638d5f5bf5eafe89c04f2 Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Tue, 28 Jun 2016 11:39:31 +0200 Subject: [PATCH] JSON controller added. /json/package/:name implemented --- app/controllers/json_controller.rb | 14 ++++++++++++++ app/views/json/package.json.jbuilder | 7 +++++++ config/routes.rb | 1 + test/controllers/json_controller_test.rb | 24 ++++++++++++++++++++++++ 4 files changed, 46 insertions(+) create mode 100644 app/controllers/json_controller.rb create mode 100644 app/views/json/package.json.jbuilder create mode 100644 test/controllers/json_controller_test.rb diff --git a/app/controllers/json_controller.rb b/app/controllers/json_controller.rb new file mode 100644 index 0000000..4a376e6 --- /dev/null +++ b/app/controllers/json_controller.rb @@ -0,0 +1,14 @@ +class JsonController < ApplicationController + def package + @p = Package.find_by_name! params[:name] + end + + def packages + end + + def screenshots + end + + def packages_without_screenshots + end +end diff --git a/app/views/json/package.json.jbuilder b/app/views/json/package.json.jbuilder new file mode 100644 index 0000000..f651db6 --- /dev/null +++ b/app/views/json/package.json.jbuilder @@ -0,0 +1,7 @@ +json.package @p.name + +json.screenshots @p.screenshots do |s| + 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)}" + json.version s.version +end diff --git a/config/routes.rb b/config/routes.rb index b997f73..5307dda 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -35,6 +35,7 @@ Debshots::Application.routes.draw do get 'with_screenshots', to: redirect('/packages?show=with') get 'without_screenshots', to: redirect('/packages?show=without') + get 'json/package/:name' => 'json#package', as: :json_package, 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". diff --git a/test/controllers/json_controller_test.rb b/test/controllers/json_controller_test.rb new file mode 100644 index 0000000..0b10766 --- /dev/null +++ b/test/controllers/json_controller_test.rb @@ -0,0 +1,24 @@ +require "test_helper" + +class JsonControllerTest < ActionController::TestCase + def test_package + get :package + assert_response :success + end + + def test_packages + get :packages + assert_response :success + end + + def test_screenshots + get :screenshots + assert_response :success + end + + def test_packages-without-screenshots + get :packages-without-screenshots + assert_response :success + end + +end