Skip to content

Commit

Permalink
Cached request to provider to increase application performance (bigbl…
Browse files Browse the repository at this point in the history
  • Loading branch information
farhatahmad authored and jfederico committed Aug 21, 2019
1 parent 3d2a0a0 commit 177bf4d
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 2 deletions.
8 changes: 8 additions & 0 deletions app/controllers/admins_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,14 @@ def default_recording_visibility
}
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
Expand Down
14 changes: 12 additions & 2 deletions app/views/admins/components/_settings.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down Expand Up @@ -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 %>
4 changes: 4 additions & 0 deletions config/locales/en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@
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
Expand Down
7 changes: 7 additions & 0 deletions lib/bbb_api.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ def retrieve_provider_info(provider, api = 'api', route = 'getUser')
# 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 + '/',
Expand All @@ -48,6 +51,10 @@ def retrieve_provider_info(provider, api = 'api', route = 'getUser')
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'
Expand Down

0 comments on commit 177bf4d

Please sign in to comment.