Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions BoxContentSDK/BoxContentSDK/Clients/BOXContentClient+User.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,15 @@
*/
- (BOXUserRequest *)currentUserRequest;

/**
* Generate a request to retrieve the user by user ID.
*
* @param userID The ID of the user whose avatar is being fetched.
*
* @return A request that can be customized and then executed.
*/
- (BOXUserRequest *)userInfoRequestWithID:(NSString *)userID;

/**
* Generate a request to retrieve the avatar of a user.
*
Expand Down
8 changes: 8 additions & 0 deletions BoxContentSDK/BoxContentSDK/Clients/BOXContentClient+User.m
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,14 @@ - (BOXUserRequest *)currentUserRequest
return request;
}

- (BOXUserRequest *)userInfoRequestWithID:(NSString *)userID
{
BOXUserRequest *request = [[BOXUserRequest alloc] initWithUserID:userID];
[self prepareRequest:request];

return request;
}

- (BOXUserAvatarRequest *)userAvatarRequestWithID:(NSString *)userID
type:(BOXAvatarType)type
{
Expand Down
4 changes: 4 additions & 0 deletions BoxContentSDK/BoxContentSDK/Requests/BOXUserRequest.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@
*/
@property (nonatomic, readwrite, assign) BOOL requestAllUserFields;

@property (nonatomic, readonly, strong) NSString *userID;
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we leave a comment that this property only reports a value if a specific user is requested, and that in the default case where no user is specified the current user is used (but this value will be nil or an empty string)?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point, for a manual construction of the request, setting the userID will have the same impact as the initWithUserID


- (instancetype)initWithUserID:(NSString *)userID;

//Perform API request and any cache update only if refreshBlock is not nil
- (void)performRequestWithCompletion:(BOXUserBlock)completionBlock;

Expand Down
16 changes: 15 additions & 1 deletion BoxContentSDK/BoxContentSDK/Requests/BOXUserRequest.m
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,24 @@

@implementation BOXUserRequest

- (instancetype)initWithUserID:(NSString *)userID
{
if (self = [super init]) {
_userID = userID;
}

return self;
}

- (BOXAPIOperation *)createOperation
{
NSString *currentUserID = @"me";

if ([self.userID length] > 0) {
currentUserID = self.userID;
}
NSURL *URL = [self URLWithResource:BOXAPIResourceUsers
ID:@"me"
ID:currentUserID
subresource:nil
subID:nil];

Expand Down
11 changes: 11 additions & 0 deletions BoxContentSDK/BoxContentSDKTests/BOXUserRequestTests.m
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,17 @@ - (void)test_that_basic_request_has_expected_URLRequest
XCTAssertEqualObjects(@"GET", URLRequest.HTTPMethod);
}

- (void)test_that_basic_request_for_user_by_id_has_expected_URLRequest
{
BOXUserRequest *userRequest = [[BOXUserRequest alloc] initWithUserID:@"12345678"];
NSURLRequest *URLRequest = userRequest.urlRequest;

NSURL *expectedURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@/users/12345678", [BOXContentClient APIBaseURL]]];

XCTAssertEqualObjects(expectedURL, URLRequest.URL);
XCTAssertEqualObjects(@"GET", URLRequest.HTTPMethod);
}

- (void)test_that_request_with_all_fields_has_expected_URLRequest_query_params
{
BOXUserRequest *userRequest = [[BOXUserRequest alloc] init];
Expand Down