Skip to content

Commit

Permalink
Added addChannels()
Browse files Browse the repository at this point in the history
  • Loading branch information
mjiggidy committed Mar 7, 2022
1 parent 1195a07 commit 0d85bd4
Show file tree
Hide file tree
Showing 2 changed files with 80 additions and 0 deletions.
59 changes: 59 additions & 0 deletions adderlib/adder.py
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,65 @@ def getChannels(self, id:typing.Optional[str]=None, name:typing.Optional[str]=""
continue
yield AdderChannel(channel)

def createChannel(self,
name:str, description:typing.Optional[str]=None, location:typing.Optional[str]=None, modes:typing.Optional[list[AdderChannel.ConnectionMode]]=None,
video1:typing.Optional[AdderTransmitter]=None, video1_head:typing.Optional[int]=None,
video2:typing.Optional[AdderTransmitter]=None, video2_head:typing.Optional[int]=None,
audio:typing.Optional[AdderTransmitter]=None, usb:typing.Optional[AdderTransmitter]=None, serial:typing.Optional[AdderTransmitter]=None,
group_name:typing.Optional[str]=None) -> AdderChannel:
"""Create a new channel from the specified transmitters"""

modes = modes or []

args = {
"v":self._api_version,
"token":self._user.token,
"method":"create_channel",
"name":name,
"desc":description,
"loc":location,
"allowed":str().join([m.value for m in modes]).lower(),
"groupname":group_name
}

# Video 1
if video1:
args.update({
"video1":video1.id,
"video1head":video1_head
})

# Video 2
if video2:
args.update({
"video2":video2.id,
"video2head":video2_head
})

# Audio
if audio:
args.update({"audio":audio.id})

# USB
if usb:
args.update({"usb":usb.id})

# Serial
if serial:
args.update({"serial":serial.id})

response = self._url_handler.api_call(self._server_address, args)
if response.get("success") == "1" and response.get("id"):
return next(self.getChannels(id=response.get("id")))

elif "errors" in response:
error = response.get("errors").get("error")
raise AdderRequestError(f"Error {error.get('code','?')}: {error.get('msg','?')}")

else:
raise Exception("Unknown error")


def connectToChannel(self, channel:AdderChannel, receiver:AdderReceiver, mode:typing.Optional[AdderChannel.ConnectionMode]=AdderChannel.ConnectionMode.SHARED) -> bool:
"""Connect a channel to a receiver"""

Expand Down
21 changes: 21 additions & 0 deletions tests/test_createchannel.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import sys
from adderlib import adder

if len(sys.argv)<4:
sys.exit(f"Usage: {__file__} server username password")

address, username, password = sys.argv[1:4]

api = adder.AdderAPI(address)
api.login(username, password)

tx = next(api.getTransmitters())
print(f"Got transmitter {tx.name}")

try:
new_ch = api.createChannel("Test Channel", "Testing dat channel", "MyMind", video1=tx, group_name="MCPs")
print(f"Created channel {new_ch.name} with id {new_ch.id} and transmitters {new_ch.tx_id}")
except Exception as e:
print("Could not create channel:",str(e))

api.logout()

0 comments on commit 0d85bd4

Please sign in to comment.