# frozen_string_literal: true module QasDockGem class RequestsAPI def initialize require 'logger' require 'httparty' @logger = Logger.new($stdout) end def initialize_headers(token, headers) headers_default = { "cache-control": 'no-cache', "content-type": 'application/json' } # seta o campo authorization caso o token seja diferente de nulo headers_default['Authorization'] = token unless token.nil? # define os headers parametrizados como um Hash caso seja nulo headers = {} if headers.nil? # realiza o merge dos headers defaults + os headers parametrizados headers_default.merge!(headers) # remove o campo content-type caso não seja informado if (headers_default[:"content-type"] == '') || headers_default[:"content-type"].nil? headers_default.delete(:"content-type") end # retorna os headers JSON.parse(headers_default.to_json) end def initialize_request(params) formated_params = nil if params.include?(:payload) formated_params = init_request_body(params[:token], params[:payload], params[:headers]) elsif params.include?(:query) formated_params = init_request_query(params[:token], params[:query], params[:headers]) if params.include?(:query) elsif params.include?(:basic_auth) formated_params = init_request_basic_auth(params[:token], params[:basic_auth], params[:headers]) else #codar end # retorna os params formatados para a request formated_params end def init_request_body(token, payload, headers) final_headers = initialize_headers(token, headers) payload = nil if payload.nil? @logger.info("Payload: #{payload.to_json}") @logger.info("Headers: #{final_headers}") { headers: final_headers, body: payload.nil? ? payload : payload.to_json } end def init_request_basic_auth(token, basic_auth, headers) final_headers = initialize_headers(token, headers) @logger.info("Headers: #{final_headers}") { headers: final_headers, basic_auth: basic_auth } end def init_request_query(token, query, headers) final_headers = initialize_headers(token, headers) query = {} if query.nil? @logger.info("Query: #{query}") @logger.info("Headers: #{final_headers}") { headers: final_headers, query: query } end def execute_post(params) formated_params = initialize_request(params) @logger.info("URI: #{params[:uri]}") @logger.info('Realizando POST') request = HTTParty.post(params[:uri], formated_params) @logger.info("URI Final: #{request.request.last_uri}") @logger.info("POST realizado \n") request end def execute_get(params) formated_params = initialize_request(params) @logger.info("URI: #{params[:uri]}") @logger.info('Realizando GET') request = HTTParty.get(params[:uri], formated_params) @logger.info("URI Final: #{request.request.last_uri}") @logger.info("GET realizado \n") request end def execute_patch(params) formated_params = initialize_request(params) @logger.info("URI: #{params[:uri]}") @logger.info('Realizando PATCH') request = HTTParty.patch(params[:uri], formated_params) @logger.info("URI Final: #{request.request.last_uri}") @logger.info("PATCH realizado \n") request end def execute_put(params) formated_params = initialize_request(params) @logger.info("URI: #{params[:uri]}") @logger.info('Realizando PUT') request = HTTParty.put(params[:uri], formated_params) @logger.info("URI Final: #{request.request.last_uri}") @logger.info("PUT realizado \n") request end def execute_delete(params) formated_params = initialize_request(params) @logger.info("URI: #{params[:uri]}") @logger.info('Realizando DELETE') request = HTTParty.put(params[:uri], formated_params) @logger.info("URI Final: #{request.request.last_uri}") @logger.info("DELETE realizado \n") request end end end