Class: Gitlab::Webpack::FileLoader

Inherits:
Object
  • Object
show all
Defined in:
lib/gitlab/webpack/file_loader.rb

Defined Under Namespace

Classes: BaseError

Constant Summary collapse

StaticLoadError =
Class.new(BaseError)
DevServerLoadError =
Class.new(BaseError)
DevServerSSLError =
Class.new(BaseError)

Class Method Summary collapse

Class Method Details

.dev_server_path(path) ⇒ Object



60
61
62
# File 'lib/gitlab/webpack/file_loader.rb', line 60

def self.dev_server_path(path)
  "/#{Gitlab.config.webpack.public_path}/#{path}"
end

.load(path) ⇒ Object



23
24
25
26
27
28
29
# File 'lib/gitlab/webpack/file_loader.rb', line 23

def self.load(path)
  if Gitlab.config.webpack.dev_server.enabled
    self.load_from_dev_server(path)
  else
    self.load_from_static(path)
  end
end

.load_from_dev_server(path) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/gitlab/webpack/file_loader.rb', line 31

def self.load_from_dev_server(path)
  host = Gitlab.config.webpack.dev_server.host
  port = Gitlab.config.webpack.dev_server.port
  scheme = Gitlab.config.webpack.dev_server.https ? 'https' : 'http'
  uri = Addressable::URI.new(scheme: scheme, host: host, port: port, path: self.dev_server_path(path))

  # localhost could be blocked via Gitlab::HTTP
  response = HTTParty.get(uri.to_s, verify: false) # rubocop:disable Gitlab/HTTParty

  return response.body if response.code == 200

  raise "HTTP error #{response.code}"
rescue OpenSSL::SSL::SSLError, EOFError => e
  raise DevServerSSLError.new(uri, e)
rescue StandardError => e
  raise DevServerLoadError.new(uri, e)
end

.load_from_static(path) ⇒ Object



49
50
51
52
53
54
55
56
57
58
# File 'lib/gitlab/webpack/file_loader.rb', line 49

def self.load_from_static(path)
  file_uri = ::Rails.root.join(
    Gitlab.config.webpack.output_dir,
    path
  )

  File.read(file_uri)
rescue StandardError => e
  raise StaticLoadError.new(file_uri, e)
end