private RequestResponse WebServiceRequest(RequestSetttings requestSettings)
        {
            RequestResponse result = new RequestResponse(requestSettings);

            if (connected)
            {
                result.responseCode = 200;
                result.body         = SimpleJSON.JSON.Parse("{"
                                                            + "\"authToken\": \"5a26cb5ac8b102008b41472b5a30078bc8b102008b4147589108928341\", "
                                                            + "\"actor\": { \"account\": { \"homePage\": \"http://a2:3000/\", \"name\": \"Anonymous\"}, \"name\": \"test-animal-name\"}, "
                                                            + "\"playerAnimalName\": \"test-animal-name\", "
                                                            + "\"playerId\": \"5a30078bc8b102008b41475769103\", "
                                                            + "\"objectId\": \"http://a2:3000/api/proxy/gleaner/games/5a26cb5ac8b102008b41472a/5a26cb5ac8b102008b41472b\", "
                                                            + "\"session\": 1, "
                                                            + "\"firstSessionStarted\": \"2017-12-12T16:44:59.273Z\", "
                                                            + "\"currentSessionStarted\": \"2017-12-12T16:44:59.273Z\" "
                                                            + "}").ToString();

                this.Append("netstorage", requestSettings.body);
            }
            else
            {
                result.responseCode = 0;
            }

            return(result);
        }
        /// <summary>
        /// Method loading domain model - location specified by settings.
        /// </summary>
        /// <returns>Domain Model for the player.</returns>
        internal DomainModel loadDefaultDomainModel()
        {
            loggingDM("Loading default Domain model.");
            DomainModelAssetSettings dmas = (DomainModelAssetSettings)getDMA().Settings;

            if (dmas.LocalSource)
            {
                IDataStorage ids = DomainModelAsset.Instance.getInterfaceFromAsset <IDataStorage>();
                if (ids != null)
                {
                    if (!ids.Exists(dmas.Source))
                    {
                        loggingDM("File " + dmas.Source + " not found for loading Domain model.", Severity.Error);
                        //throw new Exception("EXCEPTION: File "+ dmas.Source + " not found for loading Domain model.") ;
                        return(null);
                    }

                    loggingDM("Loading DomainModel from File.");
                    return(this.getDMFromXmlString(ids.Load(dmas.Source)));
                }
                else
                {
                    loggingDM("IDataStorage bridge absent for requested local loading method of the Domain model.", Severity.Error);
                    //throw new Exception("EXCEPTION: IDataStorage bridge absent for requested local loading method of the Domain model.");
                    return(null);
                }
            }
            else
            {
                IWebServiceRequest iwr = DomainModelAsset.Instance.getInterfaceFromAsset <IWebServiceRequest>();
                if (iwr != null)
                {
                    loggingDM("Loading web DomainModel.");
                    Uri uri = new Uri(dmas.Source);
                    Dictionary <string, string> headers = new Dictionary <string, string>();
                    //headers.Add("user", playerId);
                    //string body = dmas.Source;
                    WebServiceResponse wsr = new WebServiceResponse();
                    //currentPlayerId = playerId;

                    RequestSetttings rs = new RequestSetttings();
                    rs.method         = "GET";
                    rs.uri            = uri;
                    rs.requestHeaders = headers;
                    //rs.body = body;

                    RequestResponse rr = new RequestResponse();

                    iwr.WebServiceRequest(rs, out rr);
                    return(this.getDMFromXmlString(rr.body));
                }
                else
                {
                    loggingDM("IWebServiceRequest bridge absent for requested web loading method of the Domain model.", Severity.Error);
                    // new Exception("EXCEPTION: IWebServiceRequest bridge absent for requested web loading method of the Domain model.");
                    return(null);
                }
            }
        }
コード例 #3
0
        // See http://stackoverflow.com/questions/12224602/a-method-for-making-http-requests-on-unity-ios
        // for persistence.
        // See http://18and5.blogspot.com.es/2014/05/mono-unity3d-c-https-httpwebrequest.html

#if ASYNC
        public void WebServiceRequest(RequestSetttings requestSettings, out RequestResponse requestReponse)
        {
            // Wrap the actual method in a Task. Neccesary because we cannot:
            // 1) Make this method async (out is not allowed)
            // 2) Return a Task<RequestResponse> as it breaks the interface (only void does not break it).
            //
            Task <RequestResponse> taskName = Task.Factory.StartNew <RequestResponse>(() =>
            {
                return(WebServiceRequestAsync(requestSettings).Result);
            });

            requestReponse = taskName.Result;
        }
コード例 #4
0
        public void WebServiceRequest(RequestSetttings requestSettings, out RequestResponse requestResponse)
        {
            string url = requestSettings.uri.AbsoluteUri;

            if (string.Equals(requestSettings.method, "get", StringComparison.CurrentCultureIgnoreCase))
            {
                try
                {
                    HttpWebRequest  request     = (HttpWebRequest)WebRequest.Create(requestSettings.uri);
                    HttpWebResponse webResponse = (HttpWebResponse)request.GetResponse();
                    Stream          resStream   = webResponse.GetResponseStream();

                    Dictionary <string, string> responseHeader = new Dictionary <string, string>();
                    foreach (string key in webResponse.Headers.AllKeys)
                    {
                        responseHeader.Add(key, webResponse.Headers[key]);
                    }

                    StreamReader reader = new StreamReader(resStream);
                    string       dm     = reader.ReadToEnd();

                    requestResponse                 = new RequestResponse();
                    requestResponse.method          = requestSettings.method;
                    requestResponse.requestHeaders  = requestSettings.requestHeaders;
                    requestResponse.responseCode    = (int)webResponse.StatusCode;
                    requestResponse.responseHeaders = responseHeader;
                    requestResponse.responsMessage  = dm;
                    requestResponse.uri             = requestSettings.uri;
                }
                catch (Exception e)
                {
                    requestResponse                = new RequestResponse();
                    requestResponse.method         = requestSettings.method;
                    requestResponse.requestHeaders = requestSettings.requestHeaders;
                    requestResponse.responsMessage = "FAIL";
                    requestResponse.uri            = requestSettings.uri;
                }
            }
            else
            {
                requestResponse                = new RequestResponse();
                requestResponse.method         = requestSettings.method;
                requestResponse.requestHeaders = requestSettings.requestHeaders;
                requestResponse.responsMessage = "FAIL";
                requestResponse.uri            = requestSettings.uri;
            }
        }
コード例 #5
0
ファイル: SimvaBridge.cs プロジェクト: Victorma/arbustos-go
 public void WebServiceRequestAsync(RequestSetttings requestSettings, Action <RequestResponse> callback)
 {
     // Force Update auth params
     apiClient.UpdateParamsForAuth(null, requestSettings.requestHeaders, new string[] { "OAuth2" }, true)
     .Then(() =>
     {
         unityBridge.WebServiceRequestAsync(requestSettings, callback);
     })
     .Catch(ex =>
     {
         RequestResponse response = new RequestResponse
         {
             body         = ex.Message,
             responseCode = ex is ApiException apiEx ? apiEx.ErrorCode : 401
         };
     });
 }
コード例 #6
0
        /// <summary>
        /// Web service request.
        /// </summary>
        ///
        /// <param name="requestSettings">Options for controlling the operation. </param>
        ///
        /// <returns>
        /// A RequestResponse.
        /// </returns>
        private RequestResponse WebServiceRequest(RequestSetttings requestSettings)
#endif
        {
            RequestResponse result = new RequestResponse(requestSettings);

            try
            {
                //! Might throw a silent System.IOException on .NET 3.5 (sync).
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestSettings.uri);

                request.Method = requestSettings.method;

                // Both Accept and Content-Type are not allowed as Headers in a HttpWebRequest.
                // They need to be assigned to a matching property.

                if (requestSettings.requestHeaders.ContainsKey("Accept"))
                {
                    request.Accept = requestSettings.requestHeaders["Accept"];
                }

                if (!String.IsNullOrEmpty(requestSettings.body))
                {
                    byte[] data = Encoding.UTF8.GetBytes(requestSettings.body);

                    if (requestSettings.requestHeaders.ContainsKey("Content-Type"))
                    {
                        request.ContentType = requestSettings.requestHeaders["Content-Type"];
                    }

                    foreach (KeyValuePair <string, string> kvp in requestSettings.requestHeaders)
                    {
                        if (kvp.Key.Equals("Accept") || kvp.Key.Equals("Content-Type"))
                        {
                            continue;
                        }
                        request.Headers.Add(kvp.Key, kvp.Value);
                    }

                    request.ContentLength = data.Length;

                    // See https://msdn.microsoft.com/en-us/library/system.net.servicepoint.expect100continue(v=vs.110).aspx
                    // A2 currently does not support this 100-Continue response for POST requets.
                    request.ServicePoint.Expect100Continue = false;

#if ASYNC
                    Stream stream = await request.GetRequestStreamAsync();

                    await stream.WriteAsync(data, 0, data.Length);

                    stream.Close();
#else
                    Stream stream = request.GetRequestStream();
                    stream.Write(data, 0, data.Length);
                    stream.Close();
#endif
                }
                else
                {
                    foreach (KeyValuePair <string, string> kvp in requestSettings.requestHeaders)
                    {
                        if (kvp.Key.Equals("Accept") || kvp.Key.Equals("Content-Type"))
                        {
                            continue;
                        }
                        request.Headers.Add(kvp.Key, kvp.Value);
                    }
                }

#if ASYNC
                WebResponse response = await request.GetResponseAsync();
#else
                WebResponse response = request.GetResponse();
#endif
                if (response.Headers.HasKeys())
                {
                    foreach (string key in response.Headers.AllKeys)
                    {
                        result.responseHeaders.Add(key, response.Headers.Get(key));
                    }
                }

                result.responseCode = (int)(response as HttpWebResponse).StatusCode;

                using (StreamReader reader = new StreamReader(response.GetResponseStream()))
                {
#if ASYNC
                    result.body = await reader.ReadToEndAsync();
#else
                    result.body = reader.ReadToEnd();
#endif
                }
            }
            catch (Exception e)
            {
                result.responsMessage = e.Message;

                Log(Severity.Error, String.Format("{0} - {1}", e.GetType().Name, e.Message));
            }

            return(result);
        }
コード例 #7
0
 /// <summary>
 /// Web service request.
 /// </summary>
 ///
 /// <param name="requestSettings">  Options for controlling the operation. </param>
 /// <param name="requestResponse"> The request response. </param>
 public void WebServiceRequest(RequestSetttings requestSettings, out RequestResponse requestResponse)
 {
     requestResponse = WebServiceRequest(requestSettings);
 }
コード例 #8
0
 /// <summary>
 /// Web service request.
 /// </summary>
 ///
 /// <param name="requestSettings"> Options for controlling the operation. </param>
 ///
 /// <returns>
 /// A RequestResponse.
 /// </returns>
 private async Task <RequestResponse> WebServiceRequestAsync(RequestSetttings requestSettings)
コード例 #9
0
ファイル: SimvaBridge.cs プロジェクト: Victorma/arbustos-go
 public void WebServiceRequest(RequestSetttings requestSettings, out RequestResponse requestResponse)
 {
     // Force Update auth params
     apiClient.UpdateParamsForAuth(null, requestSettings.requestHeaders, new string[] { "OAuth2" }, false);
     unityBridge.WebServiceRequest(requestSettings, out requestResponse);
 }
コード例 #10
0
        public void WebServiceRequestAsync(RequestSetttings requestSettings, Action <RequestResponse> callback)
        {
            var response = this.WebServiceRequest(requestSettings);

            callback(response);
        }
コード例 #11
0
    public void WebServiceRequest(RequestSetttings requestSettings, out RequestResponse requestResponse)
    {
        var result = new RequestResponse(requestSettings);

        try
        {
            var request = (HttpWebRequest)WebRequest.Create(requestSettings.uri);
            var stream  = request.GetRequestStream();
            request.Method = requestSettings.method;
            if (requestSettings.requestHeaders.ContainsKey("Accept"))
            {
                request.Accept = requestSettings.requestHeaders["Accept"];
            }
            if (!string.IsNullOrEmpty(requestSettings.body))
            {
                var data = Encoding.UTF8.GetBytes(requestSettings.body);
                if (requestSettings.requestHeaders.ContainsKey("Content-Type"))
                {
                    request.ContentType = requestSettings.requestHeaders["Content-Type"];
                }
                foreach (var kvp in requestSettings.requestHeaders)
                {
                    if (kvp.Key.Equals("Accept") || kvp.Key.Equals("Content-Type"))
                    {
                        continue;
                    }
                    request.Headers.Add(kvp.Key, kvp.Value);
                }
                request.ContentLength = data.Length;
                request.ServicePoint.Expect100Continue = false;
                stream.Write(data, 0, data.Length);
                stream.Close();
            }
            else
            {
                foreach (var kvp in requestSettings.requestHeaders)
                {
                    if (kvp.Key.Equals("Accept") || kvp.Key.Equals("Content-Type"))
                    {
                        continue;
                    }
                    request.Headers.Add(kvp.Key, kvp.Value);
                }
            }

            var response = request.GetResponse();
            if (response.Headers.HasKeys())
            {
                foreach (var key in response.Headers.AllKeys)
                {
                    result.responseHeaders.Add(key, response.Headers.Get(key));
                }
            }
            result.responseCode = (int)((HttpWebResponse)response).StatusCode;
            using (var reader = new StreamReader(stream))
            {
                result.body = reader.ReadToEnd();
            }
        }
        catch (Exception e)
        {
            result.responsMessage = e.Message;

            Log(Severity.Error, string.Format("{0} - {1}", e.GetType().Name, e.Message));
        }

        requestResponse = result;
    }