示例#1
0
 /// <summary>
 /// Send a query to the Storefront API.
 /// </summary>
 /// <param name="query">Query that will be sent to the Storefront API</param>
 /// <param name="callback">callback that receives a response</param>
 override public void Load(string query, LoaderResponseHandler callback)
 {
     GlobalGameObject.AddComponent <LoaderComponent>()
     .SetURL("https://" + Domain + "/api/graphql.json")
     .SetHeaders(_Headers)
     .Load(query, callback);
 }
        public override void Load(string query, LoaderResponseHandler callback)
        {
            var body = Encoding.ASCII.GetBytes(query);
            var w    = new WWW(Url, body, _headers);

            _activeRequests.Add(ProcessRequest(w, callback));
        }
示例#3
0
        public void Load(string query, LoaderResponseHandler callback)
        {
            Callback = callback;
            byte[] body = Encoding.ASCII.GetBytes(query);
            WWW    w    = new WWW(URL, body, Headers);

            StartCoroutine(DoWWW(w));
        }
示例#4
0
 public void HandleResponse(string query, LoaderResponseHandler callback)
 {
     if (Is404Query(query))
     {
         callback(null, "404 from mock loader");
     }
     else if (IsGraphQLErrorQuery(query))
     {
         callback(@"{""errors"": [{""message"": ""GraphQL error from mock loader""}]}", null);
     }
 }
 public override void Load(string query, LoaderResponseHandler callback)
 {
     if (query == CollectionTestQueries.query1.ToString())
     {
         callback(@"{""data"":{
             ""shop"": {
                 ""products"": {
                     ""edges"": [
                         {
                             ""node"": {
                                 ""title"": ""Product1""
                             },
                             ""cursor"": ""first page""
                         }
                     ],
                     ""pageInfo"": {
                         ""hasNextPage"": true
                     }
                 }
             }
         }}", null);
     }
     else if (query == CollectionTestQueries.query2.ToString())
     {
         callback(@"{""data"":{
             ""shop"": {
                 ""products"": {
                     ""edges"": [
                         {
                             ""node"": {
                                 ""title"": ""Product2""
                             },
                             ""cursor"": ""second page""
                         }
                     ],
                     ""pageInfo"": {
                         ""hasNextPage"": false
                     }
                 }
             }
         }}", null);
     }
 }
 public override void Load(string query, LoaderResponseHandler callback)
 {
     if (query == TestQueries.QueryFail.ToString() || query == TestQueries.MutationFail.ToString())
     {
         callback(null, "Error: 404 Not Found error");
     }
     else if (query == TestQueries.Query.ToString())
     {
         callback(@"{""data"":{""shop"": {""name"": ""test shop""}}}", null);
     }
     else if (query == TestQueries.Mutation.ToString())
     {
         callback(@"{""data"":{""customerAccessTokenCreate"": {""customerAccessToken"": {""accessToken"":""12345""}}}}", null);
     }
     else
     {
         throw new Exception("Invalid test data");
     }
 }
示例#7
0
        public void Load(string query, LoaderResponseHandler callback)
        {
            bool handledResponse = false;

            foreach (IMockLoader loader in _Loaders)
            {
                if (loader.DoesHandleQueryResponse(query))
                {
                    loader.HandleResponse(query, callback);
                    handledResponse = true;

                    break;
                }
            }

            if (!handledResponse)
            {
                throw new Exception("NO QUERY RESPONSE: \n\n" + query + "\n\n");
            }
        }
        private IEnumerator ProcessRequest(WWW w, LoaderResponseHandler callback)
        {
            // We have to use this enumerator approach because the www class inherits from CustomYieldInstruction,
            // which isn't well supported in the editor.

            while (!w.isDone)
            {
                yield return(null);
            }

            if (!string.IsNullOrEmpty(w.error))
            {
                callback(null, w.error);
            }
            else
            {
                callback(w.text, null);
            }

            w.Dispose();
        }
示例#9
0
 /// <summary>
 /// Sends the GraphQL query to the GraphQL endpoint.
 /// </summary>
 /// <param name="query">a GraphQL query</param>
 /// <param name="callback">a callback which will receive a response from the GraphQL query</param>
 public abstract void Load(string query, LoaderResponseHandler callback);
示例#10
0
 public void HandleResponse(string query, LoaderResponseHandler callback)
 {
     callback(Responses[query], null);
 }