Class: CacheServer
- Inherits:
-
Object
- Object
- CacheServer
- Defined in:
- lib/cache_server.rb
Constant Summary collapse
- AUTH0_BEARER_HEADER =
'Authorization'.freeze
- CONTENT_TYPE_HEADER =
'Content-Type'.freeze
- GET_HTTP =
Persistent HTTP clients shared across all instances — reuses TCP connections instead of opening a new connection on every request.
Net::HTTP::Persistent.new(name: 'scraper_central_get_cache').tap do |h| h.verify_mode = OpenSSL::SSL::VERIFY_NONE end
- PUT_HTTP =
Net::HTTP::Persistent.new(name: 'scraper_central_put_cache').tap do |h| h.verify_mode = OpenSSL::SSL::VERIFY_NONE end
Instance Method Summary collapse
- #get_cache(url) ⇒ Object
-
#initialize(args) ⇒ CacheServer
constructor
A new instance of CacheServer.
- #put_cache(cache_key, page, headers, cookies, enable_image_cache) ⇒ Object
Constructor Details
#initialize(args) ⇒ CacheServer
Returns a new instance of CacheServer.
22 23 24 25 26 27 28 29 30 |
# File 'lib/cache_server.rb', line 22 def initialize(args) @proxy_name = args[:proxy_name] @enable_js = args[:enable_js] @cache_duration = args[:cache_duration] @s3_key = args[:s3_key] @enable_image_cache = args[:enable_image_cache] @auth_config = args[:auth_config] @logger = Logger.new($stdout) end |
Instance Method Details
#get_cache(url) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/cache_server.rb', line 32 def get_cache(url) payload = prepare_get_cache_payload(url) uri = URI.parse("#{ENV['SERVER_URL_GET_CACHE']}/v1/get-cache") request = Net::HTTP::Get.new(uri.request_uri, auth_headers) request.body = payload.to_json begin response = GET_HTTP.request(uri, request) if response.content_type.include?('application/json') response_body = JSON.parse(response.body) return '', nil, proxy_from_server(response_body) if response_body.key?('proxyUrl') page_from_server = response_body['body'] if @enable_image_cache decoded_data = Base64.decode64(page_from_server) page_from_server = StringIO.new(decoded_data) end return page_from_server, headers_from_server(response_body), nil else @logger.error "Unexpected response type: #{response.content_type}, body: #{response.body}, code: #{response.code}" end rescue StandardError => e @logger.error "Error sending request to server: #{e.}" end ['', nil, nil] end |
#put_cache(cache_key, page, headers, cookies, enable_image_cache) ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/cache_server.rb', line 60 def put_cache(cache_key, page, headers, , enable_image_cache) payload = { cacheKey: cache_key, page: page, headers: headers, cookies: , enableImageCache: enable_image_cache } uri = URI.parse("#{ENV['SERVER_URL_PUT_CACHE']}/v1/put-cache") request = Net::HTTP::Post.new(uri.request_uri, auth_headers) request.body = payload.to_json begin response = PUT_HTTP.request(uri, request) if response.code.to_i != 200 = "Server returned bad status: #{response.code}" @logger.error raise StandardError, end rescue StandardError => e @logger.error "Error sending cache to server: #{e.}" raise e end end |