class GeoMonitor::Requests::WMS

Crafts a WMS request

Attributes

bbox[R]
layers[R]
url[R]

Public Class Methods

new(bbox:, url:, layers:) click to toggle source
# File lib/geo_monitor/requests/wms.rb, line 8
def initialize(bbox:, url:, layers:)
  @bbox = bbox
  @url = url
  @layers = layers
end

Public Instance Methods

request_params() click to toggle source

Parameters used for the WMS request.

# File lib/geo_monitor/requests/wms.rb, line 16
def request_params
  {
    'SERVICE' => 'WMS',
    'VERSION' => '1.1.1',
    'REQUEST' => 'GetMap',
    'LAYERS' => layers,
    'STYLES' => '',
    'CRS' => 'EPSG:900913',
    'SRS' => 'EPSG:3857',
    'BBOX' => bbox.tile_bounds.to_s,
    'WIDTH' => '256',
    'HEIGHT' => '256',
    'FORMAT' => 'image/png',
    'TILED' => true
  }
end
tile() click to toggle source

Request the tile.

# File lib/geo_monitor/requests/wms.rb, line 35
def tile
  unless url.present?
    return ::GeoMonitor::FailedResponse.new(
      { url: url }, 'No URL provided', {}
    )
  end
  conn = Faraday.new(url: url)
  begin
    conn.get do |request|
      request.params = request_params
      request.options.timeout = 10
      request.options.open_timeout = 10
    end
  rescue Faraday::ConnectionFailed, Faraday::TimeoutError, Faraday::SSLError => e
    ::GeoMonitor::FailedResponse.new(
      { url: conn.url_prefix.to_s },
      e.class,
      nil
    )
  end
end