Ejemplo n.º 1
0
    def delete(self, request, name=None, sub_type=None, device_id=None):
        """
        Unsubscribe from a channel
        """
        channels = Channel.objects.filter(name=name)
        if not channels:
            return Response(status=status.HTTP_404_NOT_FOUND)

        if not name is None and not device_id is None:
            result = status.HTTP_200_OK
            channel = channels[0]
            subManager = SubscriberManager()

            sub_token = subManager.get_subscription(channel.name, sub_type,
                                                    device_id)
            if not sub_token is None:

                subManager.unsubscribe(channel.name, device_id, sub_type)

                # Dec num subscriptions
                channel.subscriptions = channel.subscriptions - 1
                channel.save()
            else:
                # Verifica che non si tratti di una subscription
                reqs = ChannelSubscribeRequest.objects.filter(
                    device_id=device_id).filter(channel=channel)
                if reqs.count() > 0:
                    reqs[0].delete()
                else:
                    result = status.HTTP_404_NOT_FOUND

            return Response(status=result)
        else:
            return Response(status=status.HTTP_400_BAD_REQUEST)
Ejemplo n.º 2
0
def unsubscribe_channel(channel, device_id):
    """
    Unsubscribe a device from a channel
    :param channel:
    :param device_id:
    """
    subscriber = Subscriber.objects.get(device_id=device_id)
    result = False
    if not channel is None and not device_id is None:
        result = True
        subManager = SubscriberManager()

        sub_token = subManager.get_subscription(channel.name, subscriber.sub_type, subscriber.device_id)
        if not sub_token is None:

            subManager.unsubscribe(channel.name, subscriber.device_id, subscriber.sub_type)

            # Dec num subscriptions
            channel.subscriptions = channel.subscriptions - 1
            channel.save()
        else:
            # Verifica che non si tratti di una subscription nel caso la cancella
            reqs = ChannelSubscribeRequest.objects.filter(device_id=subscriber.device_id).filter(channel=channel)
            if reqs.count() > 0:
                reqs[0].delete()
            else:
                result = False
    return result
Ejemplo n.º 3
0
def unsubscribe_channel(channel, device_id):
    """
    Unsubscribe a device from a channel
    :param channel:
    :param device_id:
    """
    subscriber = Subscriber.objects.get(device_id=device_id)
    result = False
    if not channel is None and not device_id is None:
        result = True
        subManager = SubscriberManager()

        sub_token = subManager.get_subscription(channel.name,
                                                subscriber.sub_type,
                                                subscriber.device_id)
        if not sub_token is None:

            subManager.unsubscribe(channel.name, subscriber.device_id,
                                   subscriber.sub_type)

            # Dec num subscriptions
            channel.subscriptions = channel.subscriptions - 1
            channel.save()
        else:
            # Verifica che non si tratti di una subscription nel caso la cancella
            reqs = ChannelSubscribeRequest.objects.filter(
                device_id=subscriber.device_id).filter(channel=channel)
            if reqs.count() > 0:
                reqs[0].delete()
            else:
                result = False
    return result
Ejemplo n.º 4
0
    def delete(self, request, name=None, sub_type=None, device_id=None):
        """
        Unsubscribe from a channel
        """
        channels = Channel.objects.filter(name=name)
        if not channels:
            return Response(status=status.HTTP_404_NOT_FOUND)

        if not name is None and not device_id is None:
            result = status.HTTP_200_OK
            channel = channels[0]
            subManager = SubscriberManager()

            sub_token = subManager.get_subscription(channel.name, sub_type, device_id)
            if not sub_token is None:

                subManager.unsubscribe(channel.name, device_id, sub_type)

                # Dec num subscriptions
                channel.subscriptions = channel.subscriptions - 1
                channel.save()
            else:
                # Verifica che non si tratti di una subscription
                reqs = ChannelSubscribeRequest.objects.filter(device_id=device_id).filter(channel=channel)
                if reqs.count() > 0:
                    reqs[0].delete()
                else:
                    result = status.HTTP_404_NOT_FOUND

            return Response(status=result)
        else:
            return Response(status=status.HTTP_400_BAD_REQUEST)