3
\$\begingroup\$

I got sick of every time I make an Http request validating that the response was a success. I did a lot of:

if response.class == Net::HTTPOK

or

if response.is_a? Net::HTTPSuccess

I wanted something a little prettier so I came up with the following. I don't write a lot of class extensions like this so I wanted some input.

require 'net/http'
class Net::HTTPResponse
  def success?
    return false if ! self.is_a? Net::HTTPSuccess
    return true
  end
end

Now once the file is included I can say:

if response.success?
\$\endgroup\$
  • \$\begingroup\$ Just about every alternative to Net::HTTP has a better interface. Don't feel compelled to use it. \$\endgroup\$ – Mark Thomas Mar 29 '18 at 16:29
2
\$\begingroup\$

Though your solution would work, I would have gone for something like this:

class Net::HTTPResponse
  def success?
    false
  end
end

class Net::HTTPSuccess
  def success?
    true
  end
end

If you do keep your solution, you could simplify it to:

class Net::HTTPResponse
  def success?
    self.is_a? Net::HTTPSuccess
  end
end
\$\endgroup\$
  • \$\begingroup\$ A short comment about what like this or could simplify it to mean would be great ;-) \$\endgroup\$ – t3chb0t Mar 29 '18 at 17:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.