Sha256: 01b6a37b31f3f0da69c682fe53b5aa6f3b1fc06df36076c58dd3940d9166f95f

Contents?: true

Size: 996 Bytes

Versions: 1

Compression:

Stored size: 996 Bytes

Contents

require 'nokogiri'

module Bamboo
  module Client
    module Http
      class Xml < Abstract
        class Doc
          def self.from(str)
            new(Nokogiri::XML(str))
          end

          def initialize(doc)
            @doc = doc
            puts doc.to_s if $DEBUG
          end

          def text_for(css)
            @doc.css(css).text
          end

          def objects_for(selector, klass)
            @doc.css(selector).map { |e| klass.new(e) }
          end

          def object_for(selector, klass)
            node = @doc.css(selector).first
            node or raise Error, "no node matches selector #{selector.inspect}"

            klass.new node
          end
        end # Doc

        def post(path, data = {})
          Doc.from RestClient.post(uri_for(path), data)
        end

        private

        def uri_for(path)
          u      = uri.dup
          u.path = path

          u.to_s
        end
      end # Xml
    end # Http
  end # Client
end # Bamboo

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
bamboo-client-0.0.1 lib/bamboo-client/http/xml.rb