Class: QueueryClient::UrlDataFileBundle

Inherits:
DataFileBundle show all
Defined in:
lib/queuery_client/url_data_file_bundle.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from DataFileBundle

#each_row

Constructor Details

#initialize(urls, s3_prefix:, logger: Logger.new($stderr)) ⇒ UrlDataFileBundle

Returns a new instance of UrlDataFileBundle.

Raises:

  • (ArgumentError)


8
9
10
11
12
13
# File 'lib/queuery_client/url_data_file_bundle.rb', line 8

def initialize(urls, s3_prefix:, logger: Logger.new($stderr))
  raise ArgumentError, 'no URL given' if urls.empty?
  @data_files = urls.map {|url| UrlDataFile.new(URI.parse(url)) }
  @s3_prefix = s3_prefix
  @logger = logger
end

Instance Attribute Details

#data_filesObject (readonly)

Returns the value of attribute data_files.



15
16
17
# File 'lib/queuery_client/url_data_file_bundle.rb', line 15

def data_files
  @data_files
end

#s3_prefixObject (readonly)

Returns the value of attribute s3_prefix.



16
17
18
# File 'lib/queuery_client/url_data_file_bundle.rb', line 16

def s3_prefix
  @s3_prefix
end

Instance Method Details

#direct(bucket_opts = {}, bundle_opts = {}) ⇒ Object



25
26
27
28
29
30
# File 'lib/queuery_client/url_data_file_bundle.rb', line 25

def direct(bucket_opts = {}, bundle_opts = {})
  s3_uri = URI.parse(s3_prefix)
  bucket = s3_uri.host
  prefix = s3_uri.path[1..-1] # trim heading slash
  S3DataFileBundle.new(bucket, prefix)
end

#urlObject



18
19
20
21
22
23
# File 'lib/queuery_client/url_data_file_bundle.rb', line 18

def url
  uri = data_files.first.url.dup
  uri.query = nil
  uri.path = File.dirname(uri.path)
  uri.to_s
end