Skip to content
Extraits de code Groupes Projets
sockets_controller.rb 1,36 ko
Newer Older
danielgrippi's avatar
danielgrippi a validé
#   Copyright (c) 2010-2011, Diaspora Inc.  This file is
Raphael's avatar
Raphael a validé
#   licensed under the Affero General Public License version 3 or later.  See
Raphael's avatar
Raphael a validé
#   the COPYRIGHT file.
Jamie Wilkinson's avatar
Jamie Wilkinson a validé
class SocketsController < ApplicationController
  include ApplicationHelper
  include Rails.application.routes.url_helpers
Raphael Sofaer's avatar
Raphael Sofaer a validé
  helper_method :current_user

maxwell's avatar
maxwell a validé
  def incoming(msg)
ilya's avatar
ilya a validé
    Rails.logger.info("Socket received connection to: #{msg}")
maxwell's avatar
maxwell a validé
  end
  def outgoing(user_or_id, object, opts={})
    #this should be the actual params of the controller
    @params = {:user_or_id => user_or_id, :object => object}.merge(opts)
    return unless Diaspora::WebSocket.is_connected?(user_id)
    @_request = SocketRequest.new({})
    Diaspora::WebSocket.queue_to_user(user_id, action_hash(user, object, opts))
  end

  def user_id
    if @params[:user_or_id].instance_of?(Fixnum)
      @user_id ||= @params[:user_or_id]
    else
      @user_id ||= @params[:user_or_id].id
    end
  end

  def user
   @user ||= ((@params[:user_or_id].instance_of? User )? @params[:user_or_id] : User.find(user_id))
  end

danielgrippi's avatar
danielgrippi a validé
  def current_user
    user
  end

Raphael Sofaer's avatar
Raphael Sofaer a validé
  def url_options
    {:host => "#{AppConfig[:pod_uri].host}:#{AppConfig[:pod_uri].port}"}
  end

  def all_aspects
    @all_aspects ||= user.aspects
maxwell's avatar
maxwell a validé
  end

  class SocketRequest < ActionDispatch::Request
    def format
      'socket'
    end
  end
maxwell's avatar
maxwell a validé
end