class Forced::Base
Public Class Methods
get_records(request)
click to toggle source
# File lib/forced/base.rb, line 4 def get_records(request) @client_platform = get_client_platform(request) @client_version = get_client_version(request) @client_version_records = (@client_platform && @client_version ? Forced::Client.find_by!(identifier: @client_platform).versions : nil) @versions_after_client = @client_version_records&.where('version > ?', @client_version) @latest_app_version = @client_version_records&.last @any_forced_in_the_future = @versions_after_client&.pluck(:force_update)&.any? end
Private Class Methods
check_update_status(client_version, latest_app_version, any_forced_in_the_future)
click to toggle source
# File lib/forced/base.rb, line 24 def check_update_status(client_version, latest_app_version, any_forced_in_the_future) nil_report = [] nil_report << MESSAGES[:app_version_returned_nil] if latest_app_version.nil? nil_report << MESSAGES[:client_version_returned_nil] if client_version.nil? return nil_report.join(', ') if !nil_report.empty? client_v = Gem::Version.new(client_version) latest_v = Gem::Version.new(latest_app_version.version) case when client_v == latest_v return MESSAGES[:no_update] when client_v < latest_v any_forced_in_the_future ? MESSAGES[:force_update] : MESSAGES[:just_update] when client_v > latest_v return MESSAGES[:client_is_ahead_of_backend] else return MESSAGES[:something_went_wrong] end end
get_client_platform(request)
click to toggle source
# File lib/forced/base.rb, line 16 def get_client_platform(request) return request.headers['X-Platform'].to_s.downcase end
get_client_version(request)
click to toggle source
# File lib/forced/base.rb, line 20 def get_client_version(request) return request.headers['X-Client-Version'] end