1
0

request.rb 676 B

123456789101112131415161718192021222324252627282930313233
  1. module Docs
  2. class Request < Typhoeus::Request
  3. include Instrumentable
  4. DEFAULT_OPTIONS = {
  5. followlocation: true,
  6. headers: { 'User-Agent' => 'DevDocs' }
  7. }
  8. def self.run(*args, &block)
  9. request = new(*args)
  10. request.on_complete(&block) if block
  11. request.run
  12. end
  13. def initialize(url, options = {})
  14. super url.to_s, DEFAULT_OPTIONS.merge(options)
  15. end
  16. def response=(value)
  17. value.extend Response if value
  18. super
  19. end
  20. def run
  21. instrument 'response.request', url: base_url do |payload|
  22. response = super
  23. payload[:response] = response
  24. response
  25. end
  26. end
  27. end
  28. end