Exemple #1
0
        public bool ShareFileWithRoom(string roomName, string fileFullPath, string message = null)
        {
            using (JsonSerializerConfigScope())
            {
                var request = new ShareFileWithRoomRequest
                {
                    File    = fileFullPath,
                    Message = message
                };

                var result = false;
                try
                {
                    var statusCode = HipchatEndpoints.ShareFileWithRoomEndpointFormat
                                     .Fmt(roomName)
                                     .AddHipchatAuthentication(_authToken)
                                     .PostHttpContentToUrl(request.EncodeMultipartRelatedHipchatRequest());

                    if (statusCode.HasValue && statusCode.Value == HttpStatusCode.NoContent)
                    {
                        result = true;
                    }
                }
                catch (Exception exception)
                {
                    if (exception is WebException)
                    {
                        throw ExceptionHelpers.WebExceptionHelper(exception as WebException, "share_file_with_room");
                    }

                    throw ExceptionHelpers.GeneralExceptionHelper(exception, "ShareFileWithRoom");
                }
                return(result);
            }
        }
Exemple #2
0
        public static HttpContent EncodeMultipartRelatedHipchatRequest(this ShareFileWithRoomRequest request)
        {
            var fi       = new FileInfo(request.File);
            var fileName = fi.Name;

            byte[] fileContents = File.ReadAllBytes(fi.FullName);

            var multiPartContent = new MultipartContent("related");

            if (!string.IsNullOrEmpty(request.Message))
            {
                var stringContent = new StringContent("{" + "message".EncodeJson() + ": " + request.Message.EncodeJson() + "}",
                                                      Encoding.UTF8, "application/json");
                stringContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
                {
                    Name = "metadata",
                };
                multiPartContent.Add(stringContent);
            }

            var byteArrayContent = new ByteArrayContent(fileContents);

            byteArrayContent.Headers.Add("Content-Type", "application/octet-stream");
            byteArrayContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
            {
                Name     = "file",
                FileName = Path.GetFileName(fileName)
            };
            multiPartContent.Add(byteArrayContent);
            return(multiPartContent);
        }