module MicroserviceDSL
Constants
- VERSION
Public Class Methods
cache_key(url, req)
click to toggle source
# File lib/microservice_dsl.rb, line 90 def self.cache_key(url, req) @@taggers ||= nil url = url.tr(':', '|') if @@taggers @@taggers.map { |t| Digest::MD5.hexdigest(req.options[:headers][t]) }.join('/') + '-' + url else url end end
cache_taggers=(taggers)
click to toggle source
# File lib/microservice_dsl.rb, line 123 def self.cache_taggers=(taggers) raise unless taggers.is_a?(Array) @@taggers = taggers end
caching?()
click to toggle source
# File lib/microservice_dsl.rb, line 67 def self.caching? if ENV['MS_CACHE_URL'] true else false end end
current_hop()
click to toggle source
# File lib/microservice_dsl.rb, line 148 def self.current_hop Thread.current[:microservice_dsl_current_hop] = '1' unless Thread.current[:microservice_dsl_current_hop] Thread.current[:microservice_dsl_current_hop] end
current_hop=(hop)
click to toggle source
# File lib/microservice_dsl.rb, line 144 def self.current_hop=(hop) Thread.current[:microservice_dsl_current_hop] = hop end
default_headers()
click to toggle source
# File lib/microservice_dsl.rb, line 136 def self.default_headers Thread.current[:microservice_dsl_default_headers] || {} end
default_headers=(headers = {})
click to toggle source
# File lib/microservice_dsl.rb, line 140 def self.default_headers=(headers = {}) Thread.current[:microservice_dsl_default_headers] = headers end
get_cache(url, req)
click to toggle source
# File lib/microservice_dsl.rb, line 112 def self.get_cache(url, req) return nil unless caching? if val = redis.get([redis_hash_name, cache_key(url, req)].join(':')) JSON.parse(val, symbolize_names: true) end end
get_etag(url, req)
click to toggle source
# File lib/microservice_dsl.rb, line 100 def self.get_etag(url, req) return nil unless caching? if val = get_cache(url, req) val[:etag] end end
has_cache?(url, etag, req)
click to toggle source
# File lib/microservice_dsl.rb, line 107 def self.has_cache?(url, etag, req) return nil unless caching? (stored_etag = get_etag(url, req)) && (stored_etag == etag) && stored_etag end
hashable_string_for(obj)
click to toggle source
# File lib/microservice_dsl.rb, line 166 def self.hashable_string_for(obj) case obj when Hash hashable_string_for(obj.sort_by { |sub_obj| sub_obj.first.to_s }) when Array obj.map { |sub_obj| hashable_string_for(sub_obj) }.to_s else obj.to_s end end
hop_header()
click to toggle source
# File lib/microservice_dsl.rb, line 128 def self.hop_header 'X-Hop-Count' end
hop_string()
click to toggle source
# File lib/microservice_dsl.rb, line 162 def self.hop_string [current_hop, next_hop].join('.') end
next_hop()
click to toggle source
# File lib/microservice_dsl.rb, line 157 def self.next_hop Thread.current[:microservice_dsl_next_hop] = 0 unless Thread.current[:microservice_dsl_next_hop] Thread.current[:microservice_dsl_next_hop] += 1 end
next_hop=(hop)
click to toggle source
# File lib/microservice_dsl.rb, line 153 def self.next_hop=(hop) Thread.current[:microservice_dsl_next_hop] = hop end
rack_hop_header()
click to toggle source
# File lib/microservice_dsl.rb, line 132 def self.rack_hop_header "HTTP_#{hop_header.upcase.tr('-', '_')}" end
redis()
click to toggle source
# File lib/microservice_dsl.rb, line 59 def self.redis return nil unless caching? splitted = ENV['MS_CACHE_URL'].split(':') host = splitted[0] port = splitted[1] || '6379' @@redis ||= Redis.new(host: host, port: port) end
redis_hash_name()
click to toggle source
# File lib/microservice_dsl.rb, line 119 def self.redis_hash_name ENV['MS_CACHE_HASH'] || 'msdsl' end
redis_reset!()
click to toggle source
# File lib/microservice_dsl.rb, line 55 def self.redis_reset! @@redis = nil end
set_cache(url, etag, res)
click to toggle source
# File lib/microservice_dsl.rb, line 75 def self.set_cache(url, etag, res) return nil unless caching? puts "Etag: #{etag}" data = { etag: etag, response: { body: res.body, code: res.code, headers: res.headers } } puts data redis.set([redis_hash_name, cache_key(url, res.request)].join(':'), JSON.dump(data)) end