class Geoserver::Publish::DataStore

Attributes

connection[R]

Public Class Methods

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

Public Instance Methods

create(workspace_name:, data_store_name:, url:) click to toggle source
# File lib/geoserver/publish/data_store.rb, line 22
def create(workspace_name:, data_store_name:, url:)
  path = data_store_url(workspace_name: workspace_name, data_store_name: nil)
  payload = payload_new(data_store_name: data_store_name, url: url)
  connection.post(path: path, payload: payload)
end
delete(workspace_name:, data_store_name:) click to toggle source
# File lib/geoserver/publish/data_store.rb, line 11
def delete(workspace_name:, data_store_name:)
  path = data_store_url(workspace_name: workspace_name, data_store_name: data_store_name)
  connection.delete(path: path)
end
find(workspace_name:, data_store_name:) click to toggle source
# File lib/geoserver/publish/data_store.rb, line 16
def find(workspace_name:, data_store_name:)
  path = data_store_url(workspace_name: workspace_name, data_store_name: data_store_name)
  out = connection.get(path: path)
  JSON.parse(out) if out
end
upload(workspace_name:, data_store_name:, file:) click to toggle source
# File lib/geoserver/publish/data_store.rb, line 28
def upload(workspace_name:, data_store_name:, file:)
  content_type = 'application/zip'
  path = upload_url(workspace: workspace_name, data_store: data_store_name)
  connection.put(path: path, payload: file, content_type: content_type)
end

Private Instance Methods

data_store_url(workspace_name:, data_store_name:) click to toggle source
# File lib/geoserver/publish/data_store.rb, line 36
def data_store_url(workspace_name:, data_store_name:)
  last_path_component = data_store_name ? "/#{data_store_name}" : ""
  "workspaces/#{workspace_name}/datastores#{last_path_component}"
end
payload_new(data_store_name:, url:) click to toggle source

rubocop:disable Metrics/MethodLength

# File lib/geoserver/publish/data_store.rb, line 46
def payload_new(data_store_name:, url:)
  {
    dataStore: {
      name: data_store_name,
      connectionParameters: {
        entry: [
          {
            "@key": "create spatial index",
            "$": "true"
          },
          {
            "@key": "url",
            "$": url
          },
          {
            "@key": "cache and reuse memory maps",
            "$": "false"
          }
        ]
      }
    }
  }.to_json
end
upload_url(workspace:, data_store:) click to toggle source
# File lib/geoserver/publish/data_store.rb, line 41
def upload_url(workspace:, data_store:)
  "workspaces/#{workspace}/datastores/#{data_store}/file.shp"
end