/// <summary> /// See <a href="https://docs.microsoft.com/en-us/rest/api/vsts/wit/attachments/create">here</a> /// </summary> /// <param name="surface">ISurface to attach</param> /// <returns></returns> public async Task <CreateAttachmentResult> CreateAttachment(ISurface surface) { _tfsHttpBehaviour.MakeCurrent(); var client = HttpClientFactory.Create(_tfsConfiguration.TfsUri).SetBasicAuthorization("", _tfsConfiguration.ApiKey); Uri apiUri = _tfsConfiguration.TfsUri.AppendSegments("_apis").ExtendQuery("api-version", "3.0"); var filename = surface.GenerateFilename(_coreConfiguration, _tfsConfiguration); var attachmentUri = apiUri.AppendSegments("wit", "attachments").ExtendQuery("fileName", filename); using (var imageStream = new MemoryStream()) { surface.WriteToStream(imageStream, _coreConfiguration, _tfsConfiguration); imageStream.Position = 0; using (var content = new StreamContent(imageStream)) { content.SetContentType("application/octet-stream"); var createAttachmentresult = await client.PostAsync <HttpResponse <CreateAttachmentResult, string> >(attachmentUri, content).ConfigureAwait(false); if (createAttachmentresult.HasError) { throw new Exception(createAttachmentresult.ErrorResponse); } return(createAttachmentresult.Response); } } }