예제 #1
0
        public override bool Equals(Object obj)
        {
            if (obj.GetType() != typeof(XmlRpcStruct))
            {
                return(false);
            }
            XmlRpcStruct xmlRpcStruct = (XmlRpcStruct)obj;

            if (this.Keys.Count != xmlRpcStruct.Count)
            {
                return(false);
            }
            foreach (String key in this.Keys)
            {
                if (!xmlRpcStruct.ContainsKey(key))
                {
                    return(false);
                }
                if (!this[key].Equals(xmlRpcStruct[key]))
                {
                    return(false);
                }
            }
            return(true);
        }
예제 #2
0
        protected object MapHashtable(
            IEnumerator <Node> iter,
            MappingStack mappingStack,
            MappingAction mappingAction,
            out Type mappedType)
        {
            mappedType = null;
            var retObj = new XmlRpcStruct();

            mappingStack.Push("struct mapped to XmlRpcStruct");
            try {
                while (iter.MoveNext() && iter.Current is StructMember)
                {
                    var rpcName = ((StructMember)iter.Current).Value;
                    if (retObj.ContainsKey(rpcName) && !IgnoreDuplicateMembers)
                    {
                        throw new XmlRpcInvalidXmlRpcException(
                                  mappingStack.MappingType + " contains struct value with duplicate member " + rpcName + " "
                                  + StackDump(mappingStack));
                    }

                    iter.MoveNext();

                    var value = OnStack(
                        string.Format("member {0}", rpcName),
                        mappingStack,
                        () => MapValueNode(iter, null, mappingStack, mappingAction));

                    if (!retObj.ContainsKey(rpcName))
                    {
                        retObj[rpcName] = value;
                    }
                }
            }
            finally {
                mappingStack.Pop();
            }

            return(retObj);
        }
예제 #3
0
파일: TL_Data.cs 프로젝트: MatkoHanus/STUPS
 /// <summary>
 /// robust convert a data bit to a bool 
 /// </summary>
 /// <param name="data"></param>
 /// <param name="name"></param>
 /// <returns></returns>
 internal bool? toBool(XmlRpcStruct data, string name)
 {
     if (data.ContainsKey(name))
     {
         object val = data[name];
         if (val is string)
         {
             bool result;
             bool good = bool.TryParse(val as string, out result);
             return result;
         }
         return data[name] as bool?;
     }
     return null;
 }
예제 #4
0
파일: TL_Data.cs 프로젝트: MatkoHanus/STUPS
 /// <summary>
 /// robust convert to int. can take int strings as well as ints 
 /// </summary>
 /// <param name="data"></param>
 /// <param name="name"></param>
 /// <returns></returns>
 internal int toInt(XmlRpcStruct data, string name)
 {
     if (data.ContainsKey(name))
     {
         int n;
         object val = data[name];
         if (val is string)
         {
             bool good = int.TryParse((string)val, out n);
             if (good)
                 return n;
         }
         else if (val is int)
             return (int)(val);
     }
     return 0;
 }
예제 #5
0
 private TLErrorMessage decodeSingleError(XmlRpcStruct message)
 {
     if (message.ContainsKey("code") && message.ContainsKey("message"))
         return new TLErrorMessage(message);
     else
         return null;
 }
예제 #6
0
 public Metadata(XmlRpcStruct md)
 {
     if (md.ContainsKey("Artist"))
         Artist = (string)md["Artist"];
     if (md.ContainsKey("Album"))
         Album = (string)md["Album"];
     if (md.ContainsKey("Title"))
         Track = (string)md["Title"];
     if (md.ContainsKey("Uri"))
         Uri = (string)md["Uri"];
     if (md.ContainsKey("AlbumArtUri"))
         AlbumArtUri = (string)md["AlbumArtUri"];
     if (md.ContainsKey("PlayTime"))
         PlayTime = (int)md["PlayTime"];
 }
예제 #7
0
 public Event(XmlRpcStruct x)
 {
     if (x.ContainsKey("Name"))
         Name = (string)x["Name"];
     Args = new List<object>();
     if (x.ContainsKey("Args"))
     {
         object o = x["Args"];
         object[] array = (object[])o;
         Args.AddRange(array);
     }
 }
예제 #8
0
파일: TL_Data.cs 프로젝트: MatkoHanus/STUPS
 /// <summary>
 /// parse an execution status 
 /// </summary>
 /// <param name="data"></param>
 /// <param name="name"></param>
 /// <returns></returns>
 internal TestCaseResultStatus toExecStatus(XmlRpcStruct data, string name)
 {
     TestCaseResultStatus result = TestCaseResultStatus.undefined;
     if (data.ContainsKey(name))
     {
         char c = toChar(data, name);
         switch (c)
         {
             case 'f':
             case 'F': result = TestCaseResultStatus.Fail;
                 break;
             case 'b':
             case 'B': result = TestCaseResultStatus.Blocked;
                 break;
             case 'p':
             case 'P': result = TestCaseResultStatus.Pass;
                 break;
         }
     }
     return result;
 }
예제 #9
0
파일: TL_Data.cs 프로젝트: MatkoHanus/STUPS
 internal GeneralResult(XmlRpcStruct data)
 {
     operation = (string)data["operation"];
     status = (bool)(data["status"]);
     id = toInt(data, "id");
     message = (string)data["message"];
     if ((data.ContainsKey("additionalInfo") &&
       (data["additionalInfo"] is XmlRpcStruct)))
         additionalInfo = new AdditionalInfo(data["additionalInfo"] as XmlRpcStruct);
     else
         additionalInfo = null;         
 }
예제 #10
0
파일: TL_Data.cs 프로젝트: MatkoHanus/STUPS
 internal TestCaseFromTestSuite(XmlRpcStruct data)
 {
     active = int.Parse((string)data["active"]) == 1;
     id = toInt(data, "id");
     name = (string)data["name"];
     version = toInt(data, "version");
     tcversion_id = toInt(data, "tcversion_id");
     //steps = (string)data["steps"];
     //expected_results = (string)data["expected_results"];
     external_id = (string)data["tc_external_id"];
     testSuite_id = toInt(data, "parent_id");
     is_open = int.Parse((string)data["is_open"]) == 1;
     modification_ts = base.toDate(data, "modification_ts");
     updater_id = toInt(data, "updater_id");
     execution_type = toInt(data, "execution_type");
     summary = (string)data["summary"];
     if (data.ContainsKey("details"))
         details = (string)data["details"];
     else
         details = "";
     author_id = toInt(data, "author_id");
     creation_ts = base.toDate(data, "creation_ts");
     importance = toInt(data, "importance");
     parent_id = toInt(data, "parent_id");
     node_type_id = toInt(data, "node_type_id");
     node_order = toInt(data, "node_order");
     node_table = (string)data["node_table"];
     layout = (string)data["layout"];
     status = toInt(data, "status");
     preconditions = (string)data["preconditions"];
 }
예제 #11
0
파일: TL_Data.cs 프로젝트: MatkoHanus/STUPS
 /// <summary>
 /// convert a data value to a single char
 /// </summary>
 /// <param name="data"></param>
 /// <param name="name"></param>
 /// <returns></returns>
 internal char toChar(XmlRpcStruct data, string name)
 {
     if (data.ContainsKey(name) && (data[name] is string))
     {
         string s = (string)(data[name]);
         return s[0];
     }
     return '\x00';
 }
예제 #12
0
파일: TL_Data.cs 프로젝트: MatkoHanus/STUPS
 /// <summary>
 ///  robust convert a date string
 /// </summary>
 /// <param name="data">key value dictionary</param>
 /// <param name="name">name of field to use</param>
 /// <returns></returns>
 internal DateTime toDate(XmlRpcStruct data, string name)
 {
     if (data.ContainsKey(name))
     {
         DateTime n;
         bool good = DateTime.TryParse((string)data[name], out n);
         if (good)
             return n;
     }
     return DateTime.MinValue;
 }
예제 #13
0
파일: TL_Data.cs 프로젝트: MatkoHanus/STUPS
        internal TestPlanTotal(XmlRpcStruct data)
        {
            Total_tc = toInt(data, "total_tc");
            if (data.ContainsKey("type"))
                Type = (string)data["type"];    
            if (data.ContainsKey("name"))
                Name = (string)data["name"];
          
            XmlRpcStruct xdetails = data["details"] as XmlRpcStruct;

            foreach (string key in xdetails.Keys)
            {
                XmlRpcStruct val = xdetails[key] as XmlRpcStruct;
                int qty = toInt(val,"qty");
                Details.Add(key, qty);
            }
        }        
예제 #14
0
파일: Output.cs 프로젝트: Wolf-Code/Videre
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="output">The output from the server request.</param>
        protected Output( XmlRpcStruct output )
        {
            if ( output.ContainsKey( "status" ) )
                this.StatusString = ( string ) output[ "status" ];
            else
                this.StatusString = "200 OK";

            this.Status = ConvertStatusToStatusCode( StatusString );
            this.Seconds = ( double ) output[ "seconds" ];
        }
예제 #15
0
 public static object AttemptStructDeserialization(XmlRpcStruct response, Type output)
 {
     MemberInfo[] outputMembers = output.GetMembers();
     object result = Activator.CreateInstance(output);
     PropertyInfo[] properties = output.GetProperties();
     foreach(PropertyInfo property in properties)
     {
         Console.WriteLine (property.Name);
         if(response.ContainsKey (property.Name))
         {
             Console.WriteLine("Declaring type:{0}, output type:{1}", property.PropertyType, response[property.Name].GetType());
             if(Type.Equals(property.PropertyType, response[property.Name].GetType()))
             {
                 Console.WriteLine ("Identical Type! Woot! Value is " + response[property.Name]);
                 property.SetValue(result, response[property.Name], null);
             }
         }
     }
     return result;
 }
예제 #16
0
        private static Post StructToPost(Post p, XmlRpcStruct x, bool publish)
        {
            /*
             *    1. struct {
                   2.     string postid;
                   3.     DateTime dateCreated;
                   4.     string title;
                   5.     string description;
                   6.     string[] categories;
                   7.     bool publish;
                   8. }
             */
            if (p == null)
            {
                p = new Post();
                p.Id = x.ContainsKey("postid") ? Convert.ToInt32(x["postid"]) : 0;
            }

            p.Approved = publish;
            p.Body = x["description"].ToString();
            p.Title = x["title"].ToString();

            if (x.ContainsKey("categories"))
            {
                IEnumerable categories = x["categories"] as IEnumerable;

                if (categories != null)
                {
                    foreach(object category in categories)
                    {
                        if (category != null)
                        {
                            Tag tag = new Tag { TagName = category.ToString() };
                            p.AddTag(tag);
                        }
                    }
                }
            }

            return p;
        }