Пример #1
0
        public static PFObject ToPfObject(this object obj)
        {
            var type       = obj.GetType();
            var pfObj      = PFObject.FromName(type.Name);
            var properties = type.GetProperties();

            foreach (var prop in properties)
            {
                if (Attribute.IsDefined(prop, typeof(IgnoreDataMemberAttribute)))
                {
                    continue;
                }
                string keyName = Attribute.IsDefined(prop, typeof(DataMemberAttribute)) ? ((DataMemberAttribute)Attribute.GetCustomAttribute(prop, typeof(DataMemberAttribute))).Name : prop.Name;
                if (keyName == "UpdatedAt" || keyName == "CreatedAt" || keyName == "ObjectId")
                {
                    continue;
                }
                var      val = prop.GetValue(obj, null);
                NSString valString;
                if (val is DateTime)
                {
                    valString = new NSString(((DateTime)val).ToString("s"));
                }
                else
                {
                    valString = new NSString(val.ToString());
                }
                pfObj.SetObjectforKey(valString, keyName);
            }
            return(pfObj);
        }
        private void FoundResults(PFObject[] array, NSError error)
        {
            var easySection = new Section("Easy");
            var mediumSection = new Section("Medium");
            var hardSection = new Section("Hard");

            var objects = array.Select(x=> x.ToObject<GameScore>()).OrderByDescending(x=> x.Score).ToList();

            foreach(var score in objects)
            {
                var element = new StringElement(score.Player,score.Score.ToString("#,###"));
                switch(score.Dificulty)
                {
                case GameDificulty.Easy:
                    easySection.Add(element);
                    break;
                case GameDificulty.Medium:
                    mediumSection.Add(element);
                    break;
                case GameDificulty.Hard:
                    hardSection.Add (element);
                    break;
                }
            }
            Root = new RootElement("High Scores")
            {
                easySection,
                mediumSection,
                hardSection,
            };
        }
    public IEnumerator Load(string pobjectid, string classname)
    {
        var pobject = new PFObject();

        pobject.ObjectId  = pobjectid;
        pobject.ClassName = classname;

        string  url;
        WWWForm post;

        Playtomic_Request.Prepare(SECTION, LOAD, ObjectPostData(pobject), out url, out post);

        WWW www = new WWW(url, post);

        yield return(www);

        var response = Playtomic_Request.Process(www);

        if (response.Success)
        {
            var data = response.JSON;

            var po = new PFObject();
            po.ClassName = (string)data["classname"];
            po.ObjectId  = (string)data["id"];
            po.Password  = (string)data["password"];
            po.CreatedAt = DateTime.Parse((string)data["created"]);
            po.UpdatedAt = DateTime.Parse((string)data["updated"]);

            var fields = (Hashtable)data["fields"];

            foreach (var key in fields.Keys)
            {
                po.Data.Add((string)key, (string)fields[key]);
            }

            var pointers = (Hashtable)data["pointers"];

            foreach (var key in pointers.Keys)
            {
                var pdata  = (ArrayList)pointers[key];
                var pchild = new PFObject();
                pchild.ObjectId  = (string)pdata[0];
                pchild.ClassName = (string)pdata[1];

                po.Pointers.Add(new PFPointer((string)key, pchild));
            }

            response.PObject = po;
        }

        SetResponse(response, "Load");
    }
Пример #4
0
    public IEnumerator Delete(PFObject pobject)
    {
        string url;
        WWWForm post;

        Playtomic_Request.Prepare(SECTION, DELETE, ObjectPostData(pobject), out url, out post);

        WWW www = new WWW(url, post);
        yield return www;

        var response = Playtomic_Request.Process(www);
        SetResponse(response, "Delete");
    }
Пример #5
0
        public static T ToObject <T> (this PFObject pfObj) where T : new ()
        {
            T   obj  = new T();
            var type = obj.GetType();

            var keys = pfObj.AllKeys;

            foreach (var prop in type.GetProperties())
            {
                string keyName = Attribute.IsDefined(prop, typeof(DataMemberAttribute)) ? ((DataMemberAttribute)Attribute.GetCustomAttribute(prop, typeof(DataMemberAttribute))).Name : prop.Name;
                if (!keys.Contains(keyName) && keyName != "UpdatedAt" && keyName != "CreatedAt" && keyName != "ObjectId")
                {
                    continue;
                }
                if (keyName == "UpdatedAt")
                {
                    prop.SetValue(obj, (DateTime)(pfObj.UpdatedAt ?? DateTime.MinValue), null);
                    continue;
                }
                else if (keyName == "CreatedAt")
                {
                    prop.SetValue(obj, (DateTime)(pfObj.CreatedAt ?? DateTime.MinValue), null);
                    continue;
                }
                else if (keyName == "ObjectId")
                {
                    prop.SetValue(obj, pfObj.ObjectId, null);
                    continue;
                }
                if (prop.PropertyType == typeof(DateTime))
                {
                    prop.SetValue(obj, DateTime.ParseExact(pfObj.ObjectForKey(keyName).ToString(), "s", CultureInfo.InvariantCulture), null);
                }
                else if (prop.PropertyType.IsEnum)
                {
                    prop.SetValue(obj, Enum.Parse(prop.PropertyType, pfObj.ObjectForKey(keyName).ToString()), null);
                }
                else if (prop.PropertyType == typeof(String))
                {
                    prop.SetValue(obj, pfObj.ObjectForKey(keyName).ToString(), null);
                }
                else
                {
                    prop.SetValue(obj, Convert.ChangeType(pfObj.ObjectForKey(keyName).ToString(), prop.PropertyType), null);
                }
            }

            return(obj);
        }
    public IEnumerator Delete(PFObject pobject)
    {
        string  url;
        WWWForm post;

        Playtomic_Request.Prepare(SECTION, DELETE, ObjectPostData(pobject), out url, out post);

        WWW www = new WWW(url, post);

        yield return(www);

        var response = Playtomic_Request.Process(www);

        SetResponse(response, "Delete");
    }
        //ParseStarterProjectViewController viewController;

        //
        // This method is invoked when the application has loaded and is ready to run. In this
        // method you should instantiate the window, load the UI into it and then make the window
        // visible.
        //
        // You have 17 seconds to return from this method, or iOS will terminate your application.
        //
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            NSUrlResponse url;

            window = new UIWindow(UIScreen.MainScreen.Bounds);
            Parse.Parse.SetApplicationId("appid", "clientkey");
            NSError error = new NSError();

            PFObject testObject = PFObject.FromName("TestObject");

            testObject.SetObjectforKey(new NSString("bar"), "foo");
            testObject.Save(out error);
            //viewController = new ParseStarterProjectViewController ();
            //window.RootViewController = viewController;
            window.MakeKeyAndVisible();

            return(true);
        }
Пример #8
0
    // Parse
    IEnumerator SaveParseObject()
    {
        Debug.Log("Saving Parse Object");
        var po = new PFObject();

        po.ClassName = "unity";
        po.Data.Add("param", "value");

        yield return(StartCoroutine(Playtomic.Parse.Save(po)));

        var response = Playtomic.Parse.GetResponse("Save");

        if (response.Success)
        {
            Debug.Log("Object saved: " + response.PObject.ObjectId);
        }
        else
        {
            Debug.Log("Object failed to save because of " + response.ErrorCode + ": " + response.ErrorDescription);
        }
    }
    /**
     * Turns a ParseObject into data to be POST'd for saving, finding
     * @param	pobject		The ParseObject
     */
    private static Dictionary <String, String> ObjectPostData(PFObject pobject)
    {
        var postobject = new Dictionary <String, String>();

        postobject.Add("classname", pobject.ClassName);
        postobject.Add("id", (pobject.ObjectId == null ? "" : pobject.ObjectId));
        postobject.Add("password", (pobject.Password == null ? "" : pobject.Password));

        foreach (var key in pobject.Data.Keys)
        {
            postobject.Add("data" + key, pobject.Data[key]);
        }

        for (var i = pobject.Pointers.Count - 1; i > -1; i--)
        {
            postobject.Add("pointer" + i + "fieldname", pobject.Pointers[i].FieldName);
            postobject.Add("pointer" + i + "classname", pobject.Pointers[i].PObject.ClassName);
            postobject.Add("pointer" + i + "id", pobject.Pointers[i].PObject.ObjectId);
        }

        return(postobject);
    }
    public IEnumerator Save(PFObject pobject)
    {
        string  url;
        WWWForm post;

        Playtomic_Request.Prepare(SECTION, SAVE, ObjectPostData(pobject), out url, out post);

        WWW www = new WWW(url, post);

        yield return(www);

        var response = Playtomic_Request.Process(www);

        if (response.Success)
        {
            var data = (Hashtable)response.JSON;
            pobject.ObjectId  = (string)data["id"];
            pobject.CreatedAt = DateTime.Parse((string)data["created"]);
            pobject.UpdatedAt = DateTime.Parse((string)data["updated"]);
            response.PObject  = pobject;
        }

        SetResponse(response, "Save");
    }
Пример #11
0
    /**
     * Turns a ParseObject into data to be POST'd for saving, finding
     * @param	pobject		The ParseObject
     */
    private static Dictionary<String, String> ObjectPostData(PFObject pobject)
    {
        var postobject = new Dictionary<String, String>();
        postobject.Add("classname", pobject.ClassName);
        postobject.Add("id", (pobject.ObjectId == null ? "" : pobject.ObjectId));
        postobject.Add("password", (pobject.Password == null ? "" : pobject.Password));

        foreach(var key in pobject.Data.Keys)
            postobject.Add("data" + key, pobject.Data[key]);

        for(var i=pobject.Pointers.Count-1; i>-1; i--)
        {
            postobject.Add("pointer" + i + "fieldname", pobject.Pointers[i].FieldName);
            postobject.Add("pointer" + i + "classname", pobject.Pointers[i].PObject.ClassName);
            postobject.Add("pointer" + i + "id", pobject.Pointers[i].PObject.ObjectId);
        }

        return postobject;
    }
Пример #12
0
    public IEnumerator Save(PFObject pobject)
    {
        string url;
        WWWForm post;

        Playtomic_Request.Prepare(SECTION, SAVE, ObjectPostData(pobject), out url, out post);

        WWW www = new WWW(url, post);
        yield return www;

        var response = Playtomic_Request.Process(www);

        if (response.Success)
        {
            var data = (Hashtable)response.JSON;
            pobject.ObjectId = (string)data["id"];
            pobject.CreatedAt = DateTime.Parse((string)data["created"]);
            pobject.UpdatedAt = DateTime.Parse((string)data["updated"]);
            response.PObject = pobject;
        }

        SetResponse(response, "Save");
    }
Пример #13
0
    public IEnumerator Load(string pobjectid, string classname)
    {
        var pobject = new PFObject();
        pobject.ObjectId = pobjectid;
        pobject.ClassName = classname;

        string url;
        WWWForm post;

        Playtomic_Request.Prepare(SECTION, LOAD, ObjectPostData(pobject), out url, out post);

        WWW www = new WWW(url, post);
        yield return www;

        var response = Playtomic_Request.Process(www);

        if(response.Success)
        {
            var data = response.JSON;

            var po = new PFObject();
            po.ClassName = (string)data["classname"];
            po.ObjectId = (string)data["id"];
            po.Password = (string)data["password"];
            po.CreatedAt = DateTime.Parse((string)data["created"]);
            po.UpdatedAt = DateTime.Parse((string)data["updated"]);

            var fields = (Hashtable)data["fields"];

            foreach(var key in fields.Keys)
            {
                po.Data.Add((string)key, (string)fields[key]);
            }

            var pointers = (Hashtable)data["pointers"];

            foreach(var key in pointers.Keys)
            {
                var pdata = (ArrayList)pointers[key];
                var pchild = new PFObject();
                pchild.ObjectId = (string)pdata[0];
                pchild.ClassName = (string)pdata[1];

                po.Pointers.Add(new PFPointer((string)key, pchild));
            }

            response.PObject = po;
        }

        SetResponse(response, "Load");
    }
Пример #14
0
 public PFPointer(string fieldname, PFObject po)
 {
     FieldName = fieldname;
     PObject   = po;
 }
    public IEnumerator Find(PFQuery pquery)
    {
        var postdata = new Dictionary <String, String>();

        postdata.Add("classname", pquery.ClassName);
        postdata.Add("limit", pquery.Limit.ToString());
        postdata.Add("order", !string.IsNullOrEmpty(pquery.Order) ? pquery.Order : "created_at");

        foreach (var key in pquery.WhereData.Keys)
        {
            postdata.Add("data" + key, pquery.WhereData[key]);
        }

        for (var i = pquery.WherePointers.Count - 1; i > -1; i--)
        {
            postdata["pointer" + i + "fieldname"] = pquery.WherePointers[i].FieldName;
            postdata["pointer" + i + "classname"] = pquery.WherePointers[i].PObject.ClassName;
            postdata["pointer" + i + "id"]        = pquery.WherePointers[i].PObject.ObjectId;
        }

        string  url;
        WWWForm post;

        Playtomic_Request.Prepare(SECTION, FIND, postdata, out url, out post);

        WWW www = new WWW(url, post);

        yield return(www);

        var response = Playtomic_Request.Process(www);

        if (response.Success)
        {
            response.PObjects = new List <PFObject>();
            var array = response.ARRAY;

            foreach (Hashtable data in array)
            {
                var po = new PFObject();
                po.ClassName = (string)data["classname"];
                po.ObjectId  = (string)data["id"];
                po.Password  = (string)data["password"];
                po.CreatedAt = DateTime.Parse((string)data["created"]);
                po.UpdatedAt = DateTime.Parse((string)data["updated"]);

                var fields = (Hashtable)data["fields"];

                foreach (var key in fields.Keys)
                {
                    po.Data.Add((string)key, (string)fields[key]);
                }

                var pointers = (Hashtable)data["pointers"];

                foreach (var key in pointers.Keys)
                {
                    var pdata  = (ArrayList)pointers[key];
                    var pchild = new PFObject();
                    pchild.ObjectId  = (string)pdata[0];
                    pchild.ClassName = (string)pdata[1];

                    po.Pointers.Add(new PFPointer((string)key, pchild));
                }

                response.PObjects.Add(po);
            }
        }

        SetResponse(response, "Find");
    }
Пример #16
0
 public PFPointer(string fieldname, PFObject po)
 {
     FieldName = fieldname;
     PObject = po;
 }
Пример #17
0
    public IEnumerator Find(PFQuery pquery)
    {
        var postdata = new Dictionary<String, String>();
        postdata.Add("classname", pquery.ClassName);
        postdata.Add("limit", pquery.Limit.ToString());
        postdata.Add("order", !string.IsNullOrEmpty(pquery.Order) ? pquery.Order : "created_at");

        foreach(var key in pquery.WhereData.Keys)
            postdata.Add("data" + key, pquery.WhereData[key]);

        for(var i=pquery.WherePointers.Count-1; i>-1; i--)
        {
            postdata["pointer" + i + "fieldname"] = pquery.WherePointers[i].FieldName;
            postdata["pointer" + i + "classname"] = pquery.WherePointers[i].PObject.ClassName;
            postdata["pointer" + i + "id"] = pquery.WherePointers[i].PObject.ObjectId;
        }

        string url;
        WWWForm post;

        Playtomic_Request.Prepare(SECTION, FIND, postdata, out url, out post);

        WWW www = new WWW(url, post);
        yield return www;

        var response = Playtomic_Request.Process(www);

        if(response.Success)
        {
            response.PObjects = new List<PFObject>();
            var array = response.ARRAY;

            foreach(Hashtable data in array)
            {
                var po = new PFObject();
                po.ClassName = (string)data["classname"];
                po.ObjectId = (string)data["id"];
                po.Password = (string)data["password"];
                po.CreatedAt = DateTime.Parse((string)data["created"]);
                po.UpdatedAt = DateTime.Parse((string)data["updated"]);

                var fields = (Hashtable)data["fields"];

                foreach(var key in fields.Keys)
                {
                    po.Data.Add((string)key, (string)fields[key]);
                }

                var pointers = (Hashtable)data["pointers"];

                foreach(var key in pointers.Keys)
                {
                    var pdata = (ArrayList)pointers[key];
                    var pchild = new PFObject();
                    pchild.ObjectId = (string)pdata[0];
                    pchild.ClassName = (string)pdata[1];

                    po.Pointers.Add(new PFPointer((string)key, pchild));
                }

                response.PObjects.Add(po);
            }
        }

        SetResponse(response, "Find");
    }
Пример #18
0
    // Parse
    private IEnumerator SaveParseObject()
    {
        Debug.Log("Saving Parse Object");
        var po = new PFObject();
        po.ClassName = "unity";
        po.Data.Add("param", "value");

        yield return StartCoroutine(Playtomic.Parse.Save(po));
        var response = Playtomic.Parse.GetResponse("Save");

        if(response.Success)
        {
            Debug.Log("Object saved: " + response.PObject.ObjectId);
        }
        else
        {
            Debug.Log("Object failed to save because of " + response.ErrorCode + ": " + response.ErrorDescription);
        }
    }