/// <summary>
        /// Initializes a new instance of the <see cref="T:GetApiResult{T}"/> class.
        /// </summary>
        /// <param name="requestFactory">A factory for HTTP requests.</param>
        /// <param name="responseReader">An HTTP response reader.</param>
        /// <param name="endpoint">The endpoint.</param>
        /// <param name="responseVerifier">An optional response verifier.</param>
        /// <param name="payload">An optional request payload.</param>
        /// <param name="timeout">An optional timeout.</param>
        public GetApiResult(ICreatesHttpRequests requestFactory,
                            IReadsResponseBodies responseReader,
                            IEndpoint endpoint,
                            IVerifiesSuccessfulResponse responseVerifier = null,
                            object payload   = null,
                            TimeSpan?timeout = null)
        {
            if (responseReader == null)
            {
                throw new ArgumentNullException(nameof(responseReader));
            }
            if (requestFactory == null)
            {
                throw new ArgumentNullException(nameof(requestFactory));
            }
            if (endpoint == null)
            {
                throw new ArgumentNullException(nameof(endpoint));
            }

            this.requestFactory   = requestFactory;
            this.responseReader   = responseReader;
            this.responseVerifier = responseVerifier ?? new HttpResponseSuccessVerifier();
            this.endpoint         = endpoint;
            this.payload          = payload;
            this.timeout          = timeout;
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="T:CSF.Screenplay.WebApis.Services.JsonHttpRequestFactoryProxy"/> class.
 /// </summary>
 /// <param name="requestBodyFactory">Request body factory.</param>
 /// <param name="proxiedFactory">The proxied request factory.</param>
 public JsonHttpRequestFactory(ICreatesRequestBodies requestBodyFactory = null,
                               ICreatesHttpRequests proxiedFactory      = null)
 {
     this.requestBodyFactory = requestBodyFactory ?? new JsonHttpContentReaderWriter();
     this.proxiedFactory     = proxiedFactory ?? new HttpRequestFactory();
 }