Sha256: da97fddda8564e48805503944431b4f6c0559d074ade47cd0a0b0144f97ed43b

Contents?: true

Size: 1.68 KB

Versions: 3

Compression:

Stored size: 1.68 KB

Contents

# frozen_string_literal: true
module Geoserver
  module Publish
    class CoverageStore
      attr_reader :connection

      def initialize(conn = nil)
        @connection = conn || Geoserver::Publish::Connection.new
      end

      def delete(workspace_name:, coverage_store_name:)
        path = coverage_store_url(workspace_name: workspace_name, coverage_store_name: coverage_store_name)
        connection.delete(path: path)
      end

      def find(workspace_name:, coverage_store_name:)
        path = coverage_store_url(workspace_name: workspace_name, coverage_store_name: coverage_store_name)
        out = connection.get(path: path)
        JSON.parse(out) if out
      end

      def create(workspace_name:, coverage_store_name:, url:, type: "GeoTIFF")
        path = coverage_store_url(workspace_name: workspace_name, coverage_store_name: nil)
        payload = payload_new(workspace_name: workspace_name, coverage_store_name: coverage_store_name, url: url, type: type)
        connection.post(path: path, payload: payload)
      end

      private

        def coverage_store_url(workspace_name:, coverage_store_name:)
          last_path_component = coverage_store_name ? "/#{coverage_store_name}" : ""
          "workspaces/#{workspace_name}/coveragestores#{last_path_component}"
        end

        def payload_new(workspace_name:, coverage_store_name:, type:, url:)
          {
            coverageStore: {
              name: coverage_store_name,
              url: url,
              enabled: true,
              workspace: {
                name: workspace_name
              },
              type: type,
              _default: false
            }
          }.to_json
        end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
geoserver-publish-0.3.0 lib/geoserver/publish/coverage_store.rb
geoserver-publish-0.2.1 lib/geoserver/publish/coverage_store.rb
geoserver-publish-0.2.0 lib/geoserver/publish/coverage_store.rb