public override async Task WriteResponseBodyAsync(OutputFormatterContext context)
        { 
            var reqServices = context.HttpContext.RequestServices;
            var multiContext = (MultiObjectResultContext)reqServices.GetService(typeof(MultiObjectResultContext));
            var jsonHelper = (IJsonHelper)reqServices.GetService(typeof(IJsonHelper));
            var content = new MultipartContent("json");
            var resultObject = context.Object;
            var resultObjectWasAdded = false;

            foreach (var entry in multiContext.AdditionalObjects)
            {
                object additional = resultObject;

                if (additional.GetType() != entry.Value.Item1)
                {
                    additional = reqServices.GetService(entry.Value.Item1);
                }
                else
                {
                    resultObjectWasAdded = true;
                }

                content.Add(ContentPart(jsonHelper, entry.Key, additional, entry.Value.Item2));
            }

            if (!resultObjectWasAdded)
            {
                content.Add(ContentPart(jsonHelper, resultObject.GetType().Name, resultObject, false));
            }

            var response = context.HttpContext.Response;
            response.ContentType = content.Headers.ContentType.ToString();
            await content.CopyToAsync(response.Body);
        }
        public void AddAttachment(long workspaceId, long Id, string fileName, string description, System.IO.Stream fileStream)
        {
            string url              = String.Format("{0}/api/rest/v1/workspaces/{1}/items/{2}/attachments", baseUrl, workspaceId, Id);
            var    request          = new System.Net.Http.HttpRequestMessage(System.Net.Http.HttpMethod.Post, url);
            var    scriptSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();

            var handler = new System.Net.Http.HttpClientHandler();

            handler.CookieContainer = _cookieJar;
            var ressourceName = fileName + DateTime.Now.ToString();

            var httpContent1 = new System.Net.Http.StringContent(scriptSerializer.Serialize(new newAttachment()
            {
                fileName = fileName, description = description, resourceName = fileName
            }));

            httpContent1.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
            byte[] bytes = new byte[fileStream.Length];
            fileStream.Read(bytes, 0, (int)fileStream.Length);
            var memoryStream = new System.IO.MemoryStream(bytes);

            var httpContent2 = new System.Net.Http.StreamContent(memoryStream);

            httpContent2.Headers.ContentDisposition          = new System.Net.Http.Headers.ContentDispositionHeaderValue("*");
            httpContent2.Headers.ContentDisposition.FileName = fileName;
            httpContent2.Headers.ContentDisposition.Size     = memoryStream.Length;
            var multipart = new System.Net.Http.MultipartContent("mixed");

            multipart.Add(httpContent1);
            multipart.Add(httpContent2);
            request.Content = multipart;
            var httpClient = new System.Net.Http.HttpClient(handler);

            httpClient.BaseAddress = new Uri(url);
            var result1 = httpClient.SendAsync(request).Result;
        }