def pusher_auth(request): profile = ModelFactory.profile_from_request(request) log.debug('Pusher Auth called.') if request.method != 'POST': raise Http404('Unexpected method type for Pusher access.') p = Pusher( app_id=os.environ['PUSHER_APP_ID'], key=os.environ['PUSHER_APP_KEY'], secret=os.environ['PUSHER_APP_SECRET'], ssl=True, port=443 ) channel_name = request.POST.get('channel_name') socket_id = request.POST.get('socket_id') log.debug('Pusher Auth Channel_Name: {}'.format(channel_name)) log.debug('Pusher Auth Socket ID: {}'.format(socket_id)) data = { 'user_id': str(profile.uuid), 'user_info': { 'name': profile.get_full_name(), 'avatar_cropped_url': profile.avatar_cropped.url } } auth = p.authenticate(channel=channel_name, socket_id=socket_id, custom_data=data) return JsonResponse(auth)
class Sender: """Pusher send side logic.""" def __init__(self, app_id, key, secret, channel_name, cluster=None, encrypted=None): """Initializes the server object.""" if cluster is None: cluster = 'mt1' if encrypted is None: encrypted = True self.pusher = Pusher(app_id, key, secret, cluster=cluster, ssl=encrypted) self.app_id = app_id self.key = key self.secret = secret self.channel_name = channel_name self.cluster = cluster self.encrypted = encrypted self.socket_id = u"1234.12" self.auth = self.join_channel() def join_channel(self): """ Authenticates for the channel and return auth""" return self.pusher.authenticate(self.channel_name, self.socket_id) def send_message(self, event, message, channel=None): """Send an event to the channel""" if channel is None: channel = self.channel_name self.pusher.trigger(channel, event, message)
class Chatkit: client = Client() def __init__(self, **kwargs): base_options = { 'locator': kwargs.get('instance_locator'), 'key': kwargs.get('key'), 'port': kwargs.get('port'), 'host': kwargs.get('host'), 'client': kwargs.get('client') } self.api_instance = Pusher({ **base_options, **{ 'service_name': 'chatkit', 'service_version': 'v1' } }) self.authorizer_instance = Pusher({ **base_options, **{ 'service_name': 'chatkit_authorizer', 'service_version': 'v1' } }) def authenticate(self, request, **kwargs): return self.api_instance.authenticate(request, kwargs) def generate_access_token(self, **kwargs): return self.api_instance.generate_access_token(kwargs) # User API def create_user(self, id, name, avatar_url, custom_data): pass def delete_user(self, id): pass def get_users(self, from_id): pass def get_users_by_ids(self, user_ids): pass # Room API def get_room(self, room_id): pass def get_room_messages(self, room_id, initial_id, direction, limit): pass def get_rooms(self, from_id): pass # Authorizer API def create_room_role(self, name, permissions): return self._create_role(name, Permissions.ROOM_SCOPE, permissions) def create_global_role(self, name, permissions): return self._create_role(name, Permissions.GLOBAL_SCOPE, permissions) def delete_room_role(self, role_name): return self._delete_role(role_name, Permissions.ROOM_SCOPE) def delete_global_role(self, role_name): return self._delete_role(role_name, Permissions.GLOBAL_SCOPE) def assign_global_role_to_user(self, user_id, role_name): return self._assign_role_to_user(user_id, role_name, None) def assign_room_role_to_user(self, user_id, role_name, room_id): return self._assign_role_to_user(user_id, role_name, room_id) def get_roles(self): pass def get_user_roles(self, user_id): pass def remove_global_role_for_user(self, user_id): return self._remove_role_for_user(user_id, None) def remove_room_role_for_user(self, user_id, room_id): return self._remove_role_for_user(user_id, room_id) def get_permissions_for_global_role(self, role_name): return self._get_permissions_for_role(role_name, Permissions.GLOBAL_SCOPE) def get_permissions_for_room_role(self, role_name): return self._get_permissions_for_role(role_name, Permissions.ROOM_SCOPE) def update_role_permissions(self, role_name, scope, permissions_to_add, permissions_to_remove): self._check_permissions(permissions_to_add + permissions_to_remove) def _create_role(self, name, scope, permissions): pass def _delete_role(self, role_name, scope): pass def _assign_role_to_user(self, user_id, role_name, room_id): pass def _remove_role_for_user(self, user_id, room_id): pass def _get_permissions_for_role(self, role_name, scope): pass def _check_permissions(self, permissions): pass