Sha256: 122e855ddc4557b64734770a155f2ffad83c86cc189e27a7b37eede0bad495b6

Contents?: true

Size: 1.47 KB

Versions: 2

Compression:

Stored size: 1.47 KB

Contents

require "lite_cable"

module Hippo
    module API
        module Cable
            mattr_reader :server
            mattr_reader :config

            def self.handle_request(request)
                @@server.call(request.env)
            end

            class Channel < LiteCable::Channel::Base
            end

            class Connection < LiteCable::Connection::Base
                identified_by :current_user

                def connect
                    token = request.params['token']
                    begin
                        self.current_user = User.for_jwt_token(token) if token
                    rescue JWT::DecodeError
                    end
                    unless self.current_user
                        Hippo.logger.warn("Rejecting ws connection due to unauthorized access")
                        reject_unauthorized_connection
                    end
                end

                protected

                def cookies
                    request.session
                end
            end

            def self.configure
                require_relative './updates'

                if Hippo.config.api_use_any_cable

                else
                    require "lite_cable/server"
                    @@server = LiteCable::Server::Middleware.new(
                        Hippo::API::Root, connection_class: Hippo::API::Cable::Connection
                    )
                end
                Updates.relay!
            end

        end


    end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
hippo-fw-0.9.5 lib/hippo/api/cable.rb
hippo-fw-0.9.4 lib/hippo/api/cable.rb