Sha256: 5f2dfb0879d0d84de4456277ad98d174cb6da60b4eb07fe48b8cc8258069fe3b

Contents?: true

Size: 1.79 KB

Versions: 3

Compression:

Stored size: 1.79 KB

Contents

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

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

      def delete(workspace_name:, data_store_name:, feature_type_name:)
        path = feature_type_url(workspace_name: workspace_name, data_store_name: data_store_name, feature_type_name: feature_type_name)
        connection.delete(path: path)
      end

      def find(workspace_name:, data_store_name:, feature_type_name:)
        path = feature_type_url(workspace_name: workspace_name, data_store_name: data_store_name, feature_type_name: feature_type_name)
        out = connection.get(path: path)
        JSON.parse(out) if out
      end

      # Feature type name must be the same name as the shapefile without the extenstion.
      # E.g. If the file is `12345.shp`, then feature_type_name = "12345".
      def create(workspace_name:, data_store_name:, feature_type_name:, title:)
        path = feature_type_url(workspace_name: workspace_name, data_store_name: data_store_name, feature_type_name: nil)
        payload = payload_new(feature_type_name: feature_type_name, title: title)
        connection.post(path: path, payload: payload)
      end

      private

        def feature_type_url(workspace_name:, data_store_name:, feature_type_name:)
          last_path_component = feature_type_name ? "/#{feature_type_name}" : ""
          "workspaces/#{workspace_name}/datastores/#{data_store_name}/featuretypes#{last_path_component}"
        end

        def payload_new(feature_type_name:, title:)
          {
            featureType: {
              name: feature_type_name,
              title: title,
              enabled: true
            }
          }.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/feature_type.rb
geoserver-publish-0.2.1 lib/geoserver/publish/feature_type.rb
geoserver-publish-0.2.0 lib/geoserver/publish/feature_type.rb