Class: I18n::Backend::Http::EtagHttpClient

Inherits:
Object
  • Object
show all
Defined in:
lib/i18n/backend/http/etag_http_client.rb

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ EtagHttpClient

Returns a new instance of EtagHttpClient.



7
8
9
# File 'lib/i18n/backend/http/etag_http_client.rb', line 7

def initialize(options)
  @options = options
end

Instance Method Details

#download(path, etag:) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/i18n/backend/http/etag_http_client.rb', line 11

def download(path, etag:)
  @client ||= Faraday.new(@options[:host])
  response = @client.get(path) do |request|
    request.headers.merge!(@options[:headers]) if @options[:headers]
    request.headers["If-None-Match"] = etag if etag
    request.options[:timeout] = @options[:http_read_timeout]
    request.options[:open_timeout] = @options[:http_open_timeout]
  end

  case response.status
  when 200 then [response.body, response['ETag']]
  when 304 then nil
  else
    raise "Failed request: #{response.inspect}"
  end
end