Sha256: db99ea63fb7fb5f1e1bc0fd5d2dc5661f1197ba4377bac8525ccfab40f1fce97

Contents?: true

Size: 1.84 KB

Versions: 2

Compression:

Stored size: 1.84 KB

Contents

require File.expand_path('../../helpers/browse_everything_helper', __FILE__)

class BrowseEverythingController < ActionController::Base
  layout 'browse_everything'
  helper BrowseEverythingHelper

  after_action { session["#{provider_name}_token"] = provider.token unless provider.nil? }

  def index
    render layout: !request.xhr?
  end

  def show
    render layout: !request.xhr?
  end

  def auth
    session["#{provider_name}_token"] = provider.connect(params, session["#{provider_name}_data"])
  end

  def resolve
    selected_files = params[:selected_files] || []
    @links = selected_files.collect do |file|
      p, f = file.split(/:/)
      (url, extra) = browser.providers[p].link_for(f)
      result = { url: url }
      result.merge!(extra) unless extra.nil?
      result
    end
    respond_to do |format|
      format.html { render layout: false }
      format.json { render json: @links }
    end
  end

  private

  def auth_link
    @auth_link ||= if provider.present?
                     link, data = provider.auth_link
                     session["#{provider_name}_data"] = data
                     link = "#{link}&state=#{provider.key}" unless link.to_s.include?('state')
                     link
                   end # else nil, implicitly
  end

  def browser
    if @browser.nil?
      @browser = BrowseEverything::Browser.new(url_options)
      @browser.providers.values.each do |p|
        p.token = session["#{p.key}_token"]
      end
    end
    @browser
  end

  def browse_path
    @path ||= params[:path] || ''
  end

  def provider
    @provider ||= browser.providers[provider_name]
  end

  def provider_name
    @provider_name ||= params[:provider] || params[:state].to_s.split(/\|/).last
  end

  helper_method :auth_link
  helper_method :browser
  helper_method :browse_path
  helper_method :provider
  helper_method :provider_name
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
browse-everything-0.11.1 app/controllers/browse_everything_controller.rb
browse-everything-0.11.0 app/controllers/browse_everything_controller.rb