Esempio n. 1
0
 /// <summary>
 /// When sending Http Data requests to the Azure Marketplace, inject authorization header based on the current Access token.
 /// </summary>
 /// <param name="sender">Event sender.</param>
 /// <param name="e">Event arguments.</param>
 private void OnSendingRequest(object sender, SendingRequest2EventArgs e)
 {
     if (e.RequestMessage.GetHeader(AuthorizationHeader) == null)
     {
         e.RequestMessage.SetHeader(AuthorizationHeader, _tokenProvider.GetAuthorizationHeader());
     }
 }
        private static void VerifyJsonLightRequestHeaders(object sender, SendingRequest2EventArgs args)
        {
            var    requestMessage = args.RequestMessage;
            string accept         = requestMessage.GetHeader("Accept");
            bool   isBatch        = requestMessage.Url.OriginalString.Contains("$batch");

            if (isBatch)
            {
                Assert.AreEqual("multipart/mixed", accept);
            }
            else
            {
                if (args.RequestMessage.Url.OriginalString.Contains("$select"))
                {
                    Assert.AreEqual("application/json;odata.metadata=full", accept);
                }
                else
                {
                    Assert.AreEqual("application/json;odata.metadata=minimal", accept);
                }
            }

            if (requestMessage.Method != "GET" && requestMessage.Method != "DELETE" && !isBatch)
            {
                string contentType = requestMessage.GetHeader("Content-Type");
                Assert.AreEqual("application/json;odata.metadata=minimal", contentType);
            }
        }
Esempio n. 3
0
 /// <summary>
 /// Raises the AlterRequestAndExpectedHeaders event if there are any consumers
 /// </summary>
 /// <param name="args">The sending request args</param>
 /// <param name="expectedHeaders">The expected headers</param>
 internal void RaiseEvent(SendingRequest2EventArgs args, IDictionary <string, string> expectedHeaders)
 {
     if (this.AlterRequestAndExpectedHeaders != null)
     {
         this.AlterRequestAndExpectedHeaders(args, expectedHeaders);
     }
 }
Esempio n. 4
0
        public ShimDataRequestMessage(SendingRequest2EventArgs args)
        {
            _args = args;

            WebRequest = ShimWebHelpers.AddHeaders(HttpWebRequest.CreateHttp(_args.RequestMessage.Url), _args.RequestMessage.Headers);

            WebRequest.Method = _args.RequestMessage.Method;
        }
Esempio n. 5
0
 /// <summary>
 /// When sending Http Data requests to the Azure Marketplace, inject authorization header based on the current Access token.
 /// </summary>
 /// <param name="sender">Event sender.</param>
 /// <param name="e">Event arguments.</param>
 private void OnSendingRequest(object sender, SendingRequest2EventArgs e)
 {
     if (e.RequestMessage.GetHeader(AuthorizationHeader) == null)
     {
         RefreshToken();
         e.RequestMessage.SetHeader(AuthorizationHeader, string.Format(CultureInfo.InvariantCulture, BearerTokenFormat, this._credentials.AccessToken));
     }
 }
Esempio n. 6
0
 private void ChangeAcceptHeader(object sender, SendingRequest2EventArgs e)
 {
     if (e.RequestMessage.GetHeader("content-type") != null)
     {
         e.RequestMessage.SetHeader("content-type", _acceptHeader);
     }
     e.RequestMessage.SetHeader("accept", _acceptHeader);
 }
Esempio n. 7
0
        void OnSendingRequest2(object sender, SendingRequest2EventArgs e)
        {
            string creds = Login + ":" + Password;

            byte[] bCreds      = Encoding.ASCII.GetBytes(creds);
            string base64Creds = Convert.ToBase64String(bCreds);

            e.RequestMessage.SetHeader("Authorization", "Basic " + base64Creds);
        }
Esempio n. 8
0
        private void OnSendingRequest(object sender, SendingRequest2EventArgs e)
        {
            var shimRequest = new ShimDataRequestMessage(e);

            // Initialize the request
            _httpClient.InitializeRequest(shimRequest.WebRequest);

            RaiseSendingRequest(new WebRequestEventArgs(shimRequest.WebRequest));
        }
        private void Container_SendingRequest2(object sender, SendingRequest2EventArgs e)
        {
            string svcCredentials = string.Format("{0}:{1}", DEFAULT_USERNAME, DEFAULT_PASSWORD);

            byte[] credBytes = System.Text.ASCIIEncoding.ASCII.GetBytes(svcCredentials);

            string headerValue = string.Format("Basic {0}", Convert.ToBase64String(credBytes));

            e.RequestMessage.SetHeader(HEADER_AUTHORIZATION, headerValue);
        }
 // use SendingRequest2/SendingRequest2EventArgs since the client does not allow SendingRequest and BuildingRequest registered at the same time
 private void InjectAuthenticationCookies(object sender, SendingRequest2EventArgs e)
 {
     if (this.authenticationHeaders != null)
     {
         foreach (var header in this.authenticationHeaders)
         {
             e.RequestMessage.SetHeader(header.Key, header.Value);
         }
     }
 }
        public void DataServiceContext_SendingRequest2(object sender, SendingRequest2EventArgs e)
        {
            var authorisationHeaderValue = GetAuthorisationHeaderValue();

            if (default(string) != authorisationHeaderValue)
            {
                e.RequestMessage.SetHeader(AUTHORIZATION_HEADER_NAME, authorisationHeaderValue);
            }

            if (SetTenantHeader())
            {
                e.RequestMessage.SetHeader(TenantHeaderName, TenantID);
            }
        }
Esempio n. 12
0
        public void DataServiceContext_SendingRequest2(object sender, SendingRequest2EventArgs e)
        {
            var authorisationHeaderValue = BuildAuthorizationHeaderValue();

            if (default(string) != authorisationHeaderValue)
            {
                e.RequestMessage.SetHeader(Authentication.Header.AUTHORIZATION, authorisationHeaderValue);
            }

            if (IsTenantSpecified())
            {
                e.RequestMessage.SetHeader(TenantHeaderName, TenantId);
            }
        }
Esempio n. 13
0
        private void ContextSendingRequest2(object sender, SendingRequest2EventArgs e)
        {
            e.RequestMessage.SetHeader("Authorization", $"Bearer {_authService.Token.access_token}");
            e.RequestMessage.SetHeader("Account", $"{_authService.GetAccount()}");

            if (e.RequestMessage is HttpWebRequestMessage message)
            {
                Logger.Debug($"Sending request: {message.Method} {message.Url}");
                Logger.Debug($"Sending request: {JsonConvert.SerializeObject(message, Formatting.Indented)}");
            }
            else
            {
                Logger.Debug($"Sending request: {e.RequestMessage.Method} {e.RequestMessage.Url}");
                Logger.Debug($"Sending request: {JsonConvert.SerializeObject(e.RequestMessage, Formatting.Indented)}");
            }
        }
Esempio n. 14
0
        //*********************************************************************
        ///
        /// <summary>
        /// Adds a client certificate to a web request
        /// </summary>
        /// <param name="sender">Sender of the web request</param>
        /// <param name="args">Arguments of the request being sent</param>
        ///
        //*********************************************************************

        private void OnSendingRequest_AddCertificate(object sender, SendingRequest2EventArgs args)
        {
            if (null == ClientCertificate)
            {
                return;
            }

            var ReqM = args.RequestMessage as System.Data.Services.Client.HttpWebRequestMessage;

            if (null == ReqM)
            {
                return;
            }

            //ReqM.Credentials = new System.Net.NetworkCredential("Administrator2", "SecurePassword2");
            //ReqM.HttpWebRequest.Credentials = new System.Net.NetworkCredential("Administrator3", "SecurePassword3");

            ReqM.HttpWebRequest.ClientCertificates.Add(ClientCertificate);
        }
Esempio n. 15
0
 private void AuthenticateRequest(object sender, SendingRequest2EventArgs e)
 {
     e.RequestMessage.SetHeader(
         OAuthHelper.OAuthHeader,
         this.OAuthHelper.GetAuthenticationHeader());
 }
Esempio n. 16
0
 private void Container_SendingRequest2(object sender, SendingRequest2EventArgs e)
 {
     Console.WriteLine("\t{0} {1}", e.RequestMessage.Method, e.RequestMessage.Url.ToString());
 }
Esempio n. 17
0
 /// <summary>
 /// Adds the request version.
 /// </summary>
 /// <param name="sender">The sender.</param>
 /// <param name="e">The <see cref="System.Data.Services.Client.SendingRequestEventArgs"/> instance containing the event data.</param>
 private void AddClientRequestId(object sender, SendingRequest2EventArgs e)
 {
     e.RequestMessage.SetHeader(XMsClientRequestId, _requestId.ToString());
 }
Esempio n. 18
0
 private void OdataClientOnSendingRequest2(object sender, SendingRequest2EventArgs sendingRequest2EventArgs)
 {
     ((HttpWebRequestMessage)sendingRequest2EventArgs.RequestMessage).HttpWebRequest.ClientCertificates.Add(this.certificate);
 }
Esempio n. 19
0
 private static void Container_SendingRequest2(object sender, SendingRequest2EventArgs e)
 {
     Console.WriteLine("{0} {1}", e.RequestMessage.Method, e.RequestMessage.Url);
 }
Esempio n. 20
0
 public static void OnSendingRequest(object sender, SendingRequest2EventArgs e)
 {
     // Add the cookie to the cookie header to all requests
     e.RequestMessage.SetHeader(HttpRequestHeader.Cookie.ToString(), cookies);
 }
Esempio n. 21
0
 /// <summary>
 /// Adds the request version.
 /// </summary>
 /// <param name="sender">The sender.</param>
 /// <param name="e">The <see cref="System.Data.Services.Client.SendingRequestEventArgs"/> instance containing the event data.</param>
 private void AddRequestVersion(object sender, SendingRequest2EventArgs e)
 {
     e.RequestMessage.SetHeader(_xMsVersion, this._serviceVersion.ToString());
 }
        /// <summary>
        /// Loads the metadata and converts it into an EdmModel that is then used by a dataservice context
        /// This allows the user to use the DataServiceContext directly without having to manually pass an IEdmModel in the Format
        /// </summary>
        /// <returns>A service model to be used in format tracking</returns>
        internal IEdmModel LoadServiceModelFromNetwork()
        {
            DataServiceClientRequestMessage httpRequest;
            BuildingRequestEventArgs        requestEventArgs = null;

            // test hook for injecting a network request to use instead of the default
            if (InjectMetadataHttpNetworkRequest != null)
            {
                httpRequest = InjectMetadataHttpNetworkRequest();
            }
            else
            {
                requestEventArgs = new BuildingRequestEventArgs(
                    "GET",
                    context.GetMetadataUri(),
                    null,
                    null,
                    context.HttpStack);

                // fire the right events if they exist to allow user to modify the request
                if (context.HasBuildingRequestEventHandlers)
                {
                    requestEventArgs = context.CreateRequestArgsAndFireBuildingRequest(
                        requestEventArgs.Method,
                        requestEventArgs.RequestUri,
                        requestEventArgs.HeaderCollection,
                        requestEventArgs.ClientHttpStack,
                        requestEventArgs.Descriptor);
                }

                DataServiceClientRequestMessageArgs args = new DataServiceClientRequestMessageArgs(
                    requestEventArgs.Method,
                    requestEventArgs.RequestUri,
                    context.UseDefaultCredentials,
                    context.UsePostTunneling,
                    requestEventArgs.Headers);

                httpRequest = new HttpClientRequestMessage(args);
            }

            Descriptor descriptor = requestEventArgs != null ? requestEventArgs.Descriptor : null;

            // fire the right events if they exist
            if (context.HasSendingRequest2EventHandlers)
            {
                SendingRequest2EventArgs eventArgs = new SendingRequest2EventArgs(
                    httpRequest,
                    descriptor,
                    false);

                context.FireSendingRequest2(eventArgs);
            }

            Task <IODataResponseMessage> asyncResponse =
                Task <IODataResponseMessage> .Factory.FromAsync(httpRequest.BeginGetResponse, httpRequest.EndGetResponse,
                                                                httpRequest);

            IODataResponseMessage response = asyncResponse.GetAwaiter().GetResult();

            ReceivingResponseEventArgs responseEvent = new ReceivingResponseEventArgs(response, descriptor);

            context.FireReceivingResponseEvent(responseEvent);

            using (StreamReader streamReader = new StreamReader(response.GetStream()))
                using (XmlReader xmlReader = XmlReader.Create(streamReader))
                {
                    return(CsdlReader.Parse(xmlReader));
                }
        }
Esempio n. 23
0
 public static void InsertHeaders(object sender, SendingRequest2EventArgs e, string email)
 {
     e.RequestMessage.SetHeader("X-AnchorMailbox", email);
     e.RequestMessage.SetHeader("Prefer", "outlook.timezone=\"" + System.TimeZoneInfo.Local.Id + "\"");
 }
Esempio n. 24
0
 private void InsertXAnchorMailboxHeader(object sender, SendingRequest2EventArgs e, string email)
 {
     e.RequestMessage.SetHeader("X-AnchorMailbox", email);
 }
Esempio n. 25
0
 private void SendHeaderAuth(object sender, SendingRequest2EventArgs e)
 {
     e.RequestMessage.SetHeader("Authorization", "Bearer " + _token);
 }
Esempio n. 26
0
            internal void VerifySendingRequest(object sender, SendingRequest2EventArgs args)
            {
                this.assert.AreSame(this.expectedContext, sender, "Sending request fired by unexpected context");
                this.assert.IsNotNull(args, "args");

                this.httpTracker.TryCompleteCurrentRequest(this.expectedContext);

                this.assert.IsNotNull(args.RequestMessage, "args.RequestMessage");

                if (args.RequestMessage.Method == "GET")
                {
                    // Special case: GetReadStream gives a StreamDescriptor
                    if (!(args.Descriptor is StreamDescriptor))
                    {
                        this.assert.IsNull(args.Descriptor, "Descriptor should be null for get requests, except GetReadStream");
                    }
                }
                else
                {
                    // Special case : The batch request itself has the method POST yet there's no descriptor for it.
                    if (args.RequestMessage.Url.OriginalString.Contains("/" + Endpoints.Batch))
                    {
                        this.assert.IsNull(args.Descriptor, "Descriptor should be null for batch requests");
                    }
                    else if (this.IsInvokeOperationRequest(args.RequestMessage.Url.OriginalString))
                    {
                        this.assert.IsNull(args.Descriptor, "Descriptor should be null for action or WebInvoke requests");
                    }
                    else
                    {
                        this.assert.IsNotNull(args.Descriptor, "Descriptor should not be null for CUD requests");
                    }
                }

                if (args.IsBatchPart)
                {
                    var requestMessage = args.RequestMessage;
                    this.assert.IsNotNull(requestMessage, "RequestMessage should be of type IODataRequestMessage");
                }
                else
                {
                    if (args.RequestMessage.GetType().Name != "InternalODataRequestMessage")
                    {
                        var requestMessage = args.RequestMessage as HttpWebRequestMessage;

                        this.assert.IsNotNull(requestMessage, "RequestMessage should be of type HttpWebRequestMessage");

                        var httpWebRequest = requestMessage.HttpWebRequest as HttpWebRequest;
                        this.assert.IsNotNull(httpWebRequest, "RequestMessage.HttpWebRequest should be of type HttpWebRequest");

#if WIN8
                        if (this.expectedContext.Credentials != null)
                        {
                            this.assert.AreSame(this.expectedContext.Credentials, httpWebRequest.Credentials, "Request credentials were not set");
                        }
#else
                        this.assert.AreSame(this.expectedContext.Credentials, httpWebRequest.Credentials, "Request credentials were not set");
#endif

                        this.assert.IsNull(this.uriFromEvent, "Last uri unexpectedly not null. Test hook did not fire");
                        this.assert.AreEqual(requestMessage.Url, httpWebRequest.RequestUri, "Request Uri does not match RequestUri from HttpWebRequest");
                        this.uriFromEvent = httpWebRequest.RequestUri;

                        this.assert.IsNull(this.methodFromEvent, "Last method unexpectedly not null. Test hook did not fire");
                        this.methodFromEvent = httpWebRequest.Method;

                        this.assert.IsNull(this.originalHeadersFromEvent, "Last headers unexpectedly not null. Test hook did not fire");
                        this.assert.AreEqual(requestMessage.Headers.Count(), httpWebRequest.Headers.Count, "Request Headers count does not match Headers count from HttpWebRequest");

                        this.originalHeadersFromEvent = requestMessage.Headers.ToDictionary(k => k.Key, v => v.Value);
                        this.expectedHeaders          = new Dictionary <string, string>(this.originalHeadersFromEvent);

                        if (this.originalHeadersFromEvent.ContainsKey("X-HTTP-Method"))
                        {
                            this.methodFromEvent = this.originalHeadersFromEvent["X-HTTP-Method"];
                        }

                        if (this.callback != null)
                        {
                            this.callback(args, this.expectedHeaders);
                        }

                        this.finalHeadersFromEvent = requestMessage.Headers.ToDictionary(k => k.Key, v => v.Value);
                    }
                    else
                    {
                        this.uriFromEvent             = args.RequestMessage.Url;
                        this.methodFromEvent          = args.RequestMessage.Method;
                        this.originalHeadersFromEvent = args.RequestMessage.Headers.ToDictionary(k => k.Key, v => v.Value);

                        if (this.originalHeadersFromEvent.ContainsKey("X-HTTP-Method"))
                        {
                            this.methodFromEvent = this.originalHeadersFromEvent["X-HTTP-Method"];
                        }

                        this.expectedHeaders = new Dictionary <string, string>(this.originalHeadersFromEvent);

                        if (this.callback != null)
                        {
                            this.callback(args, this.expectedHeaders);
                        }

                        this.finalHeadersFromEvent = args.RequestMessage.Headers.ToDictionary(k => k.Key, v => v.Value);
                    }
                }
            }
 public void SetAuthorizationToken(object sender, SendingRequest2EventArgs e)
 {
     e.RequestMessage.SetHeader("Authorization", SecurityHelper.AccessToken);
 }
Esempio n. 28
0
 private static void  SetInvalidDataServiceVersion(object obj, SendingRequest2EventArgs args)
 {
     args.RequestMessage.SetHeader("DataServiceVersion", "99.99;NetFx");
 }
Esempio n. 29
0
 private void Client_SendingRequest2(object sender, SendingRequest2EventArgs e)
 {
     e.RequestMessage.SetHeader("Authorization", $"Bearer {authToken}");
 }
Esempio n. 30
0
 private static void  SetInvalidETag(object obj, SendingRequest2EventArgs args)
 {
     args.RequestMessage.SetHeader("If-Match", "W/\"var1\"");
 }