Fixed uploaded bytes value in progress callback method: Value now reflects the size of actual uploaded data rather than the base64 encoded size
git-svn-id: https://svn.apache.org/repos/asf/chemistry/objectivecmis/trunk@1542005 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/ObjectiveCMIS.xcodeproj/project.pbxproj b/ObjectiveCMIS.xcodeproj/project.pbxproj
index 5b3bfdc..24d0667 100644
--- a/ObjectiveCMIS.xcodeproj/project.pbxproj
+++ b/ObjectiveCMIS.xcodeproj/project.pbxproj
@@ -866,7 +866,7 @@
8280729A15153DE800EF635C /* Project object */ = {
isa = PBXProject;
attributes = {
- LastUpgradeCheck = 0460;
+ LastUpgradeCheck = 0500;
ORGANIZATIONNAME = "Apache Software Foundation";
};
buildConfigurationList = 8280729D15153DE800EF635C /* Build configuration list for PBXProject "ObjectiveCMIS" */;
@@ -1091,9 +1091,10 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
- ARCHS = "$(ARCHS_STANDARD_32_BIT)";
CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
@@ -1107,10 +1108,14 @@
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
+ GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 5.1;
+ ONLY_ACTIVE_ARCH = YES;
"OTHER_CFLAGS[arch=*]" = "-DDEBUG";
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
@@ -1121,17 +1126,21 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
- ARCHS = "$(ARCHS_STANDARD_32_BIT)";
CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
+ GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 5.1;
SDKROOT = iphoneos;
diff --git a/ObjectiveCMIS/Utils/CMISHttpUploadRequest.m b/ObjectiveCMIS/Utils/CMISHttpUploadRequest.m
index 182889a..5e5d285 100644
--- a/ObjectiveCMIS/Utils/CMISHttpUploadRequest.m
+++ b/ObjectiveCMIS/Utils/CMISHttpUploadRequest.m
@@ -236,6 +236,14 @@
totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite
{
if (self.progressBlock) {
+ if (self.base64Encoding) {
+ // Show the actual transmitted raw data size to the user, not the base64 encoded size
+ totalBytesWritten = [CMISHttpUploadRequest rawEncodedLength:totalBytesWritten];
+ if (totalBytesWritten > totalBytesExpectedToWrite) {
+ totalBytesWritten = totalBytesExpectedToWrite;
+ }
+ }
+
if (self.bytesExpected == 0) {
self.progressBlock((NSUInteger)totalBytesWritten, (NSUInteger)totalBytesExpectedToWrite);
} else {
@@ -421,7 +429,7 @@
NSString *end = [NSString stringWithFormat:@"%@%@", xmlContentEnd, xmlProperties];
self.streamEndData = [end dataUsingEncoding:NSUTF8StringEncoding];
- NSUInteger encodedLength = [CMISHttpUploadRequest base64EncodedLength:self.bytesExpected];
+ NSUInteger encodedLength = [CMISHttpUploadRequest base64EncodedLength:(NSUInteger)self.bytesExpected];
encodedLength += start.length;
encodedLength += end.length;
self.encodedLength = encodedLength;
@@ -458,6 +466,17 @@
return 4 * adjustedThirdPartOfSize;
}
++ (NSUInteger)rawEncodedLength:(NSUInteger)base64EncodedSize
+{
+ if (0 == base64EncodedSize)
+ {
+ return 0;
+ }
+ NSUInteger adjustedFourthPartOfSize = (base64EncodedSize / 4) + ( (0 == base64EncodedSize % 4 ) ? 0 : 1 );
+
+ return 3 * adjustedFourthPartOfSize;
+}
+
- (void)stopSendWithStatus:(NSString *)statusString
{
if (nil != statusString) {