Cached request to provider to increase application performance (#755)

This commit is contained in:
farhatahmad 2019-08-21 14:45:22 -04:00 committed by Jesus Federico
parent 3d2a0a060b
commit 177bf4d595
5 changed files with 32 additions and 2 deletions

View File

@ -176,6 +176,14 @@ class AdminsController < ApplicationController
}
end
# POST /admins/clear_cache
def clear_cache
Rails.cache.delete("#{@user_domain}/getUser")
Rails.cache.delete("#{@user_domain}/getUserGreenlightCredentials")
redirect_to admin_site_settings_path, flash: { success: I18n.t("administrator.flash.settings") }
end
# ROLES
# GET /admins/roles

View File

@ -120,7 +120,7 @@
</div>
</div>
</div>
<div class="row">
<div class="mb-6 row">
<div class="col-12">
<div class="form-group">
<label class="form-label"><%= t("administrator.site_settings.rooms.title") %></label>
@ -154,4 +154,14 @@
</div>
</div>
</div>
</div>
<% if current_user.has_role? :super_admin%>
<div class="row">
<div class="col-12">
<div class="mb-6 form-group">
<label class="form-label"><%= t("administrator.site_settings.cache.title") %></label>
<label class="form-label text-muted"><%= t("administrator.site_settings.cache.info") %></label>
<%= button_to t("administrator.site_settings.cache.button"), admin_clear_cache_path, class: "btn btn-primary" %>
</div>
</div>
</div>
<% end %>

View File

@ -42,6 +42,10 @@ en:
info: Change the branding image that appears in the top left corner
placeholder: Image Url...
title: Branding Image
cache:
info: Clears the stored provider cache which forces a new request for the updated info
title: Clear Provider Cache
button: Clear Cache
color:
info: Changing the Regular Color will change both Lighten and Darken. Lighten and Darken can then be changed individually
title: Primary Color

View File

@ -54,6 +54,7 @@ Rails.application.routes.draw do
get '/reset', to: 'admins#reset', as: :admin_reset
post '/room_limit', to: 'admins#room_limit', as: :admin_room_limit
post '/default_recording_visibility', to: 'admins#default_recording_visibility', as: :admin_recording_visibility
post '/clear_cache', to: 'admins#clear_cache', as: :admin_clear_cache
get '/roles', to: 'admins#roles', as: :admin_roles
post '/role', to: 'admins#new_role', as: :admin_new_role
patch 'roles/order', to: 'admins#change_role_order', as: :admin_roles_order

View File

@ -27,6 +27,9 @@ module BbbApi
# Include Omniauth accounts under the Greenlight provider.
raise "Provider not included." if !provider || provider.empty?
cached_provider = Rails.cache.fetch("#{provider}/#{route}")
return cached_provider unless cached_provider.nil?
# Build the URI.
uri = encode_bbb_url(
Rails.configuration.loadbalancer_endpoint + api + '/',
@ -48,6 +51,10 @@ module BbbApi
raise doc['message'] unless response.is_a?(Net::HTTPSuccess)
# Return the user credentials if the request succeeded on the loadbalancer.
Rails.cache.fetch("#{provider}/#{route}", expires_in: 1.hours) do
doc['user']
end
return doc['user'] if doc['returncode'] == 'SUCCESS'
raise "User with provider #{provider} does not exist." if doc['messageKey'] == 'noSuchUser'