class Geoserver::Publish::FeatureType

Attributes

connection[R]

Public Class Methods

new(conn = nil) click to toggle source
# File lib/geoserver/publish/feature_type.rb, line 7
def initialize(conn = nil)
  @connection = conn || Geoserver::Publish::Connection.new
end

Public Instance Methods

create(workspace_name:, data_store_name:, feature_type_name:, title:, additional_payload: nil) click to toggle source

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”.

# File lib/geoserver/publish/feature_type.rb, line 24
def create(workspace_name:, data_store_name:, feature_type_name:, title:, additional_payload: nil)
  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, payload: additional_payload)
  connection.post(path: path, payload: payload)
end
delete(workspace_name:, data_store_name:, feature_type_name:) click to toggle source
# File lib/geoserver/publish/feature_type.rb, line 11
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
find(workspace_name:, data_store_name:, feature_type_name:) click to toggle source
# File lib/geoserver/publish/feature_type.rb, line 16
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
update(workspace_name:, data_store_name:, feature_type_name:, title:, additional_payload: nil) click to toggle source
# File lib/geoserver/publish/feature_type.rb, line 30
def update(workspace_name:, data_store_name:, feature_type_name:, title:, additional_payload: nil)
  path = feature_type_url(workspace_name: workspace_name, data_store_name: data_store_name, feature_type_name: feature_type_name)
  payload = payload_new(feature_type_name: feature_type_name, title: title, payload: additional_payload)
  connection.put(path: path, payload: payload, content_type: "application/json")
end

Private Instance Methods

feature_type_url(workspace_name:, data_store_name:, feature_type_name:) click to toggle source
# File lib/geoserver/publish/feature_type.rb, line 38
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
payload_new(feature_type_name:, title:, payload:) click to toggle source
# File lib/geoserver/publish/feature_type.rb, line 43
def payload_new(feature_type_name:, title:, payload:)
  {
    featureType: {
      name: feature_type_name,
      title: title,
      enabled: true
    }.merge(payload.to_h)
  }.to_json
end