/// <summary> /// Enhance a request with auth token. /// </summary> /// <param name="context">The data service context for the request.</param> /// <param name="request">The request.</param> private static void EnhanceRequest(ServerDataServiceSqlAuth context, HttpWebRequest request) { lock (context.instanceSyncObject) { foreach (KeyValuePair <string, string> entry in context.supplementalHeaderEntries) { request.Headers[entry.Key] = entry.Value; } } // Add the UserAgent string request.UserAgent = ApiConstants.UserAgentHeaderValue; // Add the access token header request.Headers[DataServiceConstants.AccessTokenHeader] = context.accessToken.AccessToken; // Add the access token cookie request.CookieContainer = new CookieContainer(); request.CookieContainer.Add(context.accessToken.AccessCookie); // Add the session activity Id request.Headers[DataServiceConstants.SessionTraceActivityHeader] = context.sessionActivityId.ToString(); // Add the client tracing Ids request.Headers[Constants.ClientSessionIdHeaderName] = context.ClientSessionId; request.Headers[Constants.ClientRequestIdHeaderName] = context.ClientRequestId; }
/// <summary> /// Gets a sql auth connection context. /// </summary> /// <param name="cmdlet">The cmdlet requesting the context</param> /// <param name="serverName">The name of the server to connect to</param> /// <param name="manageUrl">The manage url of the server</param> /// <param name="credentials">The credentials to connect to the server</param> /// <param name="sessionActivityId">The session activity ID</param> /// <param name="managementServiceUri">The URI for management service</param> /// <returns>The connection context</returns> public static IServerDataServiceContext GetContext( PSCmdlet cmdlet, string serverName, Uri manageUrl, SqlAuthenticationCredentials credentials, Guid sessionActivityId, Uri managementServiceUri) { Version version; // If a version was specified (by tests) us it. if (sqlVersion == SqlVersion.v2) { version = new Version(11, 0); } else if (sqlVersion == SqlVersion.v12) { version = new Version(12, 0); } else // If no version specified, determine the version by querying the server. { version = GetVersion(manageUrl, credentials); } sqlVersion = SqlVersion.None; IServerDataServiceContext context = null; if (version.Major >= 12) { context = new TSqlConnectionContext( sessionActivityId, manageUrl.Host, credentials, serverName); } else { context = ServerDataServiceSqlAuth.Create( managementServiceUri, sessionActivityId, credentials, serverName); // Retrieve $metadata to verify model version compatibility XDocument metadata = ((ServerDataServiceSqlAuth)context).RetrieveMetadata(); XDocument filteredMetadata = DataConnectionUtility.FilterMetadataDocument(metadata); string metadataHash = DataConnectionUtility.GetDocumentHash(filteredMetadata); if (!((ServerDataServiceSqlAuth)context).metadataHashes.Any(knownHash => metadataHash == knownHash)) { cmdlet.WriteWarning(Resources.WarningModelOutOfDate); } ((ServerDataServiceSqlAuth)context).MergeOption = MergeOption.PreserveChanges; } return(context); }
/// <summary> /// Enhance a request with auth token. /// </summary> /// <param name="context">The data service context for the request.</param> /// <param name="request">The request.</param> private static void EnhanceRequest(ServerDataServiceSqlAuth context, HttpWebRequest request) { lock (context.instanceSyncObject) { foreach (KeyValuePair<string, string> entry in context.supplementalHeaderEntries) { request.Headers[entry.Key] = entry.Value; } } // Add the UserAgent string request.UserAgent = ApiConstants.UserAgentHeaderValue; // Add the access token header request.Headers[DataServiceConstants.AccessTokenHeader] = context.accessToken.AccessToken; // Add the access token cookie request.CookieContainer = new CookieContainer(); request.CookieContainer.Add(context.accessToken.AccessCookie); // Add the session activity Id request.Headers[DataServiceConstants.SessionTraceActivityHeader] = context.sessionActivityId.ToString(); // Add the client tracing Ids request.Headers[Constants.ClientSessionIdHeaderName] = context.ClientSessionId; request.Headers[Constants.ClientRequestIdHeaderName] = context.ClientRequestId; }