Method: Pebblebed::GenericClient#perform

Defined in:
lib/pebblebed/clients/generic_client.rb

#perform(method, url = '', params = {}, &block) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/pebblebed/clients/generic_client.rb', line 12

def perform(method, url = '', params = {}, &block)
  begin
    result = Pebblebed::Http.send(method, service_url(url), service_params(params), &block)
    return DeepStruct.wrap(JSON.parse(result.body))
  rescue JSON::ParserError => e
    if e.message =~ /^lexical error: invalid bytes in UTF8 string/
      raise
    else
      # Treat as non-JSON
      return result.body
    end
  end
end