def send_command(self, name, args=None, callback=None):
        promise = Promise()

        msg = {
            "name": name,
            "id": str(self.seq),
            "args": args or []
        }

        msg_enc = json.dumps(msg, separators=(',', ':'))

        try:
            with self.ws_lock:
                if self.ws is None or self.state == SpotifyAPI.DISCONNECTED:
                    return Promise.rejected(SpotifyDisconnectedError())

                pid = self.seq

                if callback:
                    promise.addCallback(callback)

                self.cmd_promises[pid] = promise
                self.seq += 1

                self.ws.send(msg_enc)

                logger.debug("Sent PID({}) with msg: {}".format(pid, msg_enc))
        except (SSLError, StreamClosed) as e:
            logger.error("SSL error ({}), attempting to continue".format(e))
            promise.rejected(SpotifyDisconnectedError())

        return promise
Example #2
0
def test_rejected():
    p = Promise.rejected(Exception("Static rejected"))
    assert p.isRejected
    assert_exception(p.reason, Exception, "Static rejected")