module Grape::CacheControl
Constants
- ALL_DIRECTIVES
- CACHE_CONTROL
- EXPIRES
- SETTABLE_DIRECTIVES
- TRUE
- TRUTHY_DIRECTIVES
- VERSION
Public Class Methods
cache_control(request, *values)
click to toggle source
# File lib/grape/cache_control.rb, line 22 def cache_control(request, *values) cc_directives = {} (cache_control_segments(request.header(CACHE_CONTROL)) | cache_control_values(*values)).each do |segment| directive, argument = segment.split('=', 2) cc_directives[directive.tr('-', '_').to_sym] = argument || true end if !cc_directives.empty? cc_header = [] cc_directives.delete(:public) if cc_directives.key? :private cc_directives.delete(:private) if cc_directives.key? :public cc_directives.each do |k, v| if SETTABLE_DIRECTIVES.include?(k) cc_header << "#{Grape::CacheControl.const_get(k.upcase)}=#{v.to_i}" elsif TRUTHY_DIRECTIVES.include?(k) && v == TRUE cc_header << Grape::CacheControl.const_get(k.upcase) end end request.header(CACHE_CONTROL, cc_header.join(', ')) end end
expires(request, amount, *values)
click to toggle source
# File lib/grape/cache_control.rb, line 45 def expires(request, amount, *values) if amount.is_a? Integer time = Time.now + amount.to_i max_age = amount else time = amount max_age = time - Time.now end values << { max_age: max_age } request.header(EXPIRES, time.httpdate) cache_control(request, *values) end
Private Class Methods
cache_control_segments(header = nil)
click to toggle source
# File lib/grape/cache_control.rb, line 76 def cache_control_segments(header = nil) segments = [] segments.concat header.delete(' ').split(',') unless header.nil? segments end
cache_control_values(*values)
click to toggle source
# File lib/grape/cache_control.rb, line 61 def cache_control_values(*values) cache_control_values = [] values.each do |value| if value.is_a? Hash cache_control_values.concat value.map { |k, v| argument = v.is_a?(Time) ? v - Time.now : v "#{Grape::CacheControl.const_get(k.upcase)}=#{argument}" } elsif value.is_a? Symbol cache_control_values << "#{value}=#{TRUE}" end end cache_control_values end