/// <summary>
        /// Initializes a new instance of the <see cref="PostboxResponse"/> class via XmlDocument.
        /// </summary>
        /// <param name="localRequestId">localRequest identifier.</param>
        /// <param name="callName">callname of request</param>
        /// <param name="response">response object.</param>
        public PostboxGetFriendlistResponse(string localRequestId, PostboxCallName callName, XmlDocument response) : base(localRequestId, callName, response)
        {
            if (response == null)
            {
                return;
            }

            XmlNode result = response.SelectSingleNode("/PostBoxGlobal/Result");

            if (result != null)
            {
                // --- Friends ---
                XmlNode     friendsNode = result.SelectSingleNode("Friends");
                XmlNodeList friendNodes = friendsNode.ChildNodes;

                if (friendNodes.Count > 0)
                {
                    Friends = new PostboxDevicePackage[friendNodes.Count];

                    for (int i = 0; i < Friends.Length; i++)
                    {
                        // create object
                        Friends[i] = new PostboxDevicePackage(friendNodes[i].Attributes.GetNamedItem("public_device_id").InnerText,
                                                              friendNodes[i].Attributes.GetNamedItem("model").InnerText,
                                                              friendNodes[i].Attributes.GetNamedItem("type").InnerText,
                                                              friendNodes[i].Attributes.GetNamedItem("os").InnerText,
                                                              friendNodes[i].Attributes.GetNamedItem("created_at").InnerText,
                                                              friendNodes[i].Attributes.GetNamedItem("status").InnerText);
                    }
                }
            }
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="PostboxResponse"/> class via JSONObject.
        /// </summary>
        /// <param name="localRequestId">localRequest identifier.</param>
        /// <param name="callName">callname of request</param>
        /// <param name="response">response object.</param>
        public PostboxGetFriendlistResponse(string localRequestId, PostboxCallName callName, JSONObject response) : base(localRequestId, callName, response)
        {
            if (response == null)
            {
                return;
            }

            JSONObject result = response.GetField("Result");

            if (result != null)
            {
                // --- Friends ---
                JSONObject requestsNode = result.GetField("Friends");

                if (requestsNode != null & requestsNode.IsArray)
                {
                    List <JSONObject> requestNodes = requestsNode.list;

                    if (requestNodes != null && requestNodes.Count > 0)
                    {
                        Friends = new PostboxDevicePackage[requestNodes.Count];

                        for (int i = 0; i < Friends.Length; i++)
                        {
                            JSONObject request = requestNodes[i].GetField("Friend");

                            // create object
                            Friends[i] = new PostboxDevicePackage(request.GetField("public_device_id").str,
                                                                  request.GetField("model").str,
                                                                  request.GetField("type").str,
                                                                  request.GetField("os").str,
                                                                  request.GetField("created_at").str,
                                                                  request.GetField("status").str);
                        }
                    }
                }
            }
        }