lib/resend/request.rb in resend-0.13.0 vs lib/resend/request.rb in resend-0.14.0

- old
+ new

@@ -32,18 +32,33 @@ headers: @headers } options[:body] = @body.to_json unless @body.empty? resp = HTTParty.send(@verb.to_sym, "#{BASE_URL}#{@path}", options) + + check_json!(resp) + resp.transform_keys!(&:to_sym) unless resp.body.empty? handle_error!(resp) if resp[:statusCode] && (resp[:statusCode] != 200 || resp[:statusCode] != 201) resp end def handle_error!(resp) code = resp[:statusCode] body = resp[:message] error = Resend::Error::ERRORS[code] raise(error.new(body, code)) if error + end + + private + + def check_json!(resp) + if resp.body.is_a?(Hash) + JSON.parse(resp.body.to_json) + else + JSON.parse(resp.body) + end + rescue JSON::ParserError, TypeError + raise Resend::Error::InternalServerError.new("Resend API returned an unexpected response", nil) end end end