/** * 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); }
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; }
/** * 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); }