49 lines
1.8 KiB
Ruby
49 lines
1.8 KiB
Ruby
module Carto
|
|
|
|
class StaticMapsURLHelper
|
|
|
|
def url_for_static_map(request, visualization, map_width, map_height)
|
|
username = CartoDB.extract_subdomain(request)
|
|
request_protocol = request.protocol.sub('://', '')
|
|
static_maps_base_url(username, request_protocol) +
|
|
static_maps_image_url_fragment(visualization.id, map_width, map_height)
|
|
end
|
|
|
|
def url_for_static_map_without_request(username, request_protocol, visualization, map_width, map_height)
|
|
static_maps_base_url(username, request_protocol) +
|
|
static_maps_image_url_fragment(visualization.id, map_width, map_height)
|
|
end
|
|
|
|
def url_for_static_map_with_visualization(visualization, request_protocol, map_width, map_height)
|
|
static_maps_base_url(visualization.user.username, request_protocol) +
|
|
static_maps_image_url_fragment(visualization.id, map_width, map_height)
|
|
end
|
|
|
|
private
|
|
|
|
# INFO: Assumes no trailing '/' comes inside, so returned string doesn't has it either
|
|
def static_maps_base_url(username, request_protocol)
|
|
config = get_cdn_config
|
|
if !config.nil? && !config.empty?
|
|
"#{request_protocol}://#{config[request_protocol]}/#{username}"
|
|
else
|
|
# sample format: {protocol}://{user}.{maps_domain}:{port}/
|
|
# All parameters except {user} come already replaced
|
|
ApplicationHelper.maps_api_template('public').sub('{user}', username)
|
|
end
|
|
end
|
|
|
|
# INFO: To ease testing while we keep the config in a global array...
|
|
def get_cdn_config
|
|
Cartodb.config[:cdn_url]
|
|
end
|
|
|
|
def static_maps_image_url_fragment(visualization_id, width, height)
|
|
template_name = Carto::NamedMaps::Template.new(Carto::Visualization.find(visualization_id)).name
|
|
|
|
"/api/v1/map/static/named/#{template_name}/#{width}/#{height}.png"
|
|
end
|
|
|
|
end
|
|
end
|