Class: IssueExporting::Exporter

Inherits:
Object
  • Object
show all
Defined in:
lib/issue_exporter/export.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(owner, repo, token = nil, options = { page_size: true }) ⇒ Exporter

Returns a new instance of Exporter.



10
11
12
13
14
15
16
17
18
# 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

Instance Attribute Details

#outputterObject

Returns the value of attribute outputter.



8
9
10
# File 'lib/issue_exporter/export.rb', line 8

def outputter
  @outputter
end

Instance Method Details

#build_outputter(outputter_options) ⇒ Object



50
51
52
53
54
55
56
57
58
# 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) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# 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

#exportObject



20
21
22
23
24
25
26
27
28
29
30
# 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