/// <summary> /// Method invoked by the library in order to authenticate for a resource. /// Should not be called directly by consumer code. /// </summary> /// <param name="client">SteamClient instance to authenticate.</param> /// <param name="request">Request requiring authentication.</param> public void Authenticate( SteamClient client, ISteamRequest request ) { request.AddParameter( "key", ApiKey, ParameterType.QueryString ); }
/// <summary> /// Method invoked by the library in order to authenticate for a resource. /// Should not be called directly by consumer code. /// </summary> /// <param name="client">SteamClient instance to authenticate.</param> /// <param name="request">Request requiring authentication.</param> public void Authenticate( SteamClient client, ISteamRequest request ) { if( AccessToken != null ) request.AddParameter( "access_token", AccessToken, ParameterType.GetOrPost ); }
/// <summary> /// Constructs the <see cref="HttpWebRequest" /> object which will be used to execute the web request. /// </summary> /// <param name="request">Request for execution.</param> protected HttpRequestMessage BuildHttpRequest( ISteamRequest request ) { // Add any Default client parameters (if it exists in the request, the request wins) foreach( var param in DefaultParameters ) { if( !request.Parameters.Any( p => p.Name == param.Name && p.Type == param.Type ) ) request.AddParameter( param ); } HttpRequestMessage httpRequest = new HttpRequestMessage( request.Method, BuildUri( request ) ); // HEADERS // -- Add UserAgent header, if it does not already exist in both the request and the standard request message (shouldn't overwrite valuable system/platform data) if( !request.Parameters.Any( p => p.Name == "User-Agent" && p.Type == ParameterType.HttpHeader ) && !httpRequest.Headers.Any( h => h.Key == "User-Agent" ) ) request.Parameters.Add( new SteamRequestParameter { Name = "User-Agent", Value = ( ( DefaultUserAgent == null ) ? "SteamSharp/" + AssemblyVersion : DefaultUserAgent ), Type = ParameterType.HttpHeader } ); // -- Currently we only accept and deserialize JSON responses request.Parameters.Add( new SteamRequestParameter { Name = "Accept", Value = "application/json", Type = ParameterType.HttpHeader } ); IEnumerable<SteamRequestParameter> headers = request.Parameters.Where( p => p.Type == ParameterType.HttpHeader ); foreach( var header in headers ) { if( httpRequest.Headers.Contains( header.Name ) ) httpRequest.Headers.Remove( header.Name ); httpRequest.Headers.Add( header.Name, header.Value.ToString() ); } // BODY -- Only evaluate if post if( request.Method == HttpMethod.Post ) { var body = request.Parameters.FirstOrDefault( p => p.Type == ParameterType.RequestBody ); HttpContent content; switch( request.DataFormat ) { case PostDataFormat.Json: content = new StringContent( SerializeBodyWithParameters( request, body, PostDataFormat.Json ) ); content.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse( "application/json" ); break; case PostDataFormat.FormUrlEncoded: content = new StringContent( SerializeBodyWithParameters( request, body, PostDataFormat.FormUrlEncoded ) ); content.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse( "application/x-www-form-urlencoded" ); break; default: content = new StringContent( ( ( body != null ) ? body.Value.ToString() : String.Empty ) ); break; } httpRequest.Content = content; } return httpRequest; }