Dmytro
Dmytro

Reputation: 1918

Box api edit file

I trying edit txt file in my iOS app using box-api-2.

I trying this code where filedata - NSData with NSString, that should replace file.

BoxFilesRequestBuilder *builder = [[BoxFilesRequestBuilder alloc] init];
builder.name = self.previewFile.name;
builder.parentID = self.folderID;
NSInputStream *inputStream = [NSInputStream inputStreamWithData:fileData];
long long contentLength = [fileData length];
[[BoxSDK sharedSDK].filesManager overwriteFileWithID:self.previewFile.modelID inputStream:inputStream contentLength:contentLength requestBuilder:builder success:^(BoxFile *file) {
    NSLog(@"Yeahh");
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, NSDictionary *JSONDictionary) {
    NSLog(@"%@", [error description]);
}];
RELEASE_SAFELY(builder); 

But I got an error:

 Error Domain=com.box.sdk.errordomain Code=405 "The operation couldn’t be completed. (com.box.sdk.errordomain error 405.)" UserInfo=0x1e11b5a0 {com.box.sdk.jsonerrorresponse=<CFBasicHash 0x1e2e0460 [0x3c6e6100]>{type = immutable dict, count = 6,
entries =>
    0 : <CFString 0x1e04b520 [0x3c6e6100]>{contents = "type"} = <CFString 0x1e2e5340 [0x3c6e6100]>{contents = "error"}
    1 : <CFString 0x3c6cfc94 [0x3c6e6100]>{contents = "status"} = <CFNumber 0x1e289df0 [0x3c6e6100]>{value = +405, type = kCFNumberSInt64Type}
    2 : <CFString 0x1e2e2ea0 [0x3c6e6100]>{contents = "code"} = <CFString 0x1e2c1620 [0x3c6e6100]>{contents = "method_not_allowed"}
    3 : <CFString 0x1e28b140 [0x3c6e6100]>{contents = "help_url"} = <CFString 0x1e2defc0 [0x3c6e6100]>{contents = "http://developers.box.com/docs/#errors"}
    4 : <CFString 0x1e2e2dd0 [0x3c6e6100]>{contents = "request_id"} = <CFString 0x1e2e2df0 [0x3c6e6100]>{contents = "417724859526e752ff250a"}
    5 : <CFString 0x1e28b160 [0x3c6e6100]>{contents = "message"} = <CFString 0x1e2e2db0 [0x3c6e6100]>{contents = "Method Not Allowed"}
}

Upvotes: 0

Views: 572

Answers (1)

Ryan Lopopolo
Ryan Lopopolo

Reputation: 231

I'm the maintainer of the Box iOS SDK. I was able to reproduce this error in the case where builder.name (or builder) is nil. Are you sure that self.previewFile.name is set?

In any case, for overwrites, this shouldn't matter since the V2 API does not do renames on file overwrites (it only updates the content of the file).

Per http://developers.box.com/docs/#files-upload-a-new-version-of-a-file:

The filename on Box will remain the same as the previous version. To update the file’s name, use PUT /files/{id}

I've pushed a bugfix to GitHub that sets a default filename for the multipart upload if one is not present, which should allow the upload to go through. https://github.com/box/box-ios-sdk-v2/releases/tag/v1.1.2

New podspec is coming soon.

Upvotes: 1

Related Questions