class Crowdin::Web::SendRequest

Attributes

request[R]

Public Class Methods

new(request, file_destination = nil) click to toggle source
# File lib/crowdin-api/core/send_request.rb, line 8
def initialize(request, file_destination = nil)
  @request          = request
  @file_destination = file_destination
  @errors           = []
end

Public Instance Methods

perform() click to toggle source
# File lib/crowdin-api/core/send_request.rb, line 14
def perform
  parse_response(process_request)
end

Private Instance Methods

download_file(url) click to toggle source
# File lib/crowdin-api/core/send_request.rb, line 54
def download_file(url)
  download    = URI.parse(url).open
  destination = @file_destination

  IO.copy_stream(download, destination)

  destination
rescue StandardError => e
  @errors << "Something went wrong while downloading file. Details - #{e.message}"
end
fetch_response_data(doc) click to toggle source
# File lib/crowdin-api/core/send_request.rb, line 46
def fetch_response_data(doc)
  if @file_destination && doc['data'].is_a?(Hash) && doc['data']['url']
    download_file(doc['data']['url'])
  else
    doc
  end
end
parse_response(response) click to toggle source
# File lib/crowdin-api/core/send_request.rb, line 26
def parse_response(response)
  return @errors.join('; ') if @errors.any?

  begin
    if response
      if response.body.empty?
        response.code
      else
        parsed_body = JSON.parse(response.body)
        parsed_response = fetch_response_data(parsed_body)

        @errors.any? ? @errors.join('; ') : parsed_response
      end
    end
  rescue StandardError => e
    @errors << "Something went wrong while response processing. Details - #{e.message}"
    @errors.join('; ')
  end
end
process_request() click to toggle source
# File lib/crowdin-api/core/send_request.rb, line 20
def process_request
  request.send(request.method)
rescue StandardError => e
  @errors << "Something went wrong while request processing. Details - #{e.message}"
end