protected override Task<HttpResponseMessage> SendAsync( HttpRequestMessage request, CancellationToken cancellationToken) { if (Mode == HttpRecorderMode.Playback) { // Will throw KeyNotFoundException if the request is not recorded return TaskEx.FromResult(Records[matcher.GetMatchingKey(request)].Dequeue().GetResponse()); } else { return base.SendAsync(request, cancellationToken).ContinueWith<HttpResponseMessage>(response => { HttpResponseMessage result = response.Result; if (Mode == HttpRecorderMode.Record) { RecordEntry recordEntry = new RecordEntry(result); Records.Enqueue(new RecordEntry(result)); sessionRecords.Add(recordEntry); } return result; }); } }
public string GetMatchingKey(RecordEntry recordEntry) { return GetMatchingKey(recordEntry.RequestMethod, recordEntry.RequestUri.ToString()); }
public void InjectRecordEntry(RecordEntry record) { if (Mode == HttpRecorderMode.Playback) { Records.Enqueue(record); } }