Sha256: a95aec940f97fe91afc35eb8fa6fe93d705eb444ab9acb57028e4e2d0f96d446

Contents?: true

Size: 1.31 KB

Versions: 2

Compression:

Stored size: 1.31 KB

Contents

# frozen_string_literal: true
module Geoserver
  module Publish
    class Connection
      attr_reader :config

      def initialize(config = nil)
        @config = config || Geoserver::Publish.config["geoserver"]
      end

      def delete(path:)
        response = faraday_connection.delete do |req|
          req.url path
          req.params["recurse"] = "true"
        end
        return true if response.status == 200
        raise Geoserver::Publish::Error, response.reason_phrase
      end

      def get(path:)
        response = faraday_connection.get do |req|
          req.url path
          req.headers["Accept"] = "application/json"
        end
        response.body if response.status == 200
      end

      def post(path:, payload:)
        response = faraday_connection.post do |req|
          req.url path
          req.headers["Content-Type"] = "application/json"
          req.body = payload
        end
        return true if response.status == 201 || response.status == 401
        raise Geoserver::Publish::Error, response.reason_phrase
      end

      private

        def faraday_connection
          Faraday.new(url: config["url"]) do |conn|
            conn.adapter Faraday.default_adapter
            conn.basic_auth(config["user"], config["password"]) if config["user"]
          end
        end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
geoserver-publish-0.2.1 lib/geoserver/publish/connection.rb
geoserver-publish-0.2.0 lib/geoserver/publish/connection.rb