class Tng::Gtk::Utils::Fetch
Constants
- LOGGER
Attributes
site[RW]
Public Class Methods
call(params)
click to toggle source
# File lib/tng/gtk/utils/fetch.rb, line 49 def self.call(params) msg=self.name+'#'+__method__.to_s began_at=Time.now.utc original_params = params.dup begin if params.key?(:uuid) no_cache=ENV.fetch('NO_CACHE', nil) unless no_cache cached = Tng::Gtk::Utils::Cache.cached?(params[:uuid]) return cached unless (cached.nil? || cached.empty?) end uuid = params.delete :uuid uri = URI.parse("#{self.site}/#{uuid}") # mind that there cany be more params, so we might need to pass params as well else uri = URI.parse(self.site) uri.query = URI.encode_www_form(sanitize(params)) end request = Net::HTTP::Get.new(uri) request['content-type'] = 'application/json' response = Net::HTTP.start(uri.hostname, uri.port) {|http| http.request(request)} case response when Net::HTTPSuccess body = response.read_body result = JSON.parse(body, quirks_mode: true, symbolize_names: true) cache_result(result) return result when Net::HTTPNotFound return {} unless uuid.nil? return [] else LOGGER.error(start_stop: 'STOP', component:self.name, operation:__method__.to_s, message:"#{response.message}", status:'404', time_elapsed: Time.now.utc - began_at) return nil end rescue Exception => e LOGGER.error(start_stop: 'STOP', component:self.name, operation:__method__.to_s, message:"#{e.message}", time_elapsed: Time.now.utc - began_at) end nil end
Private Class Methods
cache_result(result)
click to toggle source
# File lib/tng/gtk/utils/fetch.rb, line 97 def self.cache_result(result) if result.is_a?(Hash) Tng::Gtk::Utils::Cache.cache(result) return end result.each do |record| Tng::Gtk::Utils::Cache.cache(record) end end
sanitize(params)
click to toggle source
# File lib/tng/gtk/utils/fetch.rb, line 91 def self.sanitize(params) params[:page_number] ||= ENV.fetch('DEFAULT_PAGE_NUMBER', 0) params[:page_size] ||= ENV.fetch('DEFAULT_PAGE_SIZE', 100) params end