Sha256: 7795d026e00e8bc5cee00e48ee1e9c0b5c3bba53ad18d4756c4a3441f2e20fbd

Contents?: true

Size: 1.5 KB

Versions: 6

Compression:

Stored size: 1.5 KB

Contents

class Moysklad::Client
  class Errors
    def self.build res
      Moysklad.logger.warn "Moyskad::Client: #{res.status}: #{res.env.url.to_s}\n#{res.body}"

      case res.status
      when 405
        raise MethodNotAllowedError.new res
      when 401 
        raise UnauthorizedError.new res
      when 404 
        raise NoResourceFound.new res.body
      when 500
        raise ParsedError.new(res)
      when 502
        raise HtmlParsedError.new(res)
      else 
        raise ParsedError.new(res)
      end
    end
  end
end

class Moysklad::Client
  class Error < StandardError
    attr_reader :message

    def initialize mess
      @message = mess
    end

    def to_s
      message
    end
  end

  class NoResourceFound < Error; end

  class HtmlParsedError < Error
    def initialize res
      @result  = res
      @message = "[#{res.status}] #{parse_title res.body}"
    end

    private

    def parse_title body
      doc = Nokogiri::HTML body
      doc.css('body').css('h1').text
    rescue => err
      Moysklad.logger.debug "Moyskad::Client parse error #{err}: #{res.body}"
      body
    end
  end

  class MethodNotAllowedError < HtmlParsedError
  end

  class UnauthorizedError < HtmlParsedError
  end

  class ParsedError < Error
    def initialize result
      @status = result.status
      @result = result
      @error = Moysklad::Entities::Error.parse result.body
      @message = @error.message
    rescue => err
      @message = "error in init #{err}: #{result.body}"
    end

    attr_reader :error
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
moysklad-0.2.0 lib/moysklad/client/errors.rb
moysklad-0.1.5 lib/moysklad/client/errors.rb
moysklad-0.1.4 lib/moysklad/client/errors.rb
moysklad-0.1.3 lib/moysklad/client/errors.rb
moysklad-0.1.2 lib/moysklad/client/errors.rb
moysklad-0.1.1 lib/moysklad/client/errors.rb