lib/hoptoad-api/client.rb in hoptoad-api-2.2.0 vs lib/hoptoad-api/client.rb in hoptoad-api-2.3.0

- old
+ new

@@ -1,42 +1,5 @@ -# Ruby lib for working with the Hoptoad API's XML interface. -# The first thing you need to set is the account name. This is the same -# as the web address for your account. -# -# Hoptoad.account = 'myaccount' -# -# Then, you should set the authentication token. -# -# Hoptoad.auth_token = 'abcdefg' -# -# If no token or authentication info is given, a HoptoadError exception will be raised. -# -# If your account uses ssl then turn it on: -# -# Hoptoad.secure = true -# -# For more details, check out the hoptoad docs at http://hoptoadapp.com/pages/api. -# -# Find errors -# -# Errors are paginated. You get 25 at a time. -# errors = Hoptoad::Error.find(:all) -# -# with pagination: -# Hoptoad::Error.find(:all, :params => { :page => 2 }) -# -# find individual error by ID -# Hoptoad::Error.find(44) -# -# Find *all* notices by error_id -# -# notices = Hoptoad::Notice.all(1234) # 1234 == error id -# -# Find notice by id + error_id -# -# notice = Hoptoad::Notice.find(12345, 1234) # 12345 == notice id, 1234 == error id - module Hoptoad class Base include HTTParty format :xml @@ -61,117 +24,7 @@ end Hashie::Mash.new(response) end - end - - class Error < Base - - def self.find(*args) - setup - - results = case args.first - when Fixnum - find_individual(args) - when :all - find_all(args) - else - raise HoptoadError.new('Invalid argument') - end - - raise HoptoadError.new('No results found.') if results.nil? - raise HoptoadError.new(results.errors.error) if results.errors - - results.group || results.groups - end - - def self.update(error, options) - setup - - self.class.put(collection_path, options) - end - - private - - def self.find_all(args) - options = args.extract_options! - - fetch(collection_path, options) - end - - def self.find_individual(args) - id = args.shift - options = args.extract_options! - - fetch(error_path(id), options) - end - - def self.collection_path - '/errors.xml' - end - - def self.error_path(error_id) - "/errors/#{error_id}.xml" - end - - end - - class Notice < Base - - def self.find(id, error_id, options={}) - setup - - hash = fetch(find_path(id, error_id), options) - - if hash.errors - raise HoptoadError.new(results.errors.error) - end - - hash.notice - end - - def self.find_all_by_error_id(error_id) - setup - - options = {} - notices = [] - page = 1 - while true - options[:page] = page - hash = fetch(all_path(error_id), options) - if hash.errors - raise HoptoadError.new(results.errors.error) - end - notice_stubs = hash.notices - - notice_stubs.map do |notice| - notices << find(notice.id, error_id) - end - break if notice_stubs.size < 30 - page += 1 - end - notices - end - - def self.find_by_error_id(error_id, options={ 'page' => 1}) - setup - - hash = fetch(all_path(error_id), options) - if hash.errors - raise HoptoadError.new(results.errors.error) - end - - hash.notices - end - - private - - def self.find_path(id, error_id) - "/errors/#{error_id}/notices/#{id}.xml" - end - - def self.all_path(error_id) - "/errors/#{error_id}/notices.xml" - end end end \ No newline at end of file