Example #1
0
def buildNotification():
    data = request.get_json()
    repo = data['repository']['repo_name']

    room = Room(attributes={'id': roomid})
    room.send_message("New build of {0}:{1}".format(repo,
                                                    data['push_data']['tag']))
Example #2
0
    def test_create_team_room(self):
        team = Team()
        team.name = 'PYTHON SDK TEST TEAM'
        team = team.create(session)
        self.assertIsInstance(team, Team)
        print team.id

        room = Room()
        room.title = "PYTHON SDK TEAM ROOM"
        room.teamId = team.id
        resp = room.create(session)
        self.assertTrue(resp.ok)
Example #3
0
    def test_get_messages(self):

        room = Room.get(session, name=roomname)
        msgs = room.get_messages(session)
        print 'get messages from room {}'.format(room.title)
        for msg in msgs:
            print msg.text
Example #4
0
 def test_get_room_members(self):
     rooms = Room.get(session)
     self.assertIsInstance(rooms, list)
     self.assertTrue(len(rooms) > 1)
     members = rooms[0].get_members(session)
     self.assertIsInstance(members, list)
     self.assertTrue(len(rooms) > 1)
Example #5
0
 def test_create_message(self):
     message = Message()
     room = Room.get(session, name=roomname)
     message.text = 'test message from python sdk automated testing'
     room.send_message(session, message)
     resp = session.post(message.url(), message.json())
     self.assertTrue(resp.ok)
Example #6
0
    def test_get_messages(self):

        room = Room.get(session, name=roomname)
        msgs = room.get_messages(session)
        print 'get messages from room {}'.format(room.title)
        for msg in msgs:
            print msg.text
Example #7
0
 def test_create_message(self):
     message = Message()
     room = Room.get(session, name=roomname)
     message.text = 'test message from python sdk automated testing'
     room.send_message(session, message)
     resp = session.post(message.url(), message.json())
     self.assertTrue(resp.ok)
Example #8
0
 def test_get_room_members(self):
     rooms = Room.get(session)
     self.assertIsInstance(rooms, list)
     self.assertTrue(len(rooms) > 1)
     members = rooms[0].get_members(session)
     self.assertIsInstance(members, list)
     self.assertTrue(len(rooms) > 1)
Example #9
0
 def createRoomWebhook(self, roomname, webhookUrl, webhookName):
     webhook = Webhook()
     room = Room.get(self.session, name=roomname)
     webhook.set_targetUrl(webhookUrl)
     webhook.set_filter('roomId={}'.format(room.id))
     webhook.set_name(webhookName)
     webhook.set_resource('messages')
     webhook.set_event('created')
     webhook.create(self.session)
     return webhook
Example #10
0
 def test_create_webhook(self):
     webhook = Webhook()
     room = Room.get(session, name=roomname)
     webhook.targetUrl ='http://foo.net/api/v1'
     webhook.filter = 'roomId={}'.format(room.id)
     webhook.name = 'python sdk testing webhook'
     webhook.resource = 'messages'
     webhook.event = 'created'
     webhook = webhook.create(session)
     self.assertIsInstance(webhook, Webhook)
Example #11
0
 def test_create_webhook(self):
     webhook = Webhook()
     room = Room.get(session, name=roomname)
     webhook.set_targetUrl('http://foo.net/api/v1')
     webhook.set_filter('roomId={}'.format(room.id))
     webhook.set_name('python sdk testing webhook')
     webhook.set_resource('messages')
     webhook.set_event('created')
     resp = webhook.create(session)
     self.assertTrue(resp.ok)
Example #12
0
 def test_create_webhook(self):
     webhook = Webhook()
     room = Room.get(session, name=roomname)
     webhook.set_targetUrl('http://foo.net/api/v1')
     webhook.set_filter('roomId={}'.format(room.id))
     webhook.set_name('python sdk testing webhook')
     webhook.set_resource('messages')
     webhook.set_event('created')
     resp = webhook.create(session)
     self.assertTrue(resp.ok)
Example #13
0
def init():
    global room,spark_room,spark_client, wanted_pokemon

    # get list of pokemon to send notifications for
    wanted_pokemon = _str( config.WANTED_POKEMON ) . split(" ,")
    # transform to lowercase
    wanted_pokemon = [a.lower() for a in wanted_pokemon]

    # get api key
    api_key = _str( config.SPARK_KEY )
    
    if api_key:
          spark_client = Session('https://api.ciscospark.com', api_key)
	  spark_room = config.SPARK_ROOM
	  # pushbullet_client = Pushbullet(api_key)
	  # channel = pushbullet_client.channels[0]
    try:
        spark_room = Room.get(spark_client, spark_room)
    except ValueError:
        exit("  Exiting as I failed to authenticate your Spark API key")
Example #14
0
 def test_create_test_room(self):
     room = Room()
     room.title = roomname
     resp = room.create(session)
     self.assertTrue(resp.ok)
Example #15
0
 def test_get_all_rooms(self):
     rooms = Room.get(session)
     self.assertIsInstance(rooms, list)
     self.assertTrue(len(rooms) > 1)
Example #16
0
 def test_send_message_to_room(self):
     room = Room.get(session, name=roomname)
     resp = room.send_message(session, 'this is a str message')
     self.assertTrue(resp.ok)
Example #17
0
 def getRoomMessages(self, roomname):
     room = Room.get(self.session, name=roomname)
     msgs = room.get_messages(self.session)
     return msgs
Example #18
0
 def test_get_room_info(self):
     room = Room.get(session)[0]
     self.assertIsInstance(room.title, unicode)
     self.assertIsInstance(room.created, unicode)
Example #19
0
def sparci(spark_key,
           spark_room,
           apic_address,
           apic_user,
           apic_pass,
           action='all',
           user="",
           dn_filter="",
           debug=False):
    def on_message(ws, message):
        message = json.loads(message)
        message = message["imdata"][0]["aaaModLR"]
        print "Websocket Message: {descr}".format(
            descr=message["attributes"]["descr"])

        spark_message = dedent("""
        New APIC Event!

        {descr}

        DN: {affected}
        Change Set: {changeSet}
        """.format(**message["attributes"])).lstrip('\n').rstrip('\n')

        room.send_message(ss, spark_message)
        print "  - Update sent to Spark room {room}".format(room=room)

    def on_error(ws, error):
        print error

    def on_close(ws):
        print "### closed ###"

    def on_open(ws):

        # Convert "all" to ""
        if action == "all":
            action_wcard = ""
        else:
            action_wcard = action

        query = dedent("""
                    https://{apic_address}/api/node/class/aaaModLR.json?
                    subscription=yes&
                    order-by=aaaModLR.created|desc&
                    page=0&
                    page-size=15&
                    &query-target-filter=
                    and(
                    wcard(aaaModLR.user, "{user}"),
                    wcard(aaaModLR.ind, "{action_wcard}"),
                    wcard(aaaModLR.affected, "{dn_filter}")
                    )
                    """.format(apic_address=apic_address,
                               user=user,
                               action_wcard=action_wcard,
                               dn_filter=dn_filter)).replace('\n', '')

        resp = s.get(query, verify=False)
        if not resp.ok:
            exit("Failed to subscribe to aaaModLR")

    print ""
    print "==================================================="
    print "Sparci"
    print "==================================================="
    print ""

    print "Authenticating with Spark"
    ss = Session('https://api.ciscospark.com', spark_key)

    try:
        room = Room.get(ss, spark_room)
    except ValueError:
        exit("  Exiting as I failed to authenticate your Spark API key")

    if type(room) == list:
        print "  So, I couldn't find the room {spark_room}, but I did find:".format(
            spark_room=spark_room)
        for r in room:
            print "   -", r
        print "  maybe try one of those?"
        exit()
    else:
        print "  Found Spark room {room}".format(room=room)
        print ""

    print "Authenticating with APIC"
    data = {"aaaUser": {"attributes": {"name": apic_user, "pwd": apic_pass}}}

    s = requests.Session()
    s.headers.update({'Content-Type': 'application/json'})
    r = s.post('https://{apic_address}/api/aaaLogin.json'.format(
        apic_address=apic_address),
               json=data,
               verify=False)

    if not r.ok:
        exit(" Failed to authenticate with APIC")

    auth = r.json()["imdata"][0]["aaaLogin"]
    token = auth["attributes"]["token"]
    print "  Session token = {token}...".format(
        token=str.join('', token[0:15]))
    print ""
    print "==================================================="
    print "Subscribing to system audit logs"
    print "==================================================="
    print ""
    if action != "all":
        print "Action Filter:", action
    if user:
        print "User Filter:", user
    if dn_filter:
        print "Dn Filter:", dn_filter

    if debug:
        websocket.enableTrace(True)
    ws = websocket.WebSocketApp("ws://{apic_address}/socket{token}".format(
        apic_address=apic_address, token=token),
                                on_message=on_message,
                                on_error=on_error,
                                on_close=on_close)
    ws.on_open = on_open
    ws.run_forever()
Example #20
0
 def test_0002_load_room_from_str(self):
         data = json.dumps(self.testroom)
         obj = Room.from_json(data)
         self.assertIsInstance(obj, Room)
Example #21
0
def sparci(spark_key, spark_room, apic_address, apic_user, apic_pass, action='all', user="", dn_filter="",
           debug=False):
    def on_message(ws, message):
        message = json.loads(message)
        message = message["imdata"][0]["aaaModLR"]
        print "Websocket Message: {descr}".format(descr=message["attributes"]["descr"])

        spark_message = dedent("""
        New APIC Event!

        {descr}

        DN: {affected}
        Change Set: {changeSet}
        """.format(**message["attributes"])).lstrip('\n').rstrip('\n')

        room.send_message(ss, spark_message)
        print "  - Update sent to Spark room {room}".format(room=room)

    def on_error(ws, error):
        print error

    def on_close(ws):
        print "### closed ###"

    def on_open(ws):

        # Convert "all" to ""
        if action == "all":
            action_wcard = ""
        else:
            action_wcard = action

        query = dedent("""
                    https://{apic_address}/api/node/class/aaaModLR.json?
                    subscription=yes&
                    order-by=aaaModLR.created|desc&
                    page=0&
                    page-size=15&
                    &query-target-filter=
                    and(
                    wcard(aaaModLR.user, "{user}"),
                    wcard(aaaModLR.ind, "{action_wcard}"),
                    wcard(aaaModLR.affected, "{dn_filter}")
                    )
                    """.format(
            apic_address=apic_address,
            user=user,
            action_wcard=action_wcard,
            dn_filter=dn_filter)).replace('\n', '')

        resp = s.get(query, verify=False)
        if not resp.ok:
            exit("Failed to subscribe to aaaModLR")

    print ""
    print "==================================================="
    print "Sparci"
    print "==================================================="
    print ""

    print "Authenticating with Spark"
    ss = Session('https://api.ciscospark.com', spark_key)

    try:
        room = Room.get(ss, spark_room)
    except ValueError:
        exit("  Exiting as I failed to authenticate your Spark API key")

    if type(room) == list:
        print "  So, I couldn't find the room {spark_room}, but I did find:".format(spark_room=spark_room)
        for r in room:
            print "   -", r
        print "  maybe try one of those?"
        exit()
    else:
        print "  Found Spark room {room}".format(room=room)
        print ""

    print "Authenticating with APIC"
    data = {
        "aaaUser": {
            "attributes": {
                "name": apic_user,
                "pwd": apic_pass
            }
        }
    }

    s = requests.Session()
    s.headers.update({'Content-Type': 'application/json'})
    r = s.post('https://{apic_address}/api/aaaLogin.json'.format(apic_address=apic_address), json=data, verify=False)

    if not r.ok:
        exit(" Failed to authenticate with APIC")

    auth = r.json()["imdata"][0]["aaaLogin"]
    token = auth["attributes"]["token"]
    print "  Session token = {token}...".format(token=str.join('', token[0:15]))
    print ""
    print "==================================================="
    print "Subscribing to system audit logs"
    print "==================================================="
    print ""
    if action != "all":
        print "Action Filter:", action
    if user:
        print "User Filter:", user
    if dn_filter:
        print "Dn Filter:", dn_filter

    if debug:
        websocket.enableTrace(True)
    ws = websocket.WebSocketApp("ws://{apic_address}/socket{token}".format(apic_address=apic_address, token=token),
                                on_message=on_message,
                                on_error=on_error,
                                on_close=on_close)
    ws.on_open = on_open
    ws.run_forever()
Example #22
0
from spark.rooms import Room
from spark.session import Session

token =  'YOUR TOKEN HERE'
roomname = 'YOUR ROOM NAME'

url = 'https://api.ciscospark.com'

session = Session(url, token)

room = Room.get(session, name=roomname)
msgs = room.get_messages(session)
print 'get messages from room {}'.format(room.title)
for msg in msgs:
    print msg.text
Example #23
0
def injest():
    data = request.get_json()
    message_id = data['data']['id']

    message = Message.get(session, message_id)
    sender = message.attributes['personId']
    print(message.attributes)
    print(sender)
    if sender != myid:
        room = Room(attributes={'id': message.roomId})

        #room.send_message(session, "Received message. Standby.")

        #Check to see if there are more than 50 members in a room.  If so do not send the message
        member_count = len(getUsers(message.roomId))

        if member_count <= 500:

            message_text = message.attributes['text']

            msg = message_text.split(name)
            sys.stderr.write("\nremoving {} from message\n".format(name))
            msg = msg[1].strip()
            sys.stderr.write("\nMessage is - {}\n".format(msg))

            if len(msg) < 1:
                sys.stderr.write("\nMessage is empty\n")
                spark_msg = "Please tag me and type a message to be sent via email"
            else:
                if msg.split()[0] == '-version':
                    response = version
                    spark_msg = version
                elif msg.split()[0] == '-email':
                    room.send_message(session, received())
                    response = buildEmail(message, msg, sender)
                    spark_msg = response + "\nYou no longer need to tag messages with -email, just speak to me"
                elif msg.split()[0] == 'help':
                    response = help()
                    spark_msg = response
                elif '/exclude' in msg.split()[0]:
                    excludelist = getExcludelist(msg)
                    msg = removeCMD(msg, '/exclude')
                    room.send_message(session, received())
                    response = buildEmail(message,
                                          msg,
                                          sender,
                                          message.roomId,
                                          excludelist=excludelist)
                    spark_msg = "Email Sent"
                else:
                    room.send_message(session, received())
                    response = buildEmail(message,
                                          msg,
                                          sender,
                                          message.roomId,
                                          excludelist=[])
                    spark_msg = "Email Sent"

            room.send_message(session, spark_msg)

        else:
            room_too_large_message = "I cannot create an email for you.  To help prevent SPAM I am limited to " \
                                     "only sending Emails with rooms that have no more than 500 users.  If you" \
                                     "would like to see this increased please file an issue at {} or reach out" \
                                     "to {}".format(support_link, support_email)
            room.send_message(session, room_too_large_message)
            response = "Room too large"

    else:
        response = "Ignore message, sent from myself"

    return (response)
Example #24
0
class SyslogUDPHandler(SocketServer.BaseRequestHandler):

	def handle(self):
		data = bytes.decode(self.request[0].strip())
		socket = self.request[1]
		print( "%s : " % self.client_address[0], str(data))
		logging.info(str(data))
		room.send_message(ss, str(data))

if __name__ == "__main__":
	try:
		server = SocketServer.UDPServer((HOST,PORT), SyslogUDPHandler)


		print "Authenticating with Spark"
        
		try:
			ss = Session('https://api.ciscospark.com', SPARK_KEY)
			room = Room.get(ss, SPARK_ROOM)
			room.send_message(ss, '자 시작합니다.!!')
		except ValueError:
			exit("  Exiting as I failed to authenticate your Spark API key")

		server.serve_forever(poll_interval=0.5)

	except (IOError, SystemExit):
		raise
	except KeyboardInterrupt:
		print ("Crtl+C Pressed. Shutting down.")
Example #25
0
from spark.rooms import Room
from spark.session import Session

token =  'YOUR TOKEN HERE'

url = 'https://api.ciscospark.com'

session = Session(url, token)

room = Room()
room.title = 'Spark-Python'
room.create(session)



Example #26
0
from spark.rooms import Room
from spark.session import Session

token = 'YOUR TOKEN HERE'

url = 'https://api.ciscospark.com'

session = Session(url, token)

room = Room()
room.title = 'Spark-Python'
room.create(session)
Example #27
0
 def test_get_all_rooms(self):
     rooms = Room.get(session)
     self.assertIsInstance(rooms, list)
     self.assertTrue(len(rooms) > 1)
Example #28
0
 def test_send_message_to_room(self):
     room = Room.get(session, name=roomname)
     resp = room.send_message(session, 'this is a str message')
     self.assertTrue(resp.ok)
Example #29
0
 def test_get_room_by_name(self):
     room = Room.get(session, name=roomname)
     self.assertIsInstance(room, Room)
Example #30
0
 def getRooms(self):
     rooms = Room.get(self.session)
     return rooms
Example #31
0
    def test_0001_load_room_from_dict(self):

        obj = Room.from_json(self.testroom)
        self.assertIsInstance(obj, Room)
Example #32
0
 def getRoom(self, roomname):
     return Room.get(self.session, name=roomname)
Example #33
0
    def test_cleanup_after_testing(self):

        room = Room.get(session, name=roomname)
        room.delete(session)
Example #34
0
 def test_create_test_room(self):
     room = Room()
     room.title = roomname
     resp = room.create(session)
     self.assertTrue(resp.ok)
Example #35
0
from spark.rooms import Room
from spark.messages import Message
from spark.session import Session

token = 'YOUR TOKEN HERE'
roomname = 'YOUR ROOM NAME'

url = 'https://api.ciscospark.com'

session = Session(url, token)

message = Message()
room = Room.get(session, name=roomname)
message.text = 'test message from python sdk automated testing'
room.send_message(session, message)
Example #36
0
    def test_cleanup_after_testing(self):

        room = Room.get(session, name=roomname)
        room.delete(session)
Example #37
0
 def createRoom(self, roomname):
     room = Room()
     room.title = roomname
     room.create(self.session)
     return room
Example #38
0
    def test_0001_load_room_from_dict(self):

        obj = Room.from_json(self.testroom)
        self.assertIsInstance(obj, Room)
Example #39
0
 def createMessage(self, roomname, messageTxt):
     room = Room.get(self.session, name=roomname)
     resp = room.send_message(self.session, messageTxt)
     if resp.status_code != 200 and resp.status_code != 201:
         raise RestException(resp.text, resp.status_code)
Example #40
0
 def test_0002_load_room_from_str(self):
     data = json.dumps(self.testroom)
     obj = Room.from_json(data)
     self.assertIsInstance(obj, Room)
Example #41
0
from spark.rooms import Room
from spark.session import Session

token =  'Put your Auth Token Here'

url = 'https://api.ciscospark.com'

session = Session(url, token)

room = Room()
room.title = 'DevOps Forum IoT'
room.create(session)
Example #42
0
 def test_get_room_by_name(self):
     room = Room.get(session, name=roomname)
     self.assertIsInstance(room, Room)