/examples/custom_parsers.rb

http://github.com/jnunemaker/httparty · Ruby · 68 lines · 49 code · 14 blank · 5 comment · 0 complexity · d1bb40481da62bf36f68067948a7714b MD5 · raw file

  1. dir = File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
  2. require File.join(dir, 'httparty')
  3. require 'pp'
  4. class ParseAtom
  5. include HTTParty
  6. # Support Atom along with the default parsers: xml, json, etc.
  7. class Parser::Atom < HTTParty::Parser
  8. SupportedFormats.merge!({"application/atom+xml" => :atom})
  9. protected
  10. # perform atom parsing on body
  11. def atom
  12. body.to_atom
  13. end
  14. end
  15. parser Parser::Atom
  16. end
  17. class OnlyParseAtom
  18. include HTTParty
  19. # Only support Atom
  20. class Parser::OnlyAtom < HTTParty::Parser
  21. SupportedFormats = { "application/atom+xml" => :atom }
  22. protected
  23. # perform atom parsing on body
  24. def atom
  25. body.to_atom
  26. end
  27. end
  28. parser Parser::OnlyAtom
  29. end
  30. class SkipParsing
  31. include HTTParty
  32. # Parse the response body however you like
  33. class Parser::Simple < HTTParty::Parser
  34. def parse
  35. body
  36. end
  37. end
  38. parser Parser::Simple
  39. end
  40. class AdHocParsing
  41. include HTTParty
  42. parser(
  43. proc do |body, format|
  44. case format
  45. when :json
  46. body.to_json
  47. when :xml
  48. body.to_xml
  49. else
  50. body
  51. end
  52. end
  53. )
  54. end