Exemplo n.º 1
0
        /**
         * Publish
         *
         * Send a message to a channel
         *
         * @param String channel name.
         * @param List<object> info.
         * @return bool false on fail
         */
        public bool publish(string channel, object message, Action<object> usercallback)
        {
            if (string.IsNullOrWhiteSpace(channel) || message == null)
            {
                throw new ArgumentException("Missing Channel or Message");
            }

            //TODO: Should we validate at constructor level
            if (this.PUBLISH_KEY.Length == 0)
            {
                throw new MissingFieldException("PUBLISH_KEY cannot be empty for publish");
            }

            // Generate String to Sign
            string signature = "0";
            //mod for monomac
            /*string msg = jsonEncodePublishMsg(message);

            if (this.SECRET_KEY.Length > 0)
            {
                StringBuilder string_to_sign = new StringBuilder();
                string_to_sign
                    .Append(this.PUBLISH_KEY)
                    .Append('/')
                    .Append(this.SUBSCRIBE_KEY)
                    .Append('/')
                    .Append(this.SECRET_KEY)
                    .Append('/')
                    .Append(channel)
                    .Append('/')
                    .Append(msg); // 1

                // Sign Message
                signature = md5(string_to_sign.ToString());
            }

            // Build URL
            List<string> url = new List<string>();
            url.Add("publish");
            url.Add(this.PUBLISH_KEY);
            url.Add(this.SUBSCRIBE_KEY);
            url.Add(signature);
            url.Add(channel);
            url.Add("0");
            url.Add(msg);*/

            JavaScriptSerializer ser = new JavaScriptSerializer();
            if (this.SECRET_KEY.Length > 0)
            {
                StringBuilder string_to_sign = new StringBuilder();
                string_to_sign
                    .Append(this.PUBLISH_KEY)
                    .Append('/')
                    .Append(this.SUBSCRIBE_KEY)
                    .Append('/')
                    .Append(this.SECRET_KEY)
                    .Append('/')
                    .Append(channel)
                    .Append('/')
                    .Append(ser.Serialize(message))
                    //.Append(SerializeToJsonString(message)); // 1

                ;
                // Sign Message
                signature = md5(string_to_sign.ToString());
            }
            //string message_org = message.ToString();
            if (this.CIPHER_KEY.Length > 0)
            {
                PubnubCrypto aes = new PubnubCrypto(this.CIPHER_KEY);
                //serialize the message
                message = ser.Serialize(message);
                //encrypt and encode
                message = aes.encrypt(message.ToString());
            }

            // Build URL
            List<string> url = new List<string>();
            url.Add("publish");
            url.Add(this.PUBLISH_KEY);
            url.Add(this.SUBSCRIBE_KEY);
            url.Add(signature);
            url.Add(channel);
            url.Add("0");
            //url.Add(SerializeToJsonString(message));
            url.Add(ser.Serialize(message));
            return _urlRequest(url, ResponseType.Publish,usercallback,false);
        }
Exemplo n.º 2
0
        private string jsonEncodePublishMsg(object originalMsg)
        {
            string msg = SerializeToJsonString(originalMsg);

            if (this.CIPHER_KEY.Length > 0)
            {
                PubnubCrypto aes = new PubnubCrypto(this.CIPHER_KEY);
                string encryptMsg = aes.encrypt(msg);
                msg = SerializeToJsonString(encryptMsg);
            }

            return msg;
        }
Exemplo n.º 3
0
        /**
         * Publish
         *
         * Send a message to a channel
         *
         * @param String channel name.
         * @param List<object> info.
         * @return bool false on fail
         */
        public bool publish(string channel, object message)
        {
            if (this.PUBLISH_KEY.Length == 0) return false;
            // Generate String to Sign
            string signature = "0";
            JavaScriptSerializer ser = new JavaScriptSerializer();
            if (this.SECRET_KEY.Length > 0)
            {
                StringBuilder string_to_sign = new StringBuilder();
                string_to_sign
                    .Append(this.PUBLISH_KEY)
                    .Append('/')
                    .Append(this.SUBSCRIBE_KEY)
                    .Append('/')
                    .Append(this.SECRET_KEY)
                    .Append('/')
                    .Append(channel)
                    .Append('/')
                    .Append(ser.Serialize(message))
                    //.Append(SerializeToJsonString(message)); // 1

                ;
                // Sign Message
                signature = md5(string_to_sign.ToString());
            }
            //string message_org = message.ToString();
            if (this.CIPHER_KEY.Length > 0)
            {
                PubnubCrypto aes = new PubnubCrypto(this.CIPHER_KEY);
                //serialize the message
                message = ser.Serialize(message);
                //encrypt and encode
                message = aes.encrypt(message.ToString());
            }

            // Build URL
            List<string> url = new List<string>();
            url.Add("publish");
            url.Add(this.PUBLISH_KEY);
            url.Add(this.SUBSCRIBE_KEY);
            url.Add(signature);
            url.Add(channel);
            url.Add("0");
            //url.Add(SerializeToJsonString(message));
            url.Add(ser.Serialize(message));

            return _request(url, ResponseType.Publish);
        }