Sha256: c852748ea93190b202b1f80e7765141996a8acc1a7a788bfbe461cc344b7d094

Contents?: true

Size: 1 KB

Versions: 3

Compression:

Stored size: 1 KB

Contents

module CitrusMail
  class Response
    attr_accessor :http_response, :code, :freshmail_response

    def self.build_from_http_response(http_response)
      response = self.new()
      response.http_response = http_response
      response.process_http_response
      response
    end

    def process_http_response
      if http_response.code.to_i == 200 and res = (r = http_response.body.match(/\<response\>(.*)\<\/response\>/) and r[1])
        self.freshmail_response = res
        self.code = res.to_i
        if code > 100
          raise InvalidListKey.new(code) if code == 101
          raise InvalidAPIKey.new(code) if code == 104
          raise EmailExists.new(code) if code == 201
          raise InvalidEmail.new(code) if code == 202
          raise SubscriberNotExists.new(code) if code == 206

          raise CitrusMailError.new(code)
        end
      else
        raise RequestFailed
      end
    end

    def parse_json_freshmail_response
      ActiveSupport::JSON.decode freshmail_response
    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
citrus-mail-0.2.1 lib/citrus_mail/response.rb
citrus-mail-0.2.0 lib/citrus_mail/response.rb
citrus-mail-0.1.0 lib/citrus_mail/response.rb