예제 #1
0
        /// <summary>
        /// Signal Live event on file.
        /// </summary>
        /// <param name="fileLiveEvent">The file and share</param>
        private void OnFileEvent(LiveFileEventInfo fileLiveEvent)
        {
            var copyLiveFileEvent = LiveFileEvent;

            if (copyLiveFileEvent != null)
            {
                copyLiveFileEvent(fileLiveEvent);
            }
        }
예제 #2
0
        /// <summary>
        /// On WebSocket new message received.
        /// </summary>
        private void WebSocket_OnMessage(object sender, MessageEventArgs e)
        {
            string eventdata = e.Data;

            // Base JSON message format, except for "ping" message.
            //{
            //  "type":"the message type"
            //}
            //System.Diagnostics.Debug.WriteLine("WebSocket_OnMessage event: [" + eventdata + "]");
            try
            {
                // Got a "ping" message from Live API
                if (eventdata == "ping")
                {
                    // Send "pong" message, we are still alive.
                    _webSocket.Send("pong");
                    LastReceived = DateTime.Now;
                }
                else if (eventdata == "pong")
                {
                    // Got a "pong" message for ower own "ping" message.
                    LastReceived = DateTime.Now;
                }
                else
                {
                    try
                    {
                        JObject           jsonResponse  = JObject.Parse(eventdata);
                        LiveFileEventInfo fileLiveEvent = null;

                        // What type of Live event?
                        switch (jsonResponse["type"].ToString())
                        {
                        case "download": fileLiveEvent = JsonConvert.DeserializeObject <LiveFileEventInfo>(eventdata); break;      // Download event.

                        case "storagelimit": fileLiveEvent = JsonConvert.DeserializeObject <LiveFileEventInfo>(eventdata); break;  // Storagelimit event.

                        case "filestat": fileLiveEvent = JsonConvert.DeserializeObject <LiveFileEventInfo>(eventdata); break;      // Filestatus event.

                        case "violatedterms": fileLiveEvent = JsonConvert.DeserializeObject <LiveFileEventInfo>(eventdata); break; // Violated terms event.
                        }

                        if (fileLiveEvent != null)
                        {
                            LastReceived = DateTime.Now;
                            OnFileEvent(fileLiveEvent);
                        }
                    }
                    catch (Exception ex)
                    {
                        System.Diagnostics.Debug.WriteLine("WebSocket_OnMessage, Json exception: " + ex.GetType() + ", " + ex.Message);
                    }
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine("WebSocket_OnMessage, handling exception: " + ex.GetType() + ", " + ex.Message);
            }

            Action <GettLive, string> copyOnMessage = OnMessage;

            if (copyOnMessage != null)
            {
                copyOnMessage(this, eventdata);
            }
        }
예제 #3
0
 /// <summary>
 /// Signal Live event on file.
 /// </summary>
 /// <param name="fileLiveEvent">The file and share</param>
 private void OnFileEvent(LiveFileEventInfo fileLiveEvent)
 {
     var copyLiveFileEvent = LiveFileEvent;
     if (copyLiveFileEvent != null)
     {
         copyLiveFileEvent(fileLiveEvent);
     }
 }