Exemple #1
0
        /// <summary>
        /// Register application with Snarl.
        /// </summary>
        /// <param name="signatur"></param>
        /// <param name="title"></param>
        /// <param name="icon"></param>
        /// <param name="password">Optional (null)</param>
        /// <param name="hWndReply">Optional (IntPtr.Zero)</param>
        /// <param name="msgReply">Optional (0)</param>
        /// <returns></returns>
        public Int32 Register(String signature, String title, String icon, String password, IntPtr hWndReplyTo, Int32 msgReply)
        {
            // register?app-sig=<signature>&title=<title>[&icon=<icon>][&password=<password>][&reply-to=<reply window>][&reply=<reply message>]

            SnarlParameterList spl = new SnarlParameterList(6);

            spl.Add("app-sig", signature);
            spl.Add("title", title);
            spl.Add("icon", icon);
            spl.Add("password", password);
            spl.Add("reply-to", hWndReplyTo);
            spl.Add("reply", msgReply);

            // If password was given, save and use in all other functions requiring password
            if (!String.IsNullOrEmpty(password))
            {
                this.password = password;
            }

            Int32 request = DoRequest(Requests.Register, spl);

            if (request > 0)
            {
                this.appToken     = request;
                this.msgReply     = msgReply;
                this.appSignature = signature;
            }

            return(request);
        }
Exemple #2
0
        /// <summary>
        /// Notify
        /// </summary>
        /// <param name="classId">Optional</param>
        /// <param name="title">Optional</param>
        /// <param name="text">Optional</param>
        /// <param name="timeout">Optional</param>
        /// <param name="iconPath">Optional</param>
        /// <param name="iconBase64">Optional</param>
        /// <param name="callback">Optional</param>
        /// <param name="priority">Optional</param>
        /// <param name="uid">Optional</param>
        /// <param name="value">Optional</param>
        /// <returns></returns>
        /// <remarks>All parameters are optional. Pass null to use class default values.</remarks>
        public Int32 Notify(String classId, String title, String text, Int32?timeout, String iconPath, String iconBase64, MessagePriority?priority, String uid, String callback, String value)
        {
            // notify?[app-sig=<signature>|token=<application token>][&password=<password>][&id=<class identifier>]
            //        [&title=<title>][&text=<text>][&timeout=<timeout>][&icon=<icon path>][&icon-base64=<MIME data>][&callback=<default callback>]
            //        [&priority=<priority>][&uid=<notification uid>][&value=<value>]

            SnarlParameterList spl = new SnarlParameterList(8);

            spl.Add("token", appToken);
            spl.Add("password", password);

            spl.Add("id", classId);
            spl.Add("title", title);
            spl.Add("text", text);
            spl.Add("timeout", timeout);
            spl.Add("icon", iconPath);
            spl.Add("icon-base64", iconBase64);
            spl.Add("callback", callback);
            spl.Add("priority", (Int32?)priority);
            spl.Add("uid", uid);
            spl.Add("value", value);

            lastMsgToken = DoRequest(Requests.Notify, spl);

            return(lastMsgToken);
        }
Exemple #3
0
        /// <summary>
        /// IsVisible
        /// </summary>
        /// <param name="msgToken"></param>
        /// <returns></returns>
        public Int32 IsVisible(Int32 msgToken)
        {
            // isvisible?[token=<notification token>|app-sig=<app-sig>&uid=<uid>][&password=<password>]

            SnarlParameterList spl = new SnarlParameterList(2);

            spl.Add("token", msgToken);
            spl.Add("password", password);

            return(DoRequest(Requests.IsVisible, spl));
        }
Exemple #4
0
        /// <summary>
        /// ClearClasses
        /// </summary>
        /// <returns></returns>
        public Int32 ClearClasses()
        {
            // clearclasses?token=<app token>[&password=<password>]

            SnarlParameterList spl = new SnarlParameterList(2);

            spl.Add("token", appToken);
            spl.Add("password", password);

            return(DoRequest(Requests.ClearClasses, spl));
        }
Exemple #5
0
        /// <summary>
        /// ClearActions
        /// </summary>
        /// <param name="notificationToken"></param>
        /// <returns></returns>
        public Int32 ClearActions(Int32 msgToken)
        {
            // clearactions?[token=<notification token>|app-sig=<app-sig>&uid=<uid>][&password=<password>]

            SnarlParameterList spl = new SnarlParameterList(2);

            spl.Add("token", msgToken);
            spl.Add("password", password);

            return(DoRequest(Requests.ClearActions, spl));
        }
Exemple #6
0
        /// <summary>
        /// RemoveClass
        /// </summary>
        /// <param name="classID"></param>
        /// <returns></returns>
        /// <seealso cref="ClearClasses"/>
        public Int32 RemoveClass(String classID)
        {
            // remclass?[app-sig=<signature>|token=<application token>][&password=<password>][&id=<class identifier>|&all=<0|1>]

            SnarlParameterList spl = new SnarlParameterList(3);

            spl.Add("token", appToken);
            spl.Add("id", classID);
            spl.Add("password", password);
            // spl.Add("all", password); // Use ClearClasses

            return(DoRequest(Requests.RemoveClass, spl));
        }
Exemple #7
0
        /// <summary>
        /// AddAction
        /// </summary>
        /// <param name="notificationToken"></param>
        /// <param name="label"></param>
        /// <param name="command">If using dynamic callback command (@data), use numbers in the range [0, 32767]</param>
        /// <returns></returns>
        public Int32 AddAction(Int32 msgToken, String label, String command)
        {
            // addaction?[token=<notification token>|app-sig=<signature>&uid=<uid>][&password=<password>]&label=<label>&cmd=<command>

            SnarlParameterList spl = new SnarlParameterList(4);

            spl.Add("token", msgToken);
            spl.Add("label", label);
            spl.Add("cmd", command);
            spl.Add("password", password);

            return(DoRequest(Requests.AddAction, spl));
        }
Exemple #8
0
        /// <summary>
        /// Unregister application.
        /// </summary>
        /// <returns></returns>
        public Int32 Unregister()
        {
            // unregister?[app-sig=<signature>|token=<application token>][&password=<password>]

            SnarlParameterList spl = new SnarlParameterList(6);

            spl.Add("app-sig", appSignature);
            spl.Add("password", password);

            appToken     = 0;
            lastMsgToken = 0;
            appSignature = "";
            password     = null;
            msgReply     = 0;

            return(DoRequest(Requests.Unregister, spl));
        }
Exemple #9
0
        /// <summary>
        /// AddClass
        /// </summary>
        /// <param name="classId"></param>
        /// <param name="name"></param>
        /// <param name="title"></param>
        /// <param name="text"></param>
        /// <param name="icon"></param>
        /// <param name="sound"></param>
        /// <param name="duration"></param>
        /// <param name="callback"></param>
        /// <param name="enabled"></param>
        /// <returns></returns>
        public Int32 AddClass(String classId, String name, String title, String text, String icon, String sound, Int32?duration, String callback, bool enabled)
        {
            // addclass?[token=<token>|app-sig=<signature>][&password=<password>]&id=<class identifier>&name=<class name>[&enabled=<0|1>][&callback=<callback>]
            //          [&title=<title>][&text=<text>][&icon=<icon>][&sound=<sound>][&duration=<duration>]

            SnarlParameterList spl = new SnarlParameterList(9);

            spl.Add("token", appToken);
            spl.Add("id", classId);
            spl.Add("name", name);
            spl.Add("enabled", enabled);
            spl.Add("callback", callback);
            spl.Add("title", title);
            spl.Add("text", text);
            spl.Add("icon", icon);
            spl.Add("sound", sound);
            spl.Add("duration", duration);
            spl.Add("password", password);

            return(DoRequest(Requests.AddClass, spl));
        }
Exemple #10
0
        public Int32 Update(Int32 msgToken, String classId, String title, String text, Int32?timeout, String iconPath, String iconBase64, MessagePriority?priority, String ack, String callback, String value)
        {
            // Made from best guess - no documentation available yet
            SnarlParameterList spl = new SnarlParameterList(12);

            spl.Add("token", msgToken);
            spl.Add("password", password);

            spl.Add("id", classId);
            spl.Add("title", title);
            spl.Add("text", text);
            spl.Add("icon", iconPath);
            spl.Add("icon-base64", iconBase64);
            spl.Add("ack", ack);
            spl.Add("callback", callback);
            spl.Add("value", value);
            spl.Add("timeout", timeout);
            spl.Add("priority", (Int32?)priority);

            return(DoRequest(Requests.Update, spl));
        }
Exemple #11
0
        /// <summary>
        /// Register application with Snarl.
        /// </summary>
        /// <param name="signatur"></param>
        /// <param name="title"></param>
        /// <param name="icon"></param>
        /// <param name="password">Optional (null)</param>
        /// <param name="hWndReply">Optional (IntPtr.Zero)</param>
        /// <param name="msgReply">Optional (0)</param>
        /// <returns></returns>
        public Int32 Register(String signature, String title, String icon, String password, IntPtr hWndReplyTo, Int32 msgReply)
        {
            // register?app-sig=<signature>&title=<title>[&icon=<icon>][&password=<password>][&reply-to=<reply window>][&reply=<reply message>]

            SnarlParameterList spl = new SnarlParameterList(6);
            spl.Add("app-sig", signature);
            spl.Add("title", title);
            spl.Add("icon", icon);
            spl.Add("password", password);
            spl.Add("reply-to", hWndReplyTo);
            spl.Add("reply", msgReply);

            // If password was given, save and use in all other functions requiring password
            if (!String.IsNullOrEmpty(password))
                this.password = password;

            Int32 request = DoRequest(Requests.Register, spl);
            if (request > 0)
            {
                this.appToken = request;
                this.msgReply = msgReply;
                this.appSignature = signature;
            }

            return request;
        }
Exemple #12
0
        /// <summary>
        /// RemoveClass
        /// </summary>
        /// <param name="classID"></param>
        /// <returns></returns>
        /// <seealso cref="ClearClasses"/>
        public Int32 RemoveClass(String classID)
        {
            // remclass?[app-sig=<signature>|token=<application token>][&password=<password>][&id=<class identifier>|&all=<0|1>]

            SnarlParameterList spl = new SnarlParameterList(3);
            spl.Add("token", appToken);
            spl.Add("id", classID);
            spl.Add("password", password);
            // spl.Add("all", password); // Use ClearClasses

            return DoRequest(Requests.RemoveClass, spl);
        }
Exemple #13
0
        /// <summary>
        /// IsVisible
        /// </summary>
        /// <param name="msgToken"></param>
        /// <returns></returns>
        public Int32 IsVisible(Int32 msgToken)
        {
            // isvisible?[token=<notification token>|app-sig=<app-sig>&uid=<uid>][&password=<password>]

            SnarlParameterList spl = new SnarlParameterList(2);
            spl.Add("token", msgToken);
            spl.Add("password", password);

            return DoRequest(Requests.IsVisible, spl);
        }
Exemple #14
0
        /// <summary>
        /// Notify
        /// </summary>
        /// <param name="classId">Optional</param>
        /// <param name="title">Optional</param>
        /// <param name="text">Optional</param>
        /// <param name="timeout">Optional</param>
        /// <param name="iconPath">Optional</param>
        /// <param name="iconBase64">Optional</param>
        /// <param name="callback">Optional</param>
        /// <param name="priority">Optional</param>
        /// <param name="uid">Optional</param>
        /// <param name="value">Optional</param>
        /// <returns></returns>
        /// <remarks>All parameters are optional. Pass null to use class default values.</remarks>
        public Int32 Notify(String classId, String title, String text, Int32? timeout, String iconPath, String iconBase64, MessagePriority? priority, String uid, String callback, String value)
        {
            // notify?[app-sig=<signature>|token=<application token>][&password=<password>][&id=<class identifier>]
            //        [&title=<title>][&text=<text>][&timeout=<timeout>][&icon=<icon path>][&icon-base64=<MIME data>][&callback=<default callback>]
            //        [&priority=<priority>][&uid=<notification uid>][&value=<value>]

            SnarlParameterList spl = new SnarlParameterList(8);
            spl.Add("token", appToken);
            spl.Add("password", password);

            spl.Add("id", classId);
            spl.Add("title", title);
            spl.Add("text", text);
            spl.Add("timeout", timeout);
            spl.Add("icon", iconPath);
            spl.Add("icon-base64", iconBase64);
            spl.Add("callback", callback);
            spl.Add("priority", (Int32?)priority);
            spl.Add("uid", uid);
            spl.Add("value", value);

            lastMsgToken = DoRequest(Requests.Notify, spl);

            return lastMsgToken;
        }
Exemple #15
0
        /// <summary>
        /// ClearClasses
        /// </summary>
        /// <returns></returns>
        public Int32 ClearClasses()
        {
            // clearclasses?token=<app token>[&password=<password>]

            SnarlParameterList spl = new SnarlParameterList(2);
            spl.Add("token", appToken);
            spl.Add("password", password);

            return DoRequest(Requests.ClearClasses, spl);
        }
Exemple #16
0
        /// <summary>
        /// ClearActions
        /// </summary>
        /// <param name="notificationToken"></param>
        /// <returns></returns>
        public Int32 ClearActions(Int32 msgToken)
        {
            // clearactions?[token=<notification token>|app-sig=<app-sig>&uid=<uid>][&password=<password>]

            SnarlParameterList spl = new SnarlParameterList(2);
            spl.Add("token", msgToken);
            spl.Add("password", password);

            return DoRequest(Requests.ClearActions, spl);
        }
Exemple #17
0
        /// <summary>
        /// AddClass
        /// </summary>
        /// <param name="classId"></param>
        /// <param name="name"></param>
        /// <param name="title"></param>
        /// <param name="text"></param>
        /// <param name="icon"></param>
        /// <param name="sound"></param>
        /// <param name="duration"></param>
        /// <param name="callback"></param>
        /// <param name="enabled"></param>
        /// <returns></returns>
        public Int32 AddClass(String classId, String name, String title, String text, String icon, String sound, Int32? duration, String callback, bool enabled)
        {
            // addclass?[token=<token>|app-sig=<signature>][&password=<password>]&id=<class identifier>&name=<class name>[&enabled=<0|1>][&callback=<callback>]
            //          [&title=<title>][&text=<text>][&icon=<icon>][&sound=<sound>][&duration=<duration>]

            SnarlParameterList spl = new SnarlParameterList(9);
            spl.Add("token", appToken);
            spl.Add("id", classId);
            spl.Add("name", name);
            spl.Add("enabled", enabled);
            spl.Add("callback", callback);
            spl.Add("title", title);
            spl.Add("text", text);
            spl.Add("icon", icon);
            spl.Add("sound", sound);
            spl.Add("duration", duration);
            spl.Add("password", password);

            return DoRequest(Requests.AddClass, spl);
        }
Exemple #18
0
        /// <summary>
        /// Unregister application.
        /// </summary>
        /// <returns></returns>
        public Int32 Unregister()
        {
            // unregister?[app-sig=<signature>|token=<application token>][&password=<password>]

            SnarlParameterList spl = new SnarlParameterList(6);
            spl.Add("app-sig", appSignature);
            spl.Add("password", password);

            appToken = 0;
            lastMsgToken = 0;
            appSignature = "";
            password = null;
            msgReply = 0;

            return DoRequest(Requests.Unregister, spl);
        }
Exemple #19
0
        /// <summary>
        /// Use this function to convert a string into an UTF8 encoded byte[]
        /// </summary>
        /// <param name="strToConvert">The managed string object to convert.</param>
        /// <returns><c>byte[]</c> with the converted string.</returns>
        /*private static byte[] StringToUtf8(string str)
        {
            UTF8Encoding utf8 = new UTF8Encoding();
            byte[] returnString = new byte[utf8.GetMaxByteCount(str.Length)];

            int convertCount = utf8.GetBytes(str, 0, str.Length, returnString, 0);

            Array.Resize<byte>(ref returnString, convertCount);

            return returnString;
        }*/
        /// <summary>
        /// Internal helper function for constructing the Snarl messages
        /// </summary>
        /// <param name="request"></param>
        /// <param name="spl"></param>
        /// <param name="replyTimeout"></param>
        /// <returns></returns>
        private static Int32 DoRequest(String request, SnarlParameterList spl, UInt32 replyTimeout)
        {
            // <action>[?<data>=<value>[&<data>=<value>]]

            if (spl.ParamList.Count > 0)
            {
                StringBuilder sb = new StringBuilder(request);
                sb.Append("?");

                foreach (KeyValuePair<String, String> kvp in spl.ParamList)
                {
                    if (kvp.Value != null && kvp.Value.Length > 0)
                    {
                        sb.AppendFormat("{0}={1}&", kvp.Key, Escape(kvp.Value));
                    }
                }

                // Delete last &
                sb.Remove(sb.Length - 1, 1);

                return DoRequest(sb.ToString(), replyTimeout);
            }
            else
                return DoRequest(request, replyTimeout);
        }
Exemple #20
0
        public Int32 Update(Int32 msgToken, String classId, String title, String text, Int32? timeout, String iconPath, String iconBase64, MessagePriority? priority, String ack, String callback, String value)
        {
            // Made from best guess - no documentation available yet
            SnarlParameterList spl = new SnarlParameterList(12);
            spl.Add("token", msgToken);
            spl.Add("password", password);

            spl.Add("id", classId);
            spl.Add("title", title);
            spl.Add("text", text);
            spl.Add("icon", iconPath);
            spl.Add("icon-base64", iconBase64);
            spl.Add("ack", ack);
            spl.Add("callback", callback);
            spl.Add("value", value);
            spl.Add("timeout", timeout);
            spl.Add("priority", (Int32?)priority);

            return DoRequest(Requests.Update, spl);
        }
Exemple #21
0
 static private Int32 DoRequest(String request, SnarlParameterList spl)
 {
     return(DoRequest(request, spl, 1000));
 }
Exemple #22
0
 private static Int32 DoRequest(String request, SnarlParameterList spl)
 {
     return DoRequest(request, spl, 1000);
 }
Exemple #23
0
        /// <summary>
        /// AddAction
        /// </summary>
        /// <param name="notificationToken"></param>
        /// <param name="label"></param>
        /// <param name="command">If using dynamic callback command (@data), use numbers in the range [0, 32767]</param>
        /// <returns></returns>
        public Int32 AddAction(Int32 msgToken, String label, String command)
        {
            // addaction?[token=<notification token>|app-sig=<signature>&uid=<uid>][&password=<password>]&label=<label>&cmd=<command>

            SnarlParameterList spl = new SnarlParameterList(4);
            spl.Add("token", msgToken);
            spl.Add("label", label);
            spl.Add("cmd", command);
            spl.Add("password", password);

            return DoRequest(Requests.AddAction, spl);
        }