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