class Redmine::CsvBaseService
Constants
- API_LOCATION
Public Class Methods
new(token)
click to toggle source
# File lib/renuo/cli/app/redmine/csv_base_service.rb, line 9 def initialize(token) @token = token end
Public Instance Methods
get()
click to toggle source
# File lib/renuo/cli/app/redmine/csv_base_service.rb, line 13 def get http_response = http_request(generate_url) encoded_body = http_response.body.force_encoding("ISO-8859-1").encode("UTF-8") csv = parse_csv(encoded_body) parse_results(csv) end
Private Instance Methods
generate_url()
click to toggle source
# File lib/renuo/cli/app/redmine/csv_base_service.rb, line 22 def generate_url URI("#{API_LOCATION}/time_entries/report.csv?#{query}&key=#{@token}") end
http_request(url)
click to toggle source
# File lib/renuo/cli/app/redmine/csv_base_service.rb, line 26 def http_request(url) req = Net::HTTP::Get.new(url) Net::HTTP.start(url.hostname, url.port, use_ssl: true) do |http| http.request(req) end end
parse_csv(body)
click to toggle source
# File lib/renuo/cli/app/redmine/csv_base_service.rb, line 41 def parse_csv(body) separated_csv_entries = CSV.parse(body, col_sep: ",") keys = separated_csv_entries.shift[1..-2] entries = separated_csv_entries.shift[1..-2] keys.zip(entries).to_h rescue CSV::MalformedCSVError raise_bad_data_error end
parse_results(_csv)
click to toggle source
# File lib/renuo/cli/app/redmine/csv_base_service.rb, line 37 def parse_results(_csv) # to be implemented in concrete service end
query()
click to toggle source
# File lib/renuo/cli/app/redmine/csv_base_service.rb, line 33 def query # to be implemented in concrete service end
raise_bad_data_error()
click to toggle source
# File lib/renuo/cli/app/redmine/csv_base_service.rb, line 50 def raise_bad_data_error error = "Malformed CSV, please use comma delimiters (Redmine language setting?)" Rails.logger.error error raise Redmine::BadData, error end