class AdLocalize::Requests::ExportRequest

Constants

CSV_CONTENT_TYPES
DEFAULT_EXPORT_FOLDER
EMPTY_CONTENT_TYPE
SUPPORTED_PLATFORMS

Attributes

csv_paths[RW]
g_spreadsheet_options[R]
locales[R]
merge_policy[R]
output_path[R]
platforms[R]
verbose[R]

Public Class Methods

new(**args) click to toggle source
# File lib/ad_localize/requests/export_request.rb, line 9
def initialize(**args)
  @locales = Array(args[:locales].presence)
  @platforms = args[:platforms].blank? ? SUPPORTED_PLATFORMS : Array(args[:platforms])
  @csv_paths = Array(args[:csv_paths])
  @g_spreadsheet_options = args[:g_spreadsheet_options]
  @verbose = args[:verbose].presence || false
  @output_path = Pathname.new(args[:output_path].presence || DEFAULT_EXPORT_FOLDER)
  if @csv_paths.size > 1 || @g_spreadsheet_options&.has_multiple_sheets?
    @merge_policy = MergePolicy.new(policy: args[:merge_policy].presence || MergePolicy::DEFAULT_POLICY)
  else
    @merge_policy = nil
  end
end

Public Instance Methods

has_csv_files?() click to toggle source
# File lib/ad_localize/requests/export_request.rb, line 34
def has_csv_files?
  !@csv_paths.blank? && @csv_paths.all? { |csv_path| File.exist?(csv_path) && is_csv?(path: csv_path) }
end
has_empty_files?() click to toggle source
# File lib/ad_localize/requests/export_request.rb, line 38
def has_empty_files?
  !@csv_paths.blank? && @csv_paths.all? { |csv_path| File.exist?(csv_path) && is_empty?(path: csv_path) }
end
has_g_spreadsheet_options?() click to toggle source
# File lib/ad_localize/requests/export_request.rb, line 42
def has_g_spreadsheet_options?
  @g_spreadsheet_options.present?
end
multiple_platforms?() click to toggle source
# File lib/ad_localize/requests/export_request.rb, line 46
def multiple_platforms?
  @platforms.size > 1
end
valid?() click to toggle source
# File lib/ad_localize/requests/export_request.rb, line 50
def valid?
  valid_platforms? && (valid_csv_options? || valid_g_spreadsheet_options?)
end
verbose?() click to toggle source
# File lib/ad_localize/requests/export_request.rb, line 54
def verbose?
  verbose
end

Private Instance Methods

content_type(path:) click to toggle source
# File lib/ad_localize/requests/export_request.rb, line 76
def content_type(path:)
  `file --brief --mime-type "#{path}"`.strip
end
is_csv?(path:) click to toggle source
# File lib/ad_localize/requests/export_request.rb, line 68
def is_csv?(path:)
  CSV_CONTENT_TYPES.include? content_type(path: path)
end
is_empty?(path:) click to toggle source
# File lib/ad_localize/requests/export_request.rb, line 72
def is_empty?(path:)
  content_type(path: path) == EMPTY_CONTENT_TYPE
end
valid_csv_options?() click to toggle source
# File lib/ad_localize/requests/export_request.rb, line 60
def valid_csv_options?
  has_csv_files? && (@csv_paths.size == 1 || (@csv_paths.size > 1 && @merge_policy&.valid?))
end
valid_g_spreadsheet_options?() click to toggle source
# File lib/ad_localize/requests/export_request.rb, line 80
def valid_g_spreadsheet_options?
  return false if @g_spreadsheet_options.blank?
  if @g_spreadsheet_options.has_multiple_sheets?
    @g_spreadsheet_options.valid? && @merge_policy&.valid?
  else
    @g_spreadsheet_options.valid?
  end
end
valid_platforms?() click to toggle source
# File lib/ad_localize/requests/export_request.rb, line 64
def valid_platforms?
  @platforms.size.positive? && (@platforms & SUPPORTED_PLATFORMS).size == @platforms.size
end