Advertisement
Guest User

Untitled

a guest
Sep 20th, 2017
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Nim 2.52 KB | None | 0 0
  1. type
  2.   SlackServer* = ref object of RootObj
  3.     token: string
  4.     username: string
  5.     domain: string
  6.     websocket: AsyncWebSocket
  7.     loginData: JsonNode
  8.     users: SinglyLinkedList[SlackUser]
  9.     channels: SinglyLinkedList[SlackChannel]
  10.     connected: bool
  11.     wsUrl: Uri
  12.     config: Config
  13.     events: EventEmitter
  14.  
  15. ## Sample Websocket URl
  16. ## wss://lbmulti-b6u4.lb.slack-msgs.com/websocket/XwNgiYkQkNLNQKf00sMoD-ILTwu2LMp6xWQydsui4fTV9EaYgyE0VlldXTQAUITTjLeOddPslVLEJBGFynnV4gh83i15uG9W5MzLAUN6czg0I5-RN8numlinK53l2xBDwFLSZ6-V9LGr8v-XyL82IgwXeEqXjBL5HfUnGWPVQLg=
  17. ## Sample messages:
  18. # {"type":"user_typing","channel":"G64HV5E0Y","user":"U2TM44RN0"})
  19. #read: (opcode: Text, data: {"type":"message","channel":"G64HV5E0Y","user":"U2TM44RN0","text":"<@U64HFLPG9> WOW","ts":"1504772511.000007","source_team":"T03DRH8QZ","team":"T03DRH8QZ"})
  20. #read: (opcode: Text, data: {"type":"desktop_notification","title":"SignIQ","subtitle":"bottystuff","msg":"1504772511.000007","content":"ryanc: @sodabot WOW","channel":"G64HV5E0Y","launchUri":"slack:\/\/channel?id=G64HV5E0Y&message=1504772511000007&team=T03DRH8QZ","avatarImage":"https:\/\/avatars.slack-edge.com\/2017-08-02\/221029099876_496046da12c5ab7c9d86_192.jpg","ssbFilename":"knock_brush.mp3","imageUri":null,"is_shared":false,"event_ts":"1504772511.000132"})
  21. ##
  22.  
  23. import events
  24. import asyncnet
  25. include nimslackclient/server
  26. var genericargs: EventArgs
  27.  
  28. proc handleEvent(e: EventArgs) =
  29.   echo "EVENTS"
  30.  
  31. proc own_reader(ws: AsyncWebSocket, emitter: EventEmitter) {.async.} =
  32.   while true:
  33.     let read = await ws.sock.readData(true)
  34.     echo "read: " & $read
  35.     emitter.emit("generic", genericargs)
  36.  
  37. var server = rtmConnect(reconnect = false)
  38. server.addEventHandler("generic", handleEvent)
  39. #asyncCheck serve(server)
  40.  
  41. while true:
  42.   asyncCheck: own_reader(server.websocket, server.events)
  43.  
  44.  
  45.  
  46. echo "AFTER LOOP"
  47.  
  48. proc initSlackServer*(
  49.     token: string,
  50.     username: string,
  51.     domain: string,
  52.     websocket: AsyncWebSocket,
  53.     loginData: JsonNode,
  54.     connected: bool,
  55.     wsUrl: Uri,
  56.     config: Config,
  57.     users: SinglyLinkedList[SlackUser] = initSinglyLinkedList[SlackUser](),
  58.     channels: SinglyLinkedList[SlackChannel] = initSinglyLinkedList[SlackChannel](),
  59.     events: EventEmitter = initEventEmitter()
  60.   ): SlackServer =
  61.   ## initialises a slack server
  62.  
  63.   result = SlackServer(token: token, username: username, domain: domain, websocket: websocket,
  64.     loginData: loginData, wsUrl: wsUrl, config: config, users: users, channels: channels, events: events)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement