Example #1
0
        public static unsafe NSData SendSynchronousRequest(NSUrlRequest request, out NSUrlResponse response, out NSError error)
        {
            IntPtr responseStorage = IntPtr.Zero;
            IntPtr errorStorage = IntPtr.Zero;

            void *resp = &responseStorage;
            void *errp = &errorStorage;
            IntPtr rhandle = (IntPtr) resp;
            IntPtr ehandle = (IntPtr) errp;

            var res = Messaging.IntPtr_objc_msgSend_IntPtr_IntPtr_IntPtr (
                class_ptr,
                selSendSynchronousRequestReturningResponseError.Handle,
                request.Handle,
                rhandle,
                ehandle);

            if (responseStorage != IntPtr.Zero)
                response = (NSUrlResponse) Runtime.GetNSObject (responseStorage);
            else
                response = null;

            if (errorStorage != IntPtr.Zero)
                error = (NSError) Runtime.GetNSObject (errorStorage);
            else
                error = null;

            return (NSData) Runtime.GetNSObject (res);
        }
		public override NSCachedUrlResponse CachedResponseForRequest (NSUrlRequest request)
		{
			var uri = (Uri) request.Url;
			int index;

			if ((index = related.IndexOf (uri)) != -1) {
				var part = related[index] as MimePart;

				if (part != null) {
					var mimeType = part.ContentType.MimeType;
					var charset = part.ContentType.Charset;
					NSUrlResponse response;
					NSData data;

					using (var content = part.ContentObject.Open ())
						data = NSData.FromStream (content);

					response = new NSUrlResponse (request.Url, mimeType, (int) data.Length, charset);

					return new NSCachedUrlResponse (response, data);
				}
			}

			return base.CachedResponseForRequest (request);
		}
        public override void ReceivedResponse(NSUrlConnection connection, NSUrlResponse response)
        {
            try
            {
                responseMessage.RequestMessage.RequestUri = new Uri(response.Url.ToString()); //At least attempt to get the url right if we redirected
                var httpResponse = response as NSHttpUrlResponse;
                if (httpResponse != null)
                {
                    stream = new ByteArrayListStream();
                    content = new CancellableStreamContent(stream, () =>
                    {
                        isComplete = true;
                        stream.SetException(new OperationCanceledException());
                    });
                    responseMessage.StatusCode = (HttpStatusCode)httpResponse.StatusCode;
                    responseMessage.Content = content;

                    foreach (var header in httpResponse.AllHeaderFields)
                    {
                        if (header.Key != null && header.Value != null)
                        {
                            responseMessage.Headers.TryAddWithoutValidation(header.Key.ToString(), header.Value.ToString());
                            responseMessage.Content.Headers.TryAddWithoutValidation(header.Key.ToString(), header.Value.ToString());
                        }
                    }
                }
            }
            finally
            {
                waitEvent.Set();
            }
        }
Example #4
0
        public override void ReceivedResponse(NSUrlConnection connection, NSUrlResponse response)
        {
            var httpResponse = response as NSHttpUrlResponse;
            Resp = httpResponse;
            if (httpResponse == null)
            {
                _statusCode = -1;
                return;
            }

            _statusCode = httpResponse.StatusCode;
        }
		public override void StartLoading ()
		{
			var value = Request.Url.Path.Substring (1);
			using (var image = Render (value)) {
				using (var response = new NSUrlResponse (Request.Url, "image/jpeg", -1, null)) {
					using (var data = image.AsJPEG ()) {
						Client.ReceivedResponse (this, response, NSUrlCacheStoragePolicy.NotAllowed);
						Client.DataLoaded (this, data);
						Client.FinishedLoading (this);
					}
				}
			}
		}
Example #6
0
        public override void StartLoading()
        {
            var value = Request.Url.Path.Substring(1);

            using (var image = Render(value)) {
                using (var response = new NSUrlResponse(Request.Url, "image/jpeg", -1, null)) {
                    using (var data = image.AsJPEG()) {
                        Client.ReceivedResponse(this, response, NSUrlCacheStoragePolicy.NotAllowed);
                        Client.DataLoaded(this, data);
                        Client.FinishedLoading(this);
                    }
                }
            }
        }
            public override void ReceivedResponse(NSUrlConnection connection, NSUrlResponse response)
            {
                var http_response = response as NSHttpUrlResponse;

                if (http_response == null)
                {
                    Console.WriteLine("Received non HTTP url response: '{0}'", response);
                    status_code = -1;
                    return;
                }

                status_code = http_response.StatusCode;
                Console.WriteLine("Status code of result:   '{0}'", status_code);
            }
Example #8
0
            public void StartUrlSchemeTask(WKWebView webView, IWKUrlSchemeTask urlSchemeTask)
            {
                var responseBytes = GetResponseBytes(urlSchemeTask.Request.Url.AbsoluteString, out var contentType, statusCode: out var statusCode);

                if (statusCode == 200)
                {
                    using (var response = new NSUrlResponse(urlSchemeTask.Request.Url, contentType, responseBytes.Length, null))
                    {
                        urlSchemeTask.DidReceiveResponse(response);
                    }
                    urlSchemeTask.DidReceiveData(NSData.FromArray(responseBytes));
                    urlSchemeTask.DidFinish();
                }
            }
        private void ResponseHandler(NSData data, NSUrlResponse response, NSError error)
        {
            if (data == null)
            {
                Debug.WriteLine("no data");
                return;
            }

            NSString dataString = NSString.FromData(data, NSStringEncoding.UTF8);

            InvokeOnMainThread(() => {
                ResultTextView.Text = dataString;
            });
        }
            public override NSUrlRequest WillSendRequest(NSUrlConnection connection, NSUrlRequest request,
                                                         NSUrlResponse response)
            {
                NSMutableUrlRequest mutableRequest = (NSMutableUrlRequest)request.MutableCopy();

                CustomHeaderHandler.ApplyHeadersTo(mutableRequest);

                if (response != null)
                {
                    RemoveProperty("MsalCustomUrlProtocol", mutableRequest);
                    _handler.Client.Redirected(_handler, mutableRequest, response);
                }

                return(mutableRequest);
            }
        public override void FinishedLoading(NSUrlConnection connection)
        {
            Client.FinishedLoading(this);

            var cachePath = CachePathForRequest(this.Request);
            var cache     = new MtRnCachedData();

            cache.Response = this.Response;
            cache.Data     = this.Data;
            NSKeyedArchiver.ArchiveRootObjectToFile(cache, cachePath);

            Connection = null;
            Data       = null;
            Response   = null;
        }
        private void Do_NSUrlConnection()
        {
            //NSUrlConnection urlConnection;
            //string localFilename = Path.GetTempPath() + Path.GetFileName(url);

            UIAlertView alertView = null;

            try
            {
                NSUrlResponse response   = null;
                NSError       error      = null;
                NSUrlRequest  urlRequest = new NSUrlRequest(new NSUrl(url), NSUrlRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData, 120);
                NSData        data       = NSUrlConnection.SendSynchronousRequest(urlRequest, out response, out error);

                if (data == null)
                {
                    alertView = new UIAlertView("Error", "NSUrlConnection.SendSynchronousRequest returned null\n" + error.LocalizedDescription, null, "Ok", null);
                }
                else
                {
                    NSString dataString = NSString.FromData(data, NSStringEncoding.ASCIIStringEncoding);

                    if (dataString == null)
                    {
                        alertView = new UIAlertView("Error", "NSString.FromData returned null", null, "Ok", null);
                    }
                    else
                    {
                        alertView = new UIAlertView("Success", dataString.ToString(), null, "Ok", null);
                    }
                }
            }
            catch (Exception e)
            {
                if (alertView == null)
                {
                    alertView = new UIAlertView("Error", e.Message, null, "Ok", null);
                }

                Console.WriteLine(e.Message);
            }

            alertView.Show();


            //ProxyTest_NSUrlConnectionDelegate connectionDelegate = new ProxyTest_NSUrlConnectionDelegate();
            //urlConnection = new NSUrlConnection(DownloadRequest, connectionDelegate, true);
        }
Example #13
0
        void HandleCacheItemAdded(object sender, CachedEventArgs e)
        {
            var url = NSUrl.FromString(e.Url);

            if (url == null)
            {
                return;
            }

            var req            = NSUrlRequest.FromUrl(url);
            var data           = NSData.FromStream(e.Item.DataSource());
            var resp           = new NSUrlResponse(url, e.Item.MimeType, (nint)data.Length, "UTF-8");
            var cachedResponse = new NSCachedUrlResponse(resp, data);

            NSUrlCache.SharedCache.StoreCachedResponse(cachedResponse, req);
        }
        public void ConstructorTest()
        {
            // See https://bugzilla.xamarin.com/show_bug.cgi?id=3835
            using (var response = new NSUrlResponse())
                using (var data = new NSData()) {
                    // Test that UserInfo is NullAllowed
                    using (var res1 = new NSCachedUrlResponse(response, data, null, NSUrlCacheStoragePolicy.Allowed)) {
                        Assert.That(res1.StoragePolicy, Is.EqualTo(NSUrlCacheStoragePolicy.Allowed), "StoragePolicy-1");
                        Assert.Null(res1.UserInfo, "UserInfo-1");
                    }

                    using (var res2 = new NSCachedUrlResponse(response, data)) {
                        Assert.That(res2.StoragePolicy, Is.EqualTo(NSUrlCacheStoragePolicy.Allowed), "StoragePolicy-2");
                        Assert.Null(res2.UserInfo, "UserInfo-2");
                    }
                }
        }
Example #15
0
		public override void StartLoading ()
		{
			var value = Request.Url.Path.Substring (1);
			using (var image = Render (value))
			{
				using (var response = new NSUrlResponse (Request.Url, "image/jpeg", -1, null))
				{
					var client = (NSUrlProtocolClient)this.WeakClient;
					client.ReceivedResponse (this, response, NSUrlCacheStoragePolicy.NotAllowed);
					this.InvokeOnMainThread (delegate
					{
						using (var data = ImageAsJPEG (image))
						{
							client.DataLoaded (this, data);
						}
						client.FinishedLoading (this);
					});
				}
			}
		}
Example #16
0
        public unsafe static NSData SendSynchronousRequest(NSUrlRequest request, out NSUrlResponse response, out NSError error)
        {
            IntPtr responseStorage = IntPtr.Zero;
            IntPtr errorStorage    = IntPtr.Zero;

            void * resp    = &responseStorage;
            void * errp    = &errorStorage;
            IntPtr rhandle = (IntPtr)resp;
            IntPtr ehandle = (IntPtr)errp;

#if NET
            var res = Messaging.NativeHandle_objc_msgSend_NativeHandle_NativeHandle_NativeHandle(
#else
            var res = Messaging.IntPtr_objc_msgSend_IntPtr_IntPtr_IntPtr(
#endif
                class_ptr,
                Selector.GetHandle(selSendSynchronousRequestReturningResponseError),
                request.Handle,
                rhandle,
                ehandle);

            if (responseStorage != IntPtr.Zero)
            {
                response = (NSUrlResponse)Runtime.GetNSObject(responseStorage);
            }
            else
            {
                response = null;
            }

            if (errorStorage != IntPtr.Zero)
            {
                error = (NSError)Runtime.GetNSObject(errorStorage);
            }
            else
            {
                error = null;
            }

            return (NSData) Runtime.GetNSObject(res);
        }
Example #17
0
        static unsafe NSData SendSynchronousRequest(NSUrlRequest request, out NSUrlResponse response, NSError error)
        {
            IntPtr storage = IntPtr.Zero;

            void *p = &storage;
            IntPtr handle = (IntPtr) p;

            var res = Messaging.IntPtr_objc_msgSend_IntPtr_IntPtr_IntPtr (
                class_ptr,
                selSendSynchronousRequestReturningResponseError.Handle,
                request.Handle,
                handle,
                error != null ? error.Handle : IntPtr.Zero);

            if (storage != IntPtr.Zero)
                response = (NSUrlResponse) Runtime.GetNSObject (storage);
            else
                response = null;

            return (NSData) Runtime.GetNSObject (res);
        }
Example #18
0
        public override void StartLoading()
        {
            var value = Request.Url.Path.Substring(1);

            using (var image = Render(value))
            {
                using (var response = new NSUrlResponse(Request.Url, "image/jpeg", -1, null))
                {
                    var client = (NSUrlProtocolClient)this.WeakClient;
                    client.ReceivedResponse(this, response, NSUrlCacheStoragePolicy.NotAllowed);
                    this.InvokeOnMainThread(delegate
                    {
                        using (var data = ImageAsJPEG(image))
                        {
                            client.DataLoaded(this, data);
                        }
                        client.FinishedLoading(this);
                    });
                }
            }
        }
 void RequestCompletionHandler(NSUrlResponse responce, NSData data, NSError error)
 {
     UIApplication.SharedApplication.NetworkActivityIndicatorVisible = false;
     if (error != null)
     {
         HandleError(error);
     }
     else
     {
         var httpResponse = (NSHttpUrlResponse)responce;
         if (httpResponse.StatusCode / 100 == 2 && responce.MimeType == "application/json")
         {
             var parseOperation = new APLParseOperation(data, PersistentStoreCoordinator);
             parseQueue.AddOperation(parseOperation);
         }
         else
         {
             var userInfo    = new NSDictionary(NSError.LocalizedDescriptionKey, "Problems with connection.");
             var reportError = new NSError(new NSString("HTTP"), httpResponse.StatusCode, userInfo);
             HandleError(reportError);
         }
     }
 }
Example #20
0
        public override NSCachedUrlResponse CachedResponseForRequest(NSUrlRequest request)
        {
            var uri = (Uri)request.Url;
            int index;

            // walk up our multipart/related stack looking for the MIME part for the requested URL
            for (int i = stack.Count - 1; i >= 0; i--)
            {
                var related = stack[i];

                if ((index = related.IndexOf(uri)) == -1)
                {
                    continue;
                }

                var part = related[index] as MimePart;

                if (part != null)
                {
                    var           mimeType = part.ContentType.MimeType;
                    var           charset  = part.ContentType.Charset;
                    NSUrlResponse response;
                    NSData        data;

                    // create an NSData wrapper for the MIME part's decoded content stream
                    using (var content = part.Content.Open())
                        data = NSData.FromStream(content);

                    // construct our response
                    response = new NSUrlResponse(request.Url, mimeType, (int)data.Length, charset);

                    return(new NSCachedUrlResponse(response, data));
                }
            }

            return(base.CachedResponseForRequest(request));
        }
Example #21
0
        public void StartUrlSchemeTask(WKWebView webView, IWKUrlSchemeTask urlSchemeTask)
        {
            try
            {
                var urlToFetch = urlSchemeTask.Request.Url.ToString();
                if (!urlToFetch.Contains("favicon"))
                {
                    var safeResponse = AsyncContext.Run(() => WebFetchService.FetchResourceAsync(urlToFetch));
                    var stream       = new MemoryStream(safeResponse.Data);
                    var response     = new NSUrlResponse(urlSchemeTask.Request.Url, safeResponse.MimeType, (nint)stream.Length, null);

                    if (safeResponse.FetchDataType == typeof(FilesContainer))
                    {
                        var currentWebView = webView as HybridWebViewRenderer;
                        currentWebView.SetCurrentPageVersion(safeResponse.CurrentNrsVersion);
                        currentWebView.SetLatestPageVersion(safeResponse.LatestNrsVersion);
                    }

                    urlSchemeTask.DidReceiveResponse(response);
                    urlSchemeTask.DidReceiveData(NSData.FromStream(stream));
                    urlSchemeTask.DidFinish();
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                if (ex.InnerException != null)
                {
                    var stream   = new MemoryStream();
                    var response = new NSUrlResponse(urlSchemeTask.Request.Url, "text/html", 0, null);
                    urlSchemeTask.DidReceiveResponse(response);
                    urlSchemeTask.DidReceiveData(NSData.FromStream(stream));
                    urlSchemeTask.DidFinish();
                }
            }
        }
Example #22
0
            public override NSUrlRequest WillSendRequest(NSUrlConnection connection, NSUrlRequest request,
                                                         NSUrlResponse response)
            {
                NSMutableUrlRequest mutableRequest = (NSMutableUrlRequest)request.MutableCopy();

                if (response != null)
                {
                    RemoveProperty("ADURLProtocol", mutableRequest);
                    handler.Client.Redirected(handler, mutableRequest, response);
                    connection.Cancel();
                    if (!request.Headers.ContainsKey(new NSString("x-ms-PkeyAuth")))
                    {
                        mutableRequest[BrokerConstants.ChallengeHeaderKey] = BrokerConstants.ChallengeHeaderValue;
                    }
                    return(mutableRequest);
                }

                if (!request.Headers.ContainsKey(new NSString(BrokerConstants.ChallengeHeaderKey)))
                {
                    mutableRequest[BrokerConstants.ChallengeHeaderKey] = BrokerConstants.ChallengeHeaderValue;
                }

                return(mutableRequest);
            }
Example #23
0
 public void OnReceivedResponse(WebView sender, NSObject identifier, NSUrlResponse responseReceived, WebDataSource dataSource)
 {
     Console.WriteLine("OnReceivedResponse: {0}", responseReceived.ExpectedContentLength);
 }
Example #24
0
 /// <summary>
 /// Should be authed now, start up the webview request again
 /// </summary>
 public override void ReceivedResponse(NSUrlConnection connection, NSUrlResponse response)
 {
     _auth = true;
     _view.LoadRequest(connection.CurrentRequest);
     connection.Cancel();
 }
        public override void StartLoading()
        {
            //SystemLogger.Log (SystemLogger.Module.PLATFORM, "# IPhoneNSUrlProtocol MANAGED SERVICE - Start Loading Content - HttpMethod: " + Request.HttpMethod);

            NSMutableUrlRequest newRequest = (NSMutableUrlRequest)Request.MutableCopy ();  // change to mutable in case we need to change something
            string requestUrl = null;
            if (newRequest != null && newRequest.Url != null)
                requestUrl = newRequest.Url.ToString ();
            SystemLogger.Log (SystemLogger.Module.PLATFORM, "# IPhoneNSUrlProtocol - Start Loading Content - Request URl: " + requestUrl);

            /* TO BE REMOVED - 5.0.6 [AMOB-30]
            if (Request.HttpMethod == "OPTIONS")
            {
                //In case of an OPTIONS, we allow the access to the origin of the petition
                var vlsOrigin = Request.Headers["ORIGIN"];
                //SystemLogger.Log (SystemLogger.Module.PLATFORM, "# IPhoneNSUrlProtocol - StartLoading: vlsOrigin: " + vlsOrigin);

                NSMutableDictionary headers = new NSMutableDictionary ();
                NSHttpUrlResponse Response = new NSHttpUrlResponse (Request.Url, 403, "1.1", headers);

                // if (vlsOrigin!=null && vlsOrigin.ToString() == String.Format(IPhoneServiceLocator.INTERNAL_SERVER_URL, IPhoneServiceLocator.CurrentDelegate.GetListeningPort()) ) {
                if (vlsOrigin!=null && vlsOrigin.ToString() == IPhoneServiceLocator.APPVERSE_HOST ) {
                    headers.Add (new NSString ("Access-Control-Allow-Origin"), vlsOrigin);
                    headers.Add (new NSString ("Access-Control-Allow-Methods"), new NSString ("POST"));
                    headers.Add (new NSString ("Access-Control-Allow-Headers"), new NSString ("accept, content-type"));
                    headers.Add (new NSString ("Access-Control-Max-Age"), new NSString ("1728000"));

                    Response = new NSHttpUrlResponse (Request.Url, 200, "1.1", headers);
                } else {
                    SystemLogger.Log (SystemLogger.Module.PLATFORM, "# IPhoneNSUrlProtocol - StartLoading: WARNING - origin not allowed: " + vlsOrigin);
                }

                Client.ReceivedResponse(this, Response, NSUrlCacheStoragePolicy.NotAllowed);

            } else
            */

            if (requestUrl != null) {

                if (Request.HttpMethod == "POST") {

                    string serviceName = "undefined";
                    string methodName = "undefined";
                    Object service = null;

                    if (requestUrl.StartsWith (IPhoneServiceLocator.APPVERSE_SERVICE_URI)) {
                        SystemLogger.Log (SystemLogger.Module.PLATFORM, "# IPhoneNSUrlProtocol MANAGED SERVICE");
                        // get service path
                        string commandParams = requestUrl.Substring (IPhoneServiceLocator.APPVERSE_SERVICE_URI.Length);
                        //SystemLogger.Log (SystemLogger.Module.PLATFORM, "# IPhoneNSUrlProtocol - commandParams: " + commandParams);
                        string[] commandParamsArray = commandParams.Split (new char[] { '/' });
                        serviceName = commandParamsArray [0];
                        methodName = commandParamsArray [1];
                        //SystemLogger.Log (SystemLogger.Module.PLATFORM, "# IPhoneNSUrlProtocol - serviceName: " + serviceName + ", methodName: " + methodName);
                        service = serviceLocator.GetService (serviceName);

                        String query = null;
                        if (newRequest.Body != null) {
                            SystemLogger.Log (SystemLogger.Module.PLATFORM,
                                "# IPhoneNSUrlProtocol - query data [ONLY FOR TESTING PURPOSES, PLEASE REMOVE THIS TRACE FROM LOG] request length: " + newRequest.Body.Length);

                            query = NSString.FromData (newRequest.Body, NSStringEncoding.UTF8);
                        }

                        SystemLogger.Log (SystemLogger.Module.PLATFORM, "# IPhoneNSUrlProtocol - sending Async POST result for service: " + serviceName + ", and method: " + methodName);
                        serviceURIHandler.ProcessAsyncPOSTResult (serviceInvocationManager, service, methodName, query);

                        NSData nsDataResponse = NSData.FromString ("MANAGED SERVICE (data returned using callback or global listener)");
                        NSUrlResponse response = new NSUrlResponse (newRequest.Url, "text/html", (nint)nsDataResponse.Length, "utf-8");
                        SystemLogger.Log (SystemLogger.Module.PLATFORM, "# IPhoneNSUrlProtocol MANAGED SERVICE - Service executed (data will be returned using callback or global listener)");
                        Client.ReceivedResponse (this, response, NSUrlCacheStoragePolicy.NotAllowed);
                        Client.DataLoaded (this, nsDataResponse);

                    }

                } else if (Request.HttpMethod == "GET") {
                    if (requestUrl.StartsWith (IPhoneServiceLocator.APPVERSE_RESOURCE_URI)) {
                        SystemLogger.Log (SystemLogger.Module.PLATFORM, "# IPhoneNSUrlProtocol MANAGED WEB RESOURCE");

                        String resourcePath = newRequest.Url.Path;
                        String mimeType = resourceURIHandler.GetWebResourceMimeType (resourcePath, true);
                        NSData nsDataResponse = resourceURIHandler.ProcessWebResource (resourcePath);
                        if (nsDataResponse == null) {
                            SystemLogger.Log (SystemLogger.Module.PLATFORM, "# IPhoneNSUrlProtocol MANAGED WEB RESOURCE no data bytes - " + requestUrl);
                            nsDataResponse = NSData.FromString ("MANAGED WEB RESOURCE : no data bytes");
                        }
                        NSUrlResponse response = new NSUrlResponse (newRequest.Url, mimeType, (nint)nsDataResponse.Length, "utf-8");
                        Client.ReceivedResponse (this, response, NSUrlCacheStoragePolicy.NotAllowed);
                        Client.DataLoaded (this, nsDataResponse);

                    } else if (requestUrl.StartsWith (IPhoneServiceLocator.APPVERSE_DOCUMENT_URI)) {

                        SystemLogger.Log (SystemLogger.Module.PLATFORM, "# IPhoneNSUrlProtocol MANAGED DOCUMENT RESOURCE");

                        String resourcePath = newRequest.Url.Path.Substring (IPhoneServiceLocator.APPVERSE_DOCUMENT_PATH.Length);
                        String mimeType = resourceURIHandler.GetWebResourceMimeType (resourcePath.ToLower (), false);
                        NSData nsDataResponse = resourceURIHandler.ProcessDocumentResource (resourcePath);
                        if (nsDataResponse == null) {
                            SystemLogger.Log (SystemLogger.Module.PLATFORM, "# IPhoneNSUrlProtocol MANAGED DOCUMENT RESOURCE no data bytes - " + requestUrl);
                            nsDataResponse = NSData.FromString ("MANAGED DOCUMENT RESOURCE : no data bytes");
                        }
                        NSUrlResponse response = new NSUrlResponse (newRequest.Url, mimeType, (nint)nsDataResponse.Length, "utf-8");
                        Client.ReceivedResponse (this, response, NSUrlCacheStoragePolicy.NotAllowed);
                        Client.DataLoaded (this, nsDataResponse);
                    }
                }
            }

            Client.FinishedLoading (this);
        }
 public override void ReceivedResponse(NSUrlConnection connection, NSUrlResponse response)
 {
     iExpectedContentLength = response.ExpectedContentLength;
 }
Example #27
0
 public void Redirected(NSUrlProtocol protocol, NSUrlRequest redirectedToEequest, NSUrlResponse redirectResponse)
 {
     Messaging.void_objc_msgSend_IntPtr_IntPtr_IntPtr(this.Handle, Selector.GetHandle(selUrlProtocolWasRedirectedToRequestRedirectResponse_), protocol.Handle, redirectedToEequest.Handle, redirectResponse.Handle);
 }
		public override void ReceivedResponse (NSUrlConnection connection, NSUrlResponse response)
		{
			long length = response.ExpectedContentLength;
			if (length == -1) {
				length = 1* 1024 * 1024;
			}
			ResponseData = new byte[length];
			_receivedDataLength = 0;
		}
Example #29
0
 public virtual void DidReceiveResponse(NSUrlSession session, NSUrlSessionDataTask dataTask, NSUrlResponse response, Action <NSUrlSessionResponseDisposition> completionHandler)
 {
     State = -3;
     completionHandler(NSUrlSessionResponseDisposition.Allow);
     this.Client.ReceivedResponse(this, response, NSUrlCacheStoragePolicy.Allowed);
 }
Example #30
0
 public override void ReceivedResponse(NSUrlConnection connection, NSUrlResponse response)
 {
     buffer.Length = 0;
 }
Example #31
0
		public override void ReceivedResponse (NSUrlConnection connection, NSUrlResponse response)
		{
			// TODO: Implement - see: http://go-mono.com/docs/index.aspx?link=T%3aMonoTouch.Foundation.ModelAttribute
			
		}
		private void RequestCompletionHandler (NSUrlResponse responce, NSData data, NSError error)
		{
			UIApplication.SharedApplication.NetworkActivityIndicatorVisible = false;
			if (error != null) {
				HandleError (error);
			} else {
				var httpResponse = (NSHttpUrlResponse)responce;
				if (httpResponse.StatusCode / 100 == 2 && responce.MimeType == "application/json") {
					var parseOperation = new APLParseOperation (data, PersistentStoreCoordinator);
					parseQueue.AddOperation (parseOperation);
				} else {
					var errorString = new NSString ("Problems with connection.");
					var userInfo = NSDictionary.FromObjectAndKey (errorString, NSError.LocalizedDescriptionKey);
					var reportError = new NSError (new NSString ("HTTP"), httpResponse.StatusCode, userInfo);
					HandleError (reportError);
				}
			}
		}
Example #33
0
 public void ReceivedResponse(NSUrlProtocol protocol, NSUrlResponse response, NSUrlCacheStoragePolicy policy)
 {
     Messaging.void_objc_msgSend_IntPtr_IntPtr_int (this.Handle, selUrlProtocolDidReceiveResponseCacheStoragePolicy_, protocol.Handle, response.Handle, (int)policy);
 }
Example #34
0
 public void Redirected(NSUrlProtocol protocol, NSUrlRequest redirectedToEequest, NSUrlResponse redirectResponse)
 {
     Messaging.void_objc_msgSend_IntPtr_IntPtr_IntPtr (this.Handle, selUrlProtocolWasRedirectedToRequestRedirectResponse_, protocol.Handle, redirectedToEequest.Handle, redirectResponse.Handle);
 }
			public override void ReceivedResponse (NSUrlConnection connection, NSUrlResponse response)
			{
				var http_response = response as NSHttpUrlResponse;
				if (http_response == null) {
					Console.WriteLine ("Received non HTTP url response: '{0}'", response);
					status_code = -1;
					return;
				}
				
				status_code = http_response.StatusCode;
				Console.WriteLine ("Status code of result:   '{0}'", status_code);
			}
Example #36
0
 public override void ReceivedResponse(NSUrlConnection connection, NSUrlResponse response)
 {
     handler.Client.ReceivedResponse(handler, response, NSUrlCacheStoragePolicy.NotAllowed);
 }
Example #37
0
        public override void DidReceiveResponse(NSUrlSession session, NSUrlSessionDataTask dataTask, NSUrlResponse response, Action <NSUrlSessionResponseDisposition> completionHandler)
        {
            var data = GetResponseForTask(dataTask);

            try
            {
                if (data.CancellationToken.IsCancellationRequested)
                {
                    dataTask.Cancel();
                }

                var resp = (NSHttpUrlResponse)response;

                var content = new CancellableStreamContent(data.ResponseBody, () =>
                {
                    if (!data.IsCompleted)
                    {
                        dataTask.Cancel();
                    }
                    data.IsCompleted = true;

                    data.ResponseBody.SetException(new OperationCanceledException());
                })
                {
                    Progress = data.Progress
                };


                // NB: The double cast is because of a Xamarin compiler bug
                var status = (int)resp.StatusCode;
                var ret    = new HttpResponseMessage((HttpStatusCode)status)
                {
                    Content        = content,
                    RequestMessage = data.Request,
                };
                ret.RequestMessage.RequestUri = new Uri(resp.Url.AbsoluteString);

                foreach (var v in resp.AllHeaderFields)
                {
                    // NB: Cocoa trolling us so hard by giving us back dummy dictionary entries
                    if (v.Key == null || v.Value == null)
                    {
                        continue;
                    }

                    ret.Headers.TryAddWithoutValidation(v.Key.ToString(), v.Value.ToString());
                    ret.Content.Headers.TryAddWithoutValidation(v.Key.ToString(), v.Value.ToString());
                }

                data.FutureResponse.TrySetResult(ret);
            }
            catch (Exception ex)
            {
                data.FutureResponse.TrySetException(ex);
            }

            completionHandler(NSUrlSessionResponseDisposition.Allow);
        }
            public override void DidReceiveResponse(NSUrlSession session, NSUrlSessionDataTask dataTask, NSUrlResponse response, Action<NSUrlSessionResponseDisposition> completionHandler)
            {
                var data = getResponseForTask(dataTask);

                try {
                    if (data.CancellationToken.IsCancellationRequested) {
                        dataTask.Cancel();
                    }

                    var resp = (NSHttpUrlResponse)response;

                    var ret = new HttpResponseMessage((HttpStatusCode)resp.StatusCode) {
                        Content = new CancellableStreamContent(data.ResponseBody, () => {
                            //Console.WriteLine("Cancelling!");
                            if (!data.IsCompleted) dataTask.Cancel();
                            data.IsCompleted = true;

                            data.ResponseBody.SetException(new OperationCanceledException());
                        }),
                        RequestMessage = data.Request,
                    };

                    foreach(var v in resp.AllHeaderFields) {
                        // NB: Cocoa trolling us so hard by giving us back dummy
                        // dictionary entries
                        if (v.Key == null || v.Value == null) continue;

                        ret.Headers.TryAddWithoutValidation(v.Key.ToString(), v.Value.ToString());
                        ret.Content.Headers.TryAddWithoutValidation(v.Key.ToString(), v.Value.ToString());
                    }

                    data.FutureResponse.TrySetResult(ret);
                } catch (Exception ex) {
                    data.FutureResponse.TrySetException(ex);
                }

                completionHandler(NSUrlSessionResponseDisposition.Allow);
            }
Example #39
0
        // Preform the download
        private void Download(bool isAsync, string path)
        {
            _stringBuilder.Clear();

            NSMutableUrlRequest request = null;
            NSError             error   = null;

            try
            {
#if DEBUG
                DateTime start = DateTime.Now;
#endif
                request = new NSMutableUrlRequest(new NSUrl(_url), NSUrlRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData, _timeout);

                if (_post != String.Empty)
                {
                    request.HttpMethod        = "POST";
                    request["Content-Length"] = _post.Length.ToString();;
                    request["Content-Type"]   = "application/x-www-form-urlencoded";
                    request.Body = _post;
                }

                if (isAsync)
                {
                    DataDownloader_NSUrlConnectionDelegate connectionDelegate = new DataDownloader_NSUrlConnectionDelegate();

                    connectionDelegate.AsyncDownloadComplete += delegate(object sender, AsyncDownloadComplete_EventArgs e) {
                        if (path != String.Empty)
                        {
                            ((DataDownloader_NSUrlConnectionDelegate)sender).WriteResultToFile(path);
                        }

                        if (AsyncDownloadComplete != null)
                        {
                            AsyncDownloadComplete(this, e);
                        }
                    };


                    if (AsyncDownloadProgressChanged != null)
                    {
                        connectionDelegate.AsyncDownloadProgressChanged += delegate(object sender, AsyncDownloadProgressChanged_EventArgs e) {
                            AsyncDownloadProgressChanged(this, e);
                        };
                    }


                    connectionDelegate.AsyncDownloadFailed += delegate(object sender, AsyncDownloadFailed_EventArgs e) {
                        _exception = new Exception(e.Error.LocalizedDescription);

                        if (AsyncDownloadFailed != null)
                        {
                            AsyncDownloadFailed(this, e);
                        }
                    };


                    // Not using matching functions, but I'll live.
                    //NSUrlConnection.SendAsynchronousRequest(request, new NSOperationQueue(), connectionDelegate);
                    _connection = new NSUrlConnection(request, connectionDelegate, true);
                }
                else
                {
                    NSUrlResponse response = null;

                    NSData output = NSUrlConnection.SendSynchronousRequest(request, out response, out error);

                    if (output == null)
                    {
                        if (error != null)
                        {
                            _exception = new Exception(error.LocalizedDescription);
                        }
                        else if (response == null)
                        {
                            _exception = new Exception("Could not get a response from the server.");
                        }
                        else
                        {
                            _exception = new Exception("Could not get data from server.");
                        }
                    }

                    if (path != String.Empty)
                    {
                        File.WriteAllText(path, output.ToString());
                    }

                    _stringBuilder = new StringBuilder(output.ToString());
                    Console.WriteLine(_stringBuilder.ToString());
                }
#if DEBUG
                Console.WriteLine("NSData.FromUrl: " + (DateTime.Now - start).TotalMilliseconds);
                start = DateTime.Now;
#endif
            }
            catch (Exception err)
            {
                _exception = err;
                Console.WriteLine("StreamLoading Error: " + err.Message);
            }
            finally
            {
            }
        }
    /// <summary>
    /// Obtengo codigo response.
    /// </summary>
    /// <param name="session">Session.</param>
    /// <param name="dataTask">Data task.</param>
    /// <param name="response">Response.</param>
    /// <param name="completionHandler">Completion handler.</param>
    public override void DidReceiveResponse(NSUrlSession session, NSUrlSessionDataTask dataTask, NSUrlResponse response, Action <NSUrlSessionResponseDisposition> completionHandler)
    {
        // Compruebo si es null
        if (!(response is NSHttpUrlResponse http_response))
        {
            status_code = -1;
            return;
        }

        // Obtengo codigo
        status_code = http_response.StatusCode;

        // Conexion
        completionHandler(status_code == 200 || status_code == 201 ? NSUrlSessionResponseDisposition.Allow : NSUrlSessionResponseDisposition.Cancel);
    }
Example #41
0
        public override void DidReceiveResponse(NSUrlSession session, NSUrlSessionDataTask dataTask, NSUrlResponse response, Action <NSUrlSessionResponseDisposition> completionHandler)
        {
            System.Diagnostics.Debug.WriteLine("DidReceiveResponse:  " + response.ToString());

            completionHandler.Invoke(NSUrlSessionResponseDisposition.Allow);
        }
Example #42
0
 public void ReceivedResponse(NSUrlProtocol protocol, NSUrlResponse response, NSUrlCacheStoragePolicy policy)
 {
     Messaging.void_objc_msgSend_intptr_intptr_nuint(this.Handle, Selector.GetHandle(selUrlProtocolDidReceiveResponseCacheStoragePolicy_), protocol.Handle, response.Handle, (nuint)policy);
 }
 public override void ReceivedResponse(NSUrlConnection connection, NSUrlResponse response)
 {
     _handler.Client.ReceivedResponse(_handler, response, NSUrlCacheStoragePolicy.NotAllowed);
 }
            public override void DidReceiveResponse(NSUrlSession session, NSUrlSessionDataTask dataTask, NSUrlResponse response, Action <NSUrlSessionResponseDisposition> completionHandler)
            {
                var inflight = GetInflightData(dataTask);

                if (inflight == null)
                {
                    return;
                }

                try {
                    var urlResponse = (NSHttpUrlResponse)response;
                    var status      = (int)urlResponse.StatusCode;

                    var content = new NSUrlSessionDataTaskStreamContent(inflight.Stream, () => {
                        if (!inflight.Completed)
                        {
                            dataTask.Cancel();
                        }

                        inflight.Disposed = true;
                        inflight.Stream.TrySetException(new ObjectDisposedException("The content stream was disposed."));

                        sessionHandler.RemoveInflightData(dataTask);
                    }, inflight.CancellationTokenSource.Token);

                    // NB: The double cast is because of a Xamarin compiler bug
                    var httpResponse = new HttpResponseMessage((HttpStatusCode)status)
                    {
                        Content        = content,
                        RequestMessage = inflight.Request
                    };
                    httpResponse.RequestMessage.RequestUri = new Uri(urlResponse.Url.AbsoluteString);

                    foreach (var v in urlResponse.AllHeaderFields)
                    {
                        // NB: Cocoa trolling us so hard by giving us back dummy dictionary entries
                        if (v.Key == null || v.Value == null)
                        {
                            continue;
                        }
                        // NSUrlSession tries to be smart with cookies, we will not use the raw value but the ones provided by the cookie storage
                        if (v.Key.ToString() == SetCookie)
                        {
                            continue;
                        }

                        httpResponse.Headers.TryAddWithoutValidation(v.Key.ToString(), v.Value.ToString());
                        httpResponse.Content.Headers.TryAddWithoutValidation(v.Key.ToString(), v.Value.ToString());
                    }

                    var cookies = session.Configuration.HttpCookieStorage.CookiesForUrl(response.Url);
                    for (var index = 0; index < cookies.Length; index++)
                    {
                        httpResponse.Headers.TryAddWithoutValidation(SetCookie, cookies [index].GetHeaderValue());
                    }

                    inflight.Response = httpResponse;

                    // We don't want to send the response back to the task just yet.  Because we want to mimic .NET behavior
                    // as much as possible.  When the response is sent back in .NET, the content stream is ready to read or the
                    // request has completed, because of this we want to send back the response in DidReceiveData or DidCompleteWithError
                    if (dataTask.State == NSUrlSessionTaskState.Suspended)
                    {
                        dataTask.Resume();
                    }
                } catch (Exception ex) {
                    inflight.CompletionSource.TrySetException(ex);
                    inflight.Stream.TrySetException(ex);

                    sessionHandler.RemoveInflightData(dataTask);
                }

                completionHandler(NSUrlSessionResponseDisposition.Allow);
            }
            public override NSUrlRequest WillSendRequest(NSUrlConnection connection, NSUrlRequest request,
                NSUrlResponse response)
            {
                NSMutableUrlRequest mutableRequest = (NSMutableUrlRequest) request.MutableCopy();
                CustomHeaderHandler.ApplyHeadersTo(mutableRequest);

                if (response != null)
                {
                    RemoveProperty("MsalCustomUrlProtocol", mutableRequest);
                    _handler.Client.Redirected(_handler, mutableRequest, response);
                }

                return mutableRequest;
            }
 public override void ReceivedResponse(NSUrlConnection connection, NSUrlResponse response)
 {
     expectedBytes = response.ExpectedContentLength;
 }
Example #47
0
 public override NSUrlRequest OnSendRequest(WebView sender, NSObject identifier, NSUrlRequest request, NSUrlResponse redirectResponse, WebDataSource dataSource);
Example #48
0
 public override void ReceivedResponse(NSUrlConnection connection, NSUrlResponse response)
 {
     throw new System.NotImplementedException ();
 }
Example #49
0
 public override void OnReceivedResponse(WebView sender, NSObject identifier, NSUrlResponse responseReceived, WebDataSource dataSource);
            public override void DidReceiveResponse(NSUrlSession session, NSUrlSessionDataTask dataTask, NSUrlResponse response, Action <NSUrlSessionResponseDisposition> completionHandler)
            {
                var data = getResponseForTask(dataTask);

                try {
                    if (data.CancellationToken.IsCancellationRequested)
                    {
                        dataTask.Cancel();
                    }

                    var resp = (NSHttpUrlResponse)response;
                    var req  = data.Request;

                    if (This.throwOnCaptiveNetwork && req.RequestUri.Host != resp.Url.Host)
                    {
                        throw new CaptiveNetworkException(req.RequestUri, new Uri(resp.Url.ToString()));
                    }

                    var content = new CancellableStreamContent(data.ResponseBody, () => {
                        if (!data.IsCompleted)
                        {
                            dataTask.Cancel();
                        }
                        data.IsCompleted = true;

                        data.ResponseBody.SetException(new OperationCanceledException());
                    });

                    content.Progress = data.Progress;

                    // NB: The double cast is because of a Xamarin compiler bug
                    int status = (int)resp.StatusCode;
                    var ret    = new HttpResponseMessage((HttpStatusCode)status)
                    {
                        Content        = content,
                        RequestMessage = data.Request,
                    };

                    foreach (var v in resp.AllHeaderFields)
                    {
                        // NB: Cocoa trolling us so hard by giving us back dummy
                        // dictionary entries
                        if (v.Key == null || v.Value == null)
                        {
                            continue;
                        }

                        ret.Headers.TryAddWithoutValidation(v.Key.ToString(), v.Value.ToString());
                        ret.Content.Headers.TryAddWithoutValidation(v.Key.ToString(), v.Value.ToString());
                    }
                    // NB: The awaiting code can synchronously call read, which will block, and we'll
                    // never get a didReceiveData, because we have not returned from DidReceiveResponse.
                    Task.Run(() => { data.FutureResponse.TrySetResult(ret); });
                } catch (Exception ex) {
                    data.FutureResponse.TrySetException(ex);
                }

                completionHandler(NSUrlSessionResponseDisposition.Allow);
            }
Example #51
0
			public override void ReceivedResponse(NSUrlConnection connection, NSUrlResponse response)
			{
				buffer.SetLength (0);
			}
            public override void DidReceiveResponse(NSUrlSession session, NSUrlSessionDataTask dataTask, NSUrlResponse response, Action<NSUrlSessionResponseDisposition> completionHandler)
            {
                var data = getResponseForTask(dataTask);

                try {
                    if (data.CancellationToken.IsCancellationRequested) {
                        dataTask.Cancel();
                    }

                    var resp = (NSHttpUrlResponse)response;
                    var req = data.Request;

                    if (This.throwOnCaptiveNetwork && req.RequestUri.Host != resp.Url.Host) {
                        throw new CaptiveNetworkException(req.RequestUri, new Uri(resp.Url.ToString()));
                    }

                    var content = new CancellableStreamContent(data.ResponseBody, () => {
                        if (!data.IsCompleted) {
                            dataTask.Cancel();
                        }
                        data.IsCompleted = true;

                        data.ResponseBody.SetException(new OperationCanceledException());
                    });

                    content.Progress = data.Progress;

                    // NB: The double cast is because of a Xamarin compiler bug
                    int status = (int)resp.StatusCode;
                    var ret = new HttpResponseMessage((HttpStatusCode)status) {
                        Content = content,
                        RequestMessage = data.Request,
                    };
                    ret.RequestMessage.RequestUri = new Uri(resp.Url.AbsoluteString);

                    foreach(var v in resp.AllHeaderFields) {
                        // NB: Cocoa trolling us so hard by giving us back dummy
                        // dictionary entries
                        if (v.Key == null || v.Value == null) continue;

                        ret.Headers.TryAddWithoutValidation(v.Key.ToString(), v.Value.ToString());
                        ret.Content.Headers.TryAddWithoutValidation(v.Key.ToString(), v.Value.ToString());
                    }

                    data.FutureResponse.TrySetResult(ret);
                } catch (Exception ex) {
                    data.FutureResponse.TrySetException(ex);
                }

                completionHandler(NSUrlSessionResponseDisposition.Allow);
            }
		public override void ReceivedResponse (NSUrlConnection connection, NSUrlResponse response)
		{
			del.expectedLength = response.ExpectedContentLength;
			del.currentLength = 0;
			hud.Mode = MBProgressHUDMode.Determinate;
		}
Example #54
0
		public void OnReceivedResponse(WebView sender, NSObject identifier, NSUrlResponse responseReceived, WebDataSource dataSource)
		{
			Console.WriteLine("OnReceivedResponse: {0}", responseReceived.ExpectedContentLength);
		}
 public override void Request(FBRequest request, NSUrlResponse response)
 {
 }