41 lines
1.1 KiB
Ruby
41 lines
1.1 KiB
Ruby
|
require_dependency 'visualization/vizjson'
|
||
|
require_dependency 'carto/api/visualization_vizjson_adapter'
|
||
|
require_dependency 'cartodb/redis_vizjson_cache'
|
||
|
|
||
|
module Carto
|
||
|
module Api
|
||
|
class VizJSONPresenter
|
||
|
|
||
|
def initialize(visualization, redis_cache)
|
||
|
@visualization = visualization
|
||
|
@redis_cache = redis_cache
|
||
|
@redis_vizjson_cache = CartoDB::Visualization::RedisVizjsonCache.new(redis_cache)
|
||
|
end
|
||
|
|
||
|
def to_vizjson(options={})
|
||
|
@redis_vizjson_cache.cached(@visualization.id, options.fetch(:https_request, false)) do
|
||
|
calculate_vizjson(options)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def calculate_vizjson(options={})
|
||
|
vizjson_options = {
|
||
|
full: false,
|
||
|
user_name: user.username,
|
||
|
user_api_key: user.api_key,
|
||
|
user: user,
|
||
|
viewer_user: user
|
||
|
}.merge(options)
|
||
|
CartoDB::Visualization::VizJSON.new(Carto::Api::VisualizationVizJSONAdapter.new(@visualization, @redis_cache), vizjson_options, Cartodb.config).to_poro
|
||
|
end
|
||
|
|
||
|
def user
|
||
|
@user ||= @visualization.user
|
||
|
end
|
||
|
|
||
|
end
|
||
|
end
|
||
|
end
|