class Geoloader::Services::Geoserver

Attributes

resource[R]

Public Class Methods

new() click to toggle source

Initialize the API wrapper.

# File lib/geoloader/services/geoserver.rb, line 16
def initialize
  @resource = RestClient::Resource.new("#{Geoloader.config.geoserver.url}/rest", {
    :user     => Geoloader.config.geoserver.username,
    :password => Geoloader.config.geoserver.password
  })
end

Public Instance Methods

create_coveragestore(geotiff) click to toggle source

Create a new coveragestore and layer for a GeoTIFF.

@param [Geoloader::Geotiff] geotiff

# File lib/geoloader/services/geoserver.rb, line 66
def create_coveragestore(geotiff)
  url = "workspaces/#{geotiff.workspace}/coveragestores/#{geotiff.file_base}/file.geotiff"
  @resource[url].put(File.read(geotiff.file_name))
end
create_datastore(shapefile) click to toggle source

Create a new datastore and layer for a Shapefile.

@param [Geoloader::Shapefile] shapefile

# File lib/geoloader/services/geoserver.rb, line 86
def create_datastore(shapefile)
  url = "workspaces/#{shapefile.workspace}/datastores/#{shapefile.file_base}/file.shp"
  @resource[url].put(shapefile.get_zipfile, :content_type => :zip)
end
create_workspace(workspace) click to toggle source

Create a new workspace.

@param [String] workspace

# File lib/geoloader/services/geoserver.rb, line 38
def create_workspace(workspace)
  payload = Builder::XmlMarkup.new.workspace { |w| w.name workspace }
  @resource["workspaces"].post(payload, :content_type => :xml)
end
delete_coveragestore(geotiff) click to toggle source

Delete the coveragestore that corresponds to a GeoTIFF.

@param [Geoloader::Geotiff] geotiff

# File lib/geoloader/services/geoserver.rb, line 76
def delete_coveragestore(geotiff)
  url = "workspaces/#{geotiff.workspace}/coveragestores/#{geotiff.file_base}"
  @resource[url].delete({:params => {:recurse => true}})
end
delete_datastore(shapefile) click to toggle source

Delete the datastore that corresponds to a shapefile.

@param [Geoloader::Shapefile] shapefile

# File lib/geoloader/services/geoserver.rb, line 96
def delete_datastore(shapefile)
  url = "workspaces/#{shapefile.workspace}/datastores/#{shapefile.file_base}"
  @resource[url].delete({:params => {:recurse => true}})
end
delete_workspace(workspace) click to toggle source

Delete a workspace.

@param [String] workspace

# File lib/geoloader/services/geoserver.rb, line 57
def delete_workspace(workspace)
  @resource["workspaces/#{workspace}"].delete({:params => {:recurse => true}})
end
ensure_workspace(workspace) click to toggle source

Check to see if a workspace exists, and if not, create it.

@param [String] workspace

# File lib/geoloader/services/geoserver.rb, line 48
def ensure_workspace(workspace)
  create_workspace(workspace) unless workspace_exists?(workspace)
end
workspace_exists?(workspace) click to toggle source

Does a workspace with a given name exist?

@param [String] workspace

# File lib/geoloader/services/geoserver.rb, line 28
def workspace_exists?(workspace)
  workspaces = @resource["workspaces"].get
  !!Nokogiri::XML(workspaces).at_xpath("//workspace[name[text()='#{workspace}']]")
end