package com.github.mhendred.face4j; import java.io.File; import java.io.Serializable; import java.util.LinkedList; import java.util.List; import com.github.mhendred.face4j.exception.FaceClientException; import com.github.mhendred.face4j.exception.FaceServerException; import com.github.mhendred.face4j.model.Namespace; import com.github.mhendred.face4j.model.Photo; import com.github.mhendred.face4j.model.RemovedTag; import com.github.mhendred.face4j.model.SavedTag; import com.github.mhendred.face4j.model.UserStatus; import com.github.mhendred.face4j.response.GroupResponse; import com.github.mhendred.face4j.response.LimitsResponse; import com.github.mhendred.face4j.response.TrainResponse; import com.github.mhendred.face4j.response.UsersResponse; public class AsyncFaceClient implements Serializable { private final List<RequestListener> listeners; private final FaceClient faceClient; public AsyncFaceClient(FaceClient faceClient) { this.faceClient = faceClient; this.listeners = new LinkedList<RequestListener>(); } public AsyncFaceClient(String apiKey, String apiSecret) { this(new DefaultFaceClient(apiKey, apiSecret)); } public void addTag(final String url, final float x, final float y, final int width, final int height, final String uid, final String label, final String taggerId) { new Thread() { public void run() { try { faceClient.addTag(url, x, y, width, height, uid, label, taggerId); for (RequestListener listener : listeners) { listener.onAddTag(); } } catch (FaceServerException fse) { notifyListeners(fse, FaceApi.ADD_TAG); } catch (FaceClientException fce) { notifyListeners(fce, FaceApi.ADD_TAG); } } }.start(); } public void detect(final File imageFile) { new Thread() { public void run() { try { Photo photo = faceClient.detect(imageFile); for (RequestListener listener : listeners) { listener.onDetect(photo); } } catch (FaceServerException fse) { notifyListeners(fse, FaceApi.DETECT); } catch (FaceClientException fce) { notifyListeners(fce, FaceApi.DETECT); } } }.start(); } public void detect(final String urls) { new Thread() { public void run() { try { List<Photo> photos = faceClient.detect(urls); for (RequestListener listener : listeners) { listener.onDetect(photos); } } catch (FaceServerException fse) { notifyListeners(fse, FaceApi.DETECT); } catch (FaceClientException fce) { notifyListeners(fce, FaceApi.DETECT); } } }.start(); } public void facebookGet(final String uids) { new Thread() { public void run() { try { List<Photo> photos = faceClient.facebookGet(uids); for (RequestListener listener : listeners) { listener.onFacebookGet(photos); } } catch (FaceServerException fse) { notifyListeners(fse, FaceApi.FACEBOOK); } catch (FaceClientException fce) { notifyListeners(fce, FaceApi.FACEBOOK); } } }.start(); } public void getLimits() { new Thread() { public void run() { try { LimitsResponse response = faceClient.getLimits(); for (RequestListener listener : listeners) { listener.onGetLimits(response); } } catch (FaceServerException fse) { notifyListeners(fse, FaceApi.LIMITS); } catch (FaceClientException fce) { notifyListeners(fce, FaceApi.LIMITS); } } }.start(); } public void getNamespace(final String namespace) { new Thread() { public void run() { try { Namespace response = faceClient.getNamespace(namespace); for (RequestListener listener : listeners) { listener.onGetNamespace(response); } } catch (FaceServerException fse) { notifyListeners(fse, FaceApi.NAMESPACES); } catch (FaceClientException fce) { notifyListeners(fce, FaceApi.NAMESPACES); } } }.start(); } public void getTags(final String pids, final String urls, final String uids, final String order, final String filter, final boolean together, final int limit) { new Thread() { public void run() { try { List<Photo> photos = faceClient.getTags(pids, urls, uids, order, filter, together, limit); for (RequestListener listener : listeners) { listener.onGetTags(photos); } } catch (FaceServerException fse) { notifyListeners(fse, FaceApi.GET_TAGS); } catch (FaceClientException fce) { notifyListeners(fce, FaceApi.GET_TAGS); } } }.start(); } public void getTags(final String urls, final String uids, final String order, final String filter, final boolean together, final int limit) { new Thread() { public void run() { try { List<Photo> photos = faceClient.getTags(urls, uids, order, filter, together, limit); for (RequestListener listener : listeners) { listener.onGetTags(photos); } } catch (FaceServerException fse) { notifyListeners(fse, FaceApi.GET_TAGS); } catch (FaceClientException fce) { notifyListeners(fce, FaceApi.GET_TAGS); } } }.start(); } public void group(final File imageFile, final String uids) throws FaceClientException, FaceServerException { new Thread() { public void run() { try { GroupResponse response = faceClient.group(imageFile, uids); for (RequestListener listener : listeners) { listener.onGroup(response); } } catch (FaceServerException fse) { notifyListeners(fse, FaceApi.GROUP); } catch (FaceClientException fce) { notifyListeners(fce, FaceApi.GROUP); } } }.start(); } public void group(final String urls, final String uids) throws FaceClientException, FaceServerException { new Thread() { public void run() { try { GroupResponse response = faceClient.group(urls, uids); for (RequestListener listener : listeners) { listener.onGroup(response); } } catch (FaceServerException fse) { notifyListeners(fse, FaceApi.GROUP); } catch (FaceClientException fce) { notifyListeners(fce, FaceApi.GROUP); } } }.start(); } public void namespaces() { new Thread() { public void run() { try { List<Namespace> namespaces = faceClient.namespaces(); for (RequestListener listener : listeners) { listener.onGetNamespaces(namespaces); } } catch (FaceServerException fse) { notifyListeners(fse, FaceApi.NAMESPACES); } catch (FaceClientException fce) { notifyListeners(fce, FaceApi.NAMESPACES); } } }.start(); } public void recognize(final File imageFile, final String uids) { new Thread() { public void run() { try { Photo photo = faceClient.recognize(imageFile, uids); for (RequestListener listener : listeners) { listener.onRecognize(photo); } } catch (FaceServerException fse) { notifyListeners(fse, FaceApi.RECOGNIZE); } catch (FaceClientException fce) { notifyListeners(fce, FaceApi.RECOGNIZE); } } }.start(); } public void recognize(final String urls, final String uids) { new Thread() { public void run() { try { List<Photo> photos = faceClient.recognize(urls, uids); for (RequestListener listener : listeners) { listener.onRecognize(photos); } } catch (FaceServerException fse) { notifyListeners(fse, FaceApi.RECOGNIZE); } catch (FaceClientException fce) { notifyListeners(fce, FaceApi.RECOGNIZE); } } }.start(); } public void removeTags(final String tids) { new Thread() { public void run() { try { List<RemovedTag> removedTags = faceClient.removeTags(tids); for (RequestListener listener : listeners) { listener.onRemoveTags(removedTags); } } catch (FaceServerException fse) { notifyListeners(fse, FaceApi.RECOGNIZE); } catch (FaceClientException fce) { notifyListeners(fce, FaceApi.RECOGNIZE); } } }.start(); } public void saveTags(final String tids, final String uid, final String label) { new Thread() { public void run() { try { List<SavedTag> savedTags = faceClient.saveTags(tids, uid, label); for (RequestListener listener : listeners) { listener.onSaveTags(savedTags); } } catch (FaceServerException fse) { notifyListeners(fse, FaceApi.SAVE_TAGS); } catch (FaceClientException fce) { notifyListeners(fce, FaceApi.SAVE_TAGS); } } }.start(); } public void status(final String uids) { new Thread() { public void run() { try { List<UserStatus> userStatuses = faceClient.status(uids); for (RequestListener listener : listeners) { listener.onStatus(userStatuses); } } catch (FaceServerException fse) { notifyListeners(fse, FaceApi.STATUS); } catch (FaceClientException fce) { notifyListeners(fce, FaceApi.STATUS); } } }.start(); } public void train(final String uid) { new Thread() { public void run() { try { TrainResponse response = faceClient.train(uid); for (RequestListener listener : listeners) { listener.onTrain(response); } } catch (FaceServerException fse) { notifyListeners(fse, FaceApi.TRAIN); } catch (FaceClientException fce) { notifyListeners(fce, FaceApi.TRAIN); } } }.start(); } public void users(final String namespaces) { new Thread() { public void run() { try { UsersResponse response = faceClient.users(namespaces); for (RequestListener listener : listeners) { listener.onUsers(response); } } catch (FaceServerException fse) { notifyListeners(fse, FaceApi.USERS); } catch (FaceClientException fce) { notifyListeners(fce, FaceApi.USERS); } } }.start(); } public void addListener(RequestListener listener) { listeners.add(listener); } public void clearFacebookCreds() { faceClient.clearFacebookCreds(); } public void clearTwitterCreds() { faceClient.clearTwitterCreds(); } public void setAggressive(boolean isAggressive) { faceClient.setAggressive(isAggressive); } public void setFacebookOauth2(String fbUserId, String oauth2Token) { faceClient.setFacebookOauth2(fbUserId, oauth2Token); } public void setTwitterOauth(String oauthUser, String oauthSecret, String oauthToken) { faceClient.setTwitterOauth(oauthUser, oauthSecret, oauthToken); } public boolean isAggressive() { return faceClient.isAggressive(); } public FaceClient getFaceClient() { return faceClient; } private void notifyListeners(FaceServerException fse, FaceApi faceApi) { for (RequestListener listener : listeners) { listener.onFaceServerException(fse, faceApi); } } private void notifyListeners(FaceClientException fce, FaceApi faceApi) { for (RequestListener listener : listeners) { listener.onFaceClientException(fce, faceApi); } } }
最近下载更多
2890892945 LV2
2023年12月31日
1529860026 LV24
2023年8月3日
qwdqwdqw LV3
2022年12月3日
sdkjaskldjaslkj LV1
2022年11月24日
bruceshen LV2
2022年9月1日
kiyo0416 LV1
2021年12月12日
木华不是呆瓜 LV2
2021年12月9日
warrior09 LV2
2021年11月19日
张颖齐 LV1
2021年9月17日
yuchunping LV1
2021年8月17日
最近浏览更多
xiaojie93 LV2
2月29日
鸦葱 LV4
1月6日
2890892945 LV2
2023年12月31日
1790759671
2023年11月1日
暂无贡献等级
1529860026 LV24
2023年6月28日
真的逢考必过 LV1
2023年6月20日
2517786374 LV4
2023年6月12日
3044651641
2023年6月4日
暂无贡献等级
lvdong2023 LV10
2023年5月17日
qiangmin1223 LV11
2023年5月7日