class Object

Public Instance Methods

execute(req_body: nil, query_params: {}, headers: {}, method: 'post') click to toggle source
# File lib/faastruby-rpc/test_helper.rb, line 30
def execute(req_body: nil, query_params: {}, headers: {}, method: 'post')
  @thread = Thread.new do
    url = "#{FAASTRUBY_HOST}/#{@path}#{convert_query_params(query_params)}"
    uri = URI.parse(url)
    use_ssl = uri.scheme == 'https' ? true : false
    response = FaaStRuby::RPC.response(@path)
    resp_headers = {}
    response.headers.each{|k,v| resp_headers[k] = v}
    case resp_headers['content-type']
    when 'application/json'
      begin
        resp_body = Oj.load(response.body)
      rescue Oj::ParseError => e
        if response.body.is_a?(String)
          resp_body = response.body
        else
          raise e if @raise_errors
          resp_body = {
            'error' => e.message,
            'location' => e.backtrace&.first
          }
        end
      end
    when 'application/yaml'
      resp_body = YAML.load(response.body)
    else
      resp_body = response.body
    end
    raise FaaStRuby::RPC::ExecutionError.new("Function #{@path} returned status code #{response.code} - #{resp_body['error']} - #{resp_body['location']}") if response.code.to_i >= 400 && @raise_errors
    @response = FaaStRuby::RPC::Response.new(resp_body, response.code.to_i, resp_headers)
  end
  self
end
require_function(function, as:, raise_errors: true) click to toggle source
# File lib/faastruby-rpc.rb, line 16
def require_function(function, as:, raise_errors: true)
  as[0] = as[0].capitalize
  Object.send(:remove_const, as) if Object.const_defined?(as)
  Object.const_set as, FaaStRuby::RPC::Caller.new(function, raise_errors: raise_errors)
  return false
end