Exemplo n.º 1
0
 /// <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 );
 }
Exemplo n.º 2
0
 /// <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 );
 }
Exemplo n.º 3
0
        /// <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;
        }