Sha256: 4603fff25a7fc96dddd10cdd5fecc69e30ae4a4da8086146d4e58376a402a381

Contents?: true

Size: 1.14 KB

Versions: 27

Compression:

Stored size: 1.14 KB

Contents

# frozen_string_literal: true

require "httparty"

module Decidim
  # This class generates a url to create a static map image for a geocoded resource
  class StaticMapGenerator
    def initialize(resource, options = {})
      @resource = resource
      @options = options

      @options[:zoom] ||= 15
      @options[:width] ||= 120
      @options[:height] ||= 120
    end

    def data
      return if Decidim.geocoder.nil? || @resource.blank?

      Rails.cache.fetch(@resource.cache_key) do
        request = HTTParty.get(uri, headers: { "Referer" => organization.host })
        request.body
      end
    end

    private

    def uri
      params = {
        c: "#{@resource.latitude}, #{@resource.longitude}",
        z: @options[:zoom],
        w: @options[:width],
        h: @options[:height],
        f: "1",
        app_id: Decidim.geocoder.fetch(:here_app_id),
        app_code: Decidim.geocoder.fetch(:here_app_code)
      }

      URI.parse(Decidim.geocoder.fetch(:static_map_url)).tap do |uri|
        uri.query = URI.encode_www_form params
      end
    end

    def organization
      @organization ||= @resource.component.organization
    end
  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
decidim-core-0.20.0 app/services/decidim/static_map_generator.rb
decidim-core-0.19.1 app/services/decidim/static_map_generator.rb
decidim-core-0.18.1 app/services/decidim/static_map_generator.rb
decidim-core-0.19.0 app/services/decidim/static_map_generator.rb
decidim-core-0.17.2 app/services/decidim/static_map_generator.rb
decidim-core-0.18.0 app/services/decidim/static_map_generator.rb
decidim-core-0.17.1 app/services/decidim/static_map_generator.rb
decidim-core-0.16.1 app/services/decidim/static_map_generator.rb
decidim-core-0.17.0 app/services/decidim/static_map_generator.rb
decidim-core-0.16.0 app/services/decidim/static_map_generator.rb
decidim-core-0.15.2 app/services/decidim/static_map_generator.rb
decidim-core-0.15.1 app/services/decidim/static_map_generator.rb
decidim-core-0.15.0 app/services/decidim/static_map_generator.rb
decidim-core-0.14.4 app/services/decidim/static_map_generator.rb
decidim-core-0.14.3 app/services/decidim/static_map_generator.rb
decidim-core-0.14.2 app/services/decidim/static_map_generator.rb
decidim-core-0.14.1 app/services/decidim/static_map_generator.rb
decidim-core-0.13.1 app/services/decidim/static_map_generator.rb
decidim-core-0.12.2 app/services/decidim/static_map_generator.rb
decidim-core-0.13.0 app/services/decidim/static_map_generator.rb