예제 #1
0
        // ------------------------------------------------------------------------
        // ------------------------------------------------------------------------
        public void SaveStatement(Statement statement)
        {
            // reinit state
            this.initState();

            // post header
            Dictionary <string, string> postHeader = new Dictionary <string, string>();

            postHeader.Add("Content-Type", "application/json");
            postHeader.Add("X-Experience-API-Version", this.version.ToString());
            postHeader.Add("Authorization", auth);

            // form data
            byte[] formBytes = Encoding.UTF8.GetBytes(statement.ToJSON(this.version));

            // https://learninglocker.dig-itgames.com/data/xAPI/statements?statementId=58098b7c-3353-4f9c-b812-1bddb08876fd
            string queryURL = this.endpoint + "statements";

            /*
             * // debug
             * foreach (string key in postHeader.Keys){
             *      string val = postHeader[key];
             *      Debug.Log(key + ": " + val);
             * }
             * Debug.Log(statement.ToJSON());
             * Debug.Log("Starting WWW: " + queryURL + " FORM:" + Encoding.UTF8.GetString(formBytes));
             */

            // post via www
            WWW www = new WWW(queryURL, formBytes, postHeader);

            StartCoroutine(WaitForRequest(www));
        }
예제 #2
0
        public async Task <StatementLRSResponse> SaveStatement(Statement statement)
        {
            var r   = new StatementLRSResponse();
            var req = new MyHTTPRequest();

            req.queryParams = new Dictionary <string, string>();
            req.resource    = "statements";

            if (statement.id == null)
            {
                req.method = HttpMethod.Post;
            }
            else
            {
                req.method = HttpMethod.Put;
                req.queryParams.Add("statementId", statement.id.ToString());
            }

            req.contentType = "application/json";
            req.content     = Encoding.UTF8.GetBytes(statement.ToJSON(version));

            var res = await MakeRequest(req);

            if (statement.id == null)
            {
                if (res.status != HttpStatusCode.OK)
                {
                    r.success       = false;
                    r.httpException = res.ex;
                    r.SetErrMsgFromBytes(res.content, (int)res.status);
                    return(r);
                }

                var ids = JArray.Parse(Encoding.UTF8.GetString(res.content, 0, res.content.Length));
                statement.id = new Guid((string)ids[0]);
            }
            else
            {
                if (res.status != HttpStatusCode.NoContent)
                {
                    r.success       = false;
                    r.httpException = res.ex;
                    r.SetErrMsgFromBytes(res.content);
                    return(r);
                }
            }

            r.success = true;
            r.content = statement;

            return(r);
        }
예제 #3
0
        public StatementLRSResponse SaveStatement(Statement statement)
        {
            var r   = new StatementLRSResponse();
            var req = new MyHTTPRequest();

            req.queryParams = new Dictionary <String, String>();
            req.resource    = "statements";

            if (statement.id == null)
            {
                req.method = "POST";
            }
            else
            {
                req.method = "PUT";
                req.queryParams.Add("statementId", statement.id.ToString());
            }

            req.contentType = "application/json";
            req.content     = Encoding.UTF8.GetBytes(statement.ToJSON(version));

            var res = MakeSyncRequest(req); // TODO: Blocking

            if (statement.id == null)
            {
                if (res.status != HttpStatusCode.OK)
                {
                    r.success       = false;
                    r.httpException = res.ex;
                    r.SetErrMsgFromBytes(res.content);
                    return(r);
                }

                var ids = JArray.Parse(Encoding.UTF8.GetString(res.content));
                statement.id = new Guid((String)ids[0]);
            }
            else
            {
                if (res.status != HttpStatusCode.NoContent)
                {
                    r.success       = false;
                    r.httpException = res.ex;
                    r.SetErrMsgFromBytes(res.content);
                    return(r);
                }
            }

            r.success = true;
            r.content = statement;

            return(r);
        }
예제 #4
0
        public void TestEmptyCtr()
        {
            Statement obj = new Statement();
            Assert.IsInstanceOf<Statement>(obj);
            Assert.IsNull(obj.id);
            Assert.IsNull(obj.actor);
            Assert.IsNull(obj.verb);
            Assert.IsNull(obj.target);
            Assert.IsNull(obj.result);
            Assert.IsNull(obj.context);
            Assert.IsNull(obj.version);
            Assert.IsNull(obj.timestamp);
            Assert.IsNull(obj.stored);

            StringAssert.AreEqualIgnoringCase("{\"version\":\"1.0.1\"}", obj.ToJSON());
        }
예제 #5
0
        public StatementLRSResponse SaveStatement(Statement statement)
        {
            var r = new StatementLRSResponse();
            var req = new MyHTTPRequest();
            req.queryParams = new Dictionary<String, String>();
            req.resource = "statements";

            if (statement.id == null)
            {
                req.method = "POST";
            }
            else
            {
                req.method = "PUT";
                req.queryParams.Add("statementId", statement.id.ToString());
            }

            req.contentType = "application/json";
            req.content = Encoding.UTF8.GetBytes(statement.ToJSON(version));

            var res = MakeSyncRequest(req);
            if (statement.id == null)
            {
                if (res.status != HttpStatusCode.OK)
                {
                    r.success = false;
                    r.httpException = res.ex;
                    r.SetErrMsgFromBytes(res.content);
                    return r;
                }

                var ids = JArray.Parse(Encoding.UTF8.GetString(res.content));
                statement.id = new Guid((String)ids[0]);
            }
            else {
                if (res.status != HttpStatusCode.NoContent)
                {
                    r.success = false;
                    r.httpException = res.ex;
                    r.SetErrMsgFromBytes(res.content);
                    return r;
                }
            }

            r.success = true;
            r.content = statement;

            return r;
        }
        public void TestSaveStatementSubStatement()
        {
            var statement = new Statement();
            statement.Stamp();
            statement.actor = agent;
            statement.verb = verb;
            statement.target = subStatement;

            Console.WriteLine(statement.ToJSON(true));

            StatementLRSResponse lrsRes = lrs.SaveStatement(statement);
            Assert.IsTrue(lrsRes.success);
            Assert.AreEqual(statement, lrsRes.content);
        }