public GraphQLQueryResult Query(string query, object variables, string userAgent)
        {
            var fullQuery = new GraphQLQuery()
            {
                query     = query,
                variables = variables,
            };
            string jsonContent = JsonConvert.SerializeObject(fullQuery);

            Console.WriteLine(jsonContent);
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

            request.Method = "POST";

            UTF8Encoding encoding = new UTF8Encoding();

            Byte[] byteArray = encoding.GetBytes(jsonContent.Trim());

            request.ContentLength = byteArray.Length;
            request.ContentType   = @"application/json";
            request.UserAgent     = userAgent;

            using (Stream dataStream = request.GetRequestStream())
            {
                dataStream.Write(byteArray, 0, byteArray.Length);
            }
            long length = 0;

            try
            {
                using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                {
                    length = response.ContentLength;
                    using (Stream responseStream = response.GetResponseStream())
                    {
                        StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
                        var          json   = reader.ReadToEnd();
                        return(new GraphQLQueryResult(json));
                    }
                }
            }
            catch (WebException ex)
            {
                WebResponse errorResponse = ex.Response;
                using (Stream responseStream = errorResponse.GetResponseStream())
                {
                    StreamReader reader    = new StreamReader(responseStream, Encoding.GetEncoding("utf-8"));
                    String       errorText = reader.ReadToEnd();
                    Console.WriteLine(errorText);
                    return(new GraphQLQueryResult(null, ex));
                }
            }
        }
Beispiel #2
0
        private UnityWebRequest QueryRequest(string query, object variables)
        {
            var fullQuery = new GraphQLQuery()
            {
                query     = query,
                variables = variables,
            };

            string          json    = JsonConvert.SerializeObject(fullQuery, Formatting.None);
            UnityWebRequest request = UnityWebRequest.Post(url, UnityWebRequest.kHttpVerbPOST);

            byte[] payload = Encoding.UTF8.GetBytes(CloudSaveSettings.Encrypted ? Convert.ToBase64String(RC4.Encrypt(json, CloudSaveSettings.Key)) : json);
            request.uploadHandler = new UploadHandlerRaw(payload);
            request.SetRequestHeader("Content-Type", "application/memorycloud.custom-type");

            request.SetRequestHeader("Authorization", "Bearer " + AccessToken.CurrentAccessToken.TokenString);
            request.SetRequestHeader("AppId", FB.AppId);

            return(request);
        }
Beispiel #3
0
        private UnityWebRequest QueryRequest(string query, object variables, string token = null)
        {
            var fullQuery = new GraphQLQuery()
            {
                query     = query,
                variables = variables,
            };

            string json = JsonConvert.SerializeObject(fullQuery);

            UnityWebRequest request = UnityWebRequest.Post(url, UnityWebRequest.kHttpVerbPOST);

            byte[] payload = Encoding.UTF8.GetBytes(json);

            request.uploadHandler = new UploadHandlerRaw(payload);
            request.SetRequestHeader("Content-Type", "application/json");
            if (token != null)
            {
                request.SetRequestHeader("Authorization", "Bearer " + token);
            }

            return(request);
        }
        public UnityWebRequest Query(string query, string variables, string operationName)
        {
            var fullQuery = new GraphQLQuery()
            {
                query         = query,
                variables     = variables,
                operationName = operationName
            };

            string json = JsonUtility.ToJson(fullQuery);
            //string sToken = "";

            UnityWebRequest request = UnityWebRequest.Post(url, UnityWebRequest.kHttpVerbPOST);

            byte[]        payload = Encoding.UTF8.GetBytes(json);
            UploadHandler data    = new UploadHandlerRaw(payload);

            request.uploadHandler = data;
            request.SetRequestHeader("Content-Type", "application/json");
            //request.SetRequestHeader ("Authorization", "Bearer " + sToken);

            return(request);
        }
        /// <summary>
        /// Performs a request to the GraphQL API with the given variables.
        /// </summary>
        /// <param name="query">The query to be performed.</param>
        /// <param name="variables">The variables that will be added to the Query.</param>
        /// <returns>The result of the query.</returns>
        /// <exception cref="GraphQLRequestException">When there's a communication problem.</exception>
        public GraphQLQueryResult Query(string query, object variables = null)
        {
            var fullQuery = new GraphQLQuery()
            {
                query     = query,
                variables = variables ?? new object { },
            };

            var jsonContent = JsonConvert.SerializeObject(fullQuery);

            var request = WebRequest.Create(_url);

            request.Method = "POST";

            _configureHeaders?.Invoke(request.Headers);

            var encoding  = new UTF8Encoding();
            var byteArray = encoding.GetBytes(jsonContent.Trim());

            request.ContentLength = byteArray.Length;
            request.ContentType   = @"application/json";

            using (var dataStream = request.GetRequestStream())
            {
                dataStream.Write(byteArray, 0, byteArray.Length);
            }

            try
            {
                using (var response = (HttpWebResponse)request.GetResponse())
                {
                    using (var responseStream = response.GetResponseStream())
                    {
                        var reader = new StreamReader(responseStream, Encoding.UTF8);
                        var json   = reader.ReadToEnd();
                        return(new GraphQLQueryResult(
                                   json,
                                   response.Headers.AllKeys.ToDictionary(
                                       h => h,
                                       h => response.Headers[h]
                                       )
                                   ));
                    }
                }
            }
            catch (WebException ex)
            {
                var errorResponse = ex.Response;

                using (var responseStream = errorResponse.GetResponseStream())
                {
                    var reader = new StreamReader(responseStream, Encoding.GetEncoding("utf-8"));

                    var errorText = reader.ReadToEnd();

                    throw new GraphQLRequestException(
                              ex.Message,
                              errorText,
                              errorResponse.Headers.AllKeys.ToDictionary(
                                  h => h,
                                  h => errorResponse.Headers[h]
                                  ),
                              ex
                              );
                }
            }
        }