From baf1617053f29c08343a4cf8bbfb13e51d6a6a92 Mon Sep 17 00:00:00 2001 From: Senad Uka Date: Sat, 20 Jun 2015 05:06:32 +0200 Subject: [PATCH] added etags on prepare_for_display items and menuitems --- front-api/Gemfile | 1 + front-api/Gemfile.lock | 2 ++ front-api/app.rb | 10 +++++++--- front-api/controllers/item.rb | 4 +++- front-api/controllers/menu_item.rb | 4 +++- 5 files changed, 16 insertions(+), 5 deletions(-) diff --git a/front-api/Gemfile b/front-api/Gemfile index 1d851c3..4ee82af 100644 --- a/front-api/Gemfile +++ b/front-api/Gemfile @@ -21,3 +21,4 @@ gem "json" gem 'puma' gem "sinatra-contrib" gem 'rerun' +gem 'xxhash', '~> 0.3.0' diff --git a/front-api/Gemfile.lock b/front-api/Gemfile.lock index d954d06..423703c 100644 --- a/front-api/Gemfile.lock +++ b/front-api/Gemfile.lock @@ -88,6 +88,7 @@ GEM hitimes tzinfo (1.2.2) thread_safe (~> 0.1) + xxhash (0.3.0) PLATFORMS java @@ -106,6 +107,7 @@ DEPENDENCIES sinatra sinatra-activerecord sinatra-contrib + xxhash (~> 0.3.0) BUNDLED WITH 1.10.3 diff --git a/front-api/app.rb b/front-api/app.rb index 3ba1d01..ee43a25 100644 --- a/front-api/app.rb +++ b/front-api/app.rb @@ -4,6 +4,7 @@ require './config' require 'json' require 'sinatra/cookies' require 'elasticsearch' +require 'xxhash' Dir[File.dirname(__FILE__) + '/models/*.rb'].each {|file| require file } @@ -31,11 +32,14 @@ before do end - - - helpers Sinatra::Cookies +def xxhash(text) + seed = 31337 + XXhash.xxh32(text, seed) +end + + Dir[File.dirname(__FILE__) + '/controllers/*.rb'].each {|file| require file } diff --git a/front-api/controllers/item.rb b/front-api/controllers/item.rb index 6eef4aa..e58f608 100644 --- a/front-api/controllers/item.rb +++ b/front-api/controllers/item.rb @@ -1,5 +1,5 @@ def prepare_items_for_mass_display(items) - items.to_json( + items_json = items.to_json( :except => [:created_at, :current_input_price, :stock, :on_display], :include => [ :unit , @@ -7,6 +7,8 @@ def prepare_items_for_mass_display(items) :sub_category, :brand ]) + etag xxhash(items_json) + items_json end def offset_and_limit_invalid?(offset, limit) diff --git a/front-api/controllers/menu_item.rb b/front-api/controllers/menu_item.rb index 0b496a1..17fcb41 100644 --- a/front-api/controllers/menu_item.rb +++ b/front-api/controllers/menu_item.rb @@ -1,6 +1,8 @@ get '/menuitem' do # list all menu items - MenuItem.eager_load(menu_sub_items: :menu_sub_sub_items) + menu_items_json = MenuItem.eager_load(menu_sub_items: :menu_sub_sub_items) .order("menu_items.ordinal, menu_sub_items.ordinal, menu_sub_sub_items.ordinal") .to_json(:include => [:menu_sub_items => {:include => :menu_sub_sub_items}]) + etag xxhash(menu_items) + menu_items_json end