class IssueExporting::Exporter

Attributes

outputter[RW]

Public Class Methods

new(owner, repo, token = nil, options = { page_size: true }) click to toggle source
# File lib/issue_exporter/export.rb, line 10
def initialize(owner, repo, token = nil, options = { page_size: true })
  @owner = owner
  @repo = repo
  @token = token
  @options = options
  valid_option_keys = [:path, :multiple_files, :output_type]
  outputter_options = options.select { |k,v| valid_option_keys.include? k }
  @outputter = build_outputter outputter_options
end

Public Instance Methods

build_outputter(outputter_options) click to toggle source
# File lib/issue_exporter/export.rb, line 50
def build_outputter(outputter_options)
  output_type = outputter_options[:output_type] || 'file'
  case output_type
  when 'csv'
    return CsvOutputter.new(outputter_options)
  else
    return FileOutputter.new(outputter_options)
  end
end
build_query_string(options) click to toggle source
# File lib/issue_exporter/export.rb, line 32
def build_query_string(options)
  values = {
    include_closed_issues: 'state=all',
    page_size: 'per_page=100'
  }
  qs = options.reduce([]) do |arr, kv| 
    key, val = kv
    query_value = values[key] if val
    if query_value.nil?
      arr
    else
      arr.push(query_value) unless query_value.nil?
    end
  end
  if qs == [] then return '' end
  return '&' + qs.join('&')
end
export() click to toggle source
# File lib/issue_exporter/export.rb, line 20
def export
  error_handler = ErrorHandler.new
  url = IssueExporting.make_uri @owner, @repo, @token
  url.query += build_query_string @options
  response = Net::HTTP::get url
  if err = error_handler.error_message(response)
    error_handler.handle_error err
  else
    outputter.write response
  end
end