Sha256: 7694ee573caed594008ef9089faa790fd04cc738b60c74d91b70d2b273fb9629

Contents?: true

Size: 1.17 KB

Versions: 5

Compression:

Stored size: 1.17 KB

Contents

# frozen_string_literal: true
require "httparty"

module Decidim
  module Meetings
    # This class generates a url to create a static map image for a geocoded meeting
    class StaticMapGenerator
      BASE_HOST = "image.maps.cit.api.here.com"
      BASE_PATH = "/mia/1.6/mapview"

      def initialize(meeting, options = {})
        @meeting = meeting
        @options = options

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

      def data
        return if Decidim.geocoder.nil?

        Rails.cache.fetch(@meeting.cache_key) do
          request = HTTParty.get(uri)
          request.body
        end
      end

      private

      def uri
        params = {
          c: "#{@meeting.latitude}, #{@meeting.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 = URI.parse("https://#{BASE_HOST}#{BASE_PATH}").tap do |uri|
          uri.query = URI.encode_www_form params
        end

        uri
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
decidim-meetings-0.0.5 app/services/decidim/meetings/static_map_generator.rb
decidim-0.0.5 decidim-meetings/app/services/decidim/meetings/static_map_generator.rb
decidim-0.0.4 decidim-meetings/app/services/decidim/meetings/static_map_generator.rb
decidim-meetings-0.0.3 app/services/decidim/meetings/static_map_generator.rb
decidim-0.0.3 decidim-meetings/app/services/decidim/meetings/static_map_generator.rb