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
def test_rejected(): p = Promise.rejected(Exception("Static rejected")) assert p.isRejected assert_exception(p.reason, Exception, "Static rejected")