示例#1
0
        /// <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);
                }
            }
        }