Rewrite /avatar/{id} as REST API /accounts/{id}/avatar
Implement avatar lookup as a REST API. GET on the /avatar URL will return the avatar as supplied by the avatar plugin. Change-Id: Ieb581558a8b8f7863dcb43ecea39b016dbdc696e
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
// Copyright (C) 2013 The Android Open Source Project
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.google.gerrit.server.account;
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.gerrit.extensions.registration.DynamicItem;
|
||||
import com.google.gerrit.extensions.restapi.ResourceNotFoundException;
|
||||
import com.google.gerrit.extensions.restapi.Response;
|
||||
import com.google.gerrit.extensions.restapi.RestReadView;
|
||||
import com.google.gerrit.server.avatar.AvatarProvider;
|
||||
import com.google.inject.Inject;
|
||||
|
||||
import org.kohsuke.args4j.Option;
|
||||
|
||||
class GetAvatar implements RestReadView<AccountResource> {
|
||||
private final DynamicItem<AvatarProvider> avatarProvider;
|
||||
|
||||
@Option(name = "--size", usage = "size in pixels (height and width)")
|
||||
private int size;
|
||||
|
||||
@Inject
|
||||
GetAvatar(DynamicItem<AvatarProvider> avatarProvider) {
|
||||
this.avatarProvider = avatarProvider;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Response.Redirect apply(AccountResource rsrc)
|
||||
throws ResourceNotFoundException {
|
||||
AvatarProvider impl = avatarProvider.get();
|
||||
if (impl == null) {
|
||||
throw new ResourceNotFoundException();
|
||||
}
|
||||
|
||||
String url = impl.getUrl(rsrc.getUser().getAccount(), size);
|
||||
if (Strings.isNullOrEmpty(url)) {
|
||||
throw new ResourceNotFoundException();
|
||||
} else {
|
||||
return Response.redirect(url);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -29,6 +29,7 @@ public class Module extends RestApiModule {
|
||||
DynamicMap.mapOf(binder(), ACCOUNT_KIND);
|
||||
DynamicMap.mapOf(binder(), CAPABILITY_KIND);
|
||||
|
||||
get(ACCOUNT_KIND, "avatar").to(GetAvatar.class);
|
||||
child(ACCOUNT_KIND, "capabilities").to(Capabilities.class);
|
||||
get(ACCOUNT_KIND, "groups").to(GetGroups.class);
|
||||
get(CAPABILITY_KIND).to(GetCapabilities.CheckOne.class);
|
||||
|
||||
Reference in New Issue
Block a user