/*
+---------------------------------------------------------------------------+
| Facebook Development Platform Java Client |
+---------------------------------------------------------------------------+
| Copyright (c) 2007-2008 Facebook, Inc. |
| All rights reserved. |
| |
| Redistribution and use in source and binary forms, with or without |
| modification, are permitted provided that the following conditions |
| are met: |
| |
| 1. Redistributions of source code must retain the above copyright |
| notice, this list of conditions and the following disclaimer. |
| 2. Redistributions in binary form must reproduce the above copyright |
| notice, this list of conditions and the following disclaimer in the |
| documentation and/or other materials provided with the distribution. |
| |
| THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
| IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
| OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
| IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
| INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
| NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
| THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
+---------------------------------------------------------------------------+
| For help with this library, contact developers-help@facebook.com |
+---------------------------------------------------------------------------+
*/
package com.facebook.api;
import java.util.EnumSet;
public enum FacebookMethod
implements IFacebookMethod, CharSequence {
// Authentication
AUTH_CREATE_TOKEN("facebook.auth.createToken"),
AUTH_GET_SESSION("facebook.auth.getSession", 1),
// FQL Query
FQL_QUERY("facebook.fql.query",1),
// Events
EVENTS_GET("facebook.events.get", 5),
EVENTS_GET_MEMBERS("facebook.events.getMembers", 1),
// Friends
FRIENDS_GET("facebook.friends.get", 1),
FRIENDS_GET_LISTS("facebook.friends.getLists"),
FRIENDS_GET_APP_USERS("facebook.friends.getAppUsers"),
FRIENDS_GET_REQUESTS("facebook.friends.getRequests"),
FRIENDS_ARE_FRIENDS("facebook.friends.areFriends", 2),
// Users
USERS_GET_INFO("facebook.users.getInfo", 2),
USERS_GET_LOGGED_IN_USER("facebook.users.getLoggedInUser"),
USERS_SET_STATUS("facebook.users_setStatus",1),
USERS_IS_APP_ADDED("facebook.users.isAppAdded"),
USERS_HAS_APP_PERMISSION("facebook.users.hasAppPermission", 1),
// Photos
PHOTOS_GET("facebook.photos.get", 2),
PHOTOS_GET_ALBUMS("facebook.photos.getAlbums", 1),
PHOTOS_GET_TAGS("facebook.photos.getTags", 1),
// PhotoUploads
PHOTOS_CREATE_ALBUM("facebook.photos.createAlbum",3),
PHOTOS_ADD_TAG("facebook.photos.addTag", 5),
PHOTOS_UPLOAD("facebook.photos.upload", 3, true),
// Notifications
NOTIFICATIONS_GET("facebook.notifications.get"),
NOTIFICATIONS_SEND("facebook.notifications.send",3),
NOTIFICATIONS_SEND_EMAIL("facebook.notifications.sendEmail",4),
NOTIFICATIONS_SEND_EMAIL_SESSION("facebook.notifications.sendEmail",4),
// Groups
GROUPS_GET("facebook.groups.get", 1),
GROUPS_GET_MEMBERS("facebook.groups.getMembers", 1),
// FBML
PROFILE_SET_FBML("facebook.profile.setFBML", 4),
PROFILE_GET_FBML("facebook.profile.getFBML", 1),
FBML_REFRESH_REF_URL("facebook.fbml.refreshRefUrl", 1),
FBML_REFRESH_IMG_SRC("facebook.fbml.refreshImgSrc", 1),
FBML_SET_REF_HANDLE("facebook.fbml.setRefHandle", 2),
// Feed
FEED_PUBLISH_ACTION_OF_USER("facebook.feed.publishActionOfUser", 10),
FEED_PUBLISH_TEMPLATIZED_ACTION("facebook.feed.publishTemplatizedAction", 12),
FEED_PUBLISH_STORY_TO_USER("facebook.feed.publishStoryToUser", 11),
// Marketplace
MARKETPLACE_GET_CATEGORIES("facebook.marketplace.getCategories"),
MARKETPLACE_GET_SUBCATEGORIES("facebook.marketplace.getSubCategories", 1),
MARKETPLACE_GET_LISTINGS("facebook.marketplace.getListings", 2),
MARKETPLACE_CREATE_LISTING("facebook.marketplace.createListing", 3),
MARKETPLACE_SEARCH("facebook.marketplace.search", 3),
MARKETPLACE_REMOVE_LISTING("facebook.marketplace.removeListing", 2),
// SMS - Mobile
SMS_CAN_SEND("facebook.sms.canSend", 1),
SMS_SEND_MESSAGE("facebook.sms.sendMessage", 3),
// Facebook Pages
PAGES_IS_APP_ADDED("facebook.pages.isAppAdded", 1),
PAGES_IS_ADMIN("facebook.pages.isAdmin", 1),
PAGES_IS_FAN("facebook.pages.isFan", 2),
PAGES_GET_INFO("facebook.pages.getInfo", 2),
PAGES_GET_INFO_NO_SESSION("facebook.pages.getInfo", 2),
// Administration
ADMIN_GET_APP_PROPERTIES("facebook.admin.getAppProperties", 2),
ADMIN_SET_APP_PROPERTIES("facebook.admin.setAppProperties", 2),
// Data
DATA_SET_COOKIE("facebook.data.setCookie", 5),
DATA_GET_COOKIES("facebook.data.getCookies", 2),
DATA_SET_USERPREF("facebook.data.setUserPreference", 2),
DATA_GET_USERPREF("facebook.data.getUserPreference", 1),
;
private String methodName;
private int numParams;
private int maxParamsWithSession;
private boolean takesFile;
private static EnumSet<FacebookMethod> preAuth = null;
private static EnumSet<FacebookMethod> postAuth = null;
/**
* Methods that don't require an active session to be established.
* @return the methods
*/
public static EnumSet<FacebookMethod> preAuthMethods() {
if (null == preAuth)
preAuth = EnumSet.of(AUTH_CREATE_TOKEN, AUTH_GET_SESSION, SMS_SEND_MESSAGE,
PAGES_GET_INFO_NO_SESSION, NOTIFICATIONS_SEND_EMAIL,
ADMIN_GET_APP_PROPERTIES, ADMIN_SET_APP_PROPERTIES);
return preAuth;
}
/**
* Methods that do require an active session to be established.
* @return the methods
*/
public static EnumSet<FacebookMethod> postAuthMethods() {
if (null == postAuth)
postAuth = EnumSet.complementOf(preAuthMethods());
return postAuth;
}
FacebookMethod(String name) {
this(name, 0, false);
}
FacebookMethod(String name, int maxParams ) {
this(name, maxParams, false);
}
FacebookMethod(String name, int maxParams, boolean takesFile ) {
assert (name != null && 0 != name.length());
this.methodName = name;
this.numParams = maxParams;
this.maxParamsWithSession = maxParams + FacebookRestClient.NUM_AUTOAPPENDED_PARAMS;
this.takesFile = takesFile;
}
/**
* The name of the method, e.g. "facebook.friends.get"
* @return the method name
*/
public String methodName() {
return this.methodName;
}
/**
* Number of method-specific parameters (i.e. excluding universally required parameters
* such as api_key and sig)
* @return the number of parameters expected
*/
public int numParams() {
return this.numParams;
}
/**
* @return whether the method requires an active session to be established
* @see #postAuthMethods
* @see #preAuthMethods
*/
public boolean requiresSession() {
return postAuthMethods().contains(this);
}
/**
* @return the total number of parameters this method accepts, including
* required parameters
*/
public int numTotalParams() {
return requiresSession() ? this.maxParamsWithSession : this.numParams;
}
/**
* @return whether the method expects a file to be posted
*/
public boolean takesFile() {
return this.takesFile;
}
/* Implementing CharSequence */
public char charAt(int index) {
return this.methodName.charAt(index);
}
public int length() {
return this.methodName.length();
}
public CharSequence subSequence(int start, int end) {
return this.methodName.subSequence(start, end);
}
public String toString() {
return this.methodName;
}
}