/*
* Copyright (c) 2007 Martin Goebel
*/
package com.flickr4java.flickr.prefs;
import com.flickr4java.flickr.FlickrException;
import com.flickr4java.flickr.Response;
import com.flickr4java.flickr.Transport;
import org.w3c.dom.Element;
import java.util.HashMap;
import java.util.Map;
/**
* Requesting preferences for the current authenticated user.
*
* @author Martin Goebel
* @version $Id: PrefsInterface.java,v 1.6 2008/06/28 22:30:04 x-mago Exp $
*/
public class PrefsInterface {
public static final String METHOD_GET_CONTENT_TYPE = "flickr.prefs.getContentType";
public static final String METHOD_GET_HIDDEN = "flickr.prefs.getHidden";
public static final String METHOD_GET_SAFETY_LEVEL = "flickr.prefs.getSafetyLevel";
public static final String METHOD_GET_PRIVACY = "flickr.prefs.getPrivacy";
public static final String METHOD_GET_GEO_PERMS = "flickr.prefs.getGeoPerms";
private String apiKey;
private String sharedSecret;
private Transport transportAPI;
/**
* Construct a PrefsInterface.
*
* @param apiKey
* The API key
* @param transportAPI
* The Transport interface
*/
public PrefsInterface(String apiKey, String sharedSecret, Transport transportAPI) {
this.apiKey = apiKey;
this.sharedSecret = sharedSecret;
this.transportAPI = transportAPI;
}
/**
* Returns the default content type preference for the user.
*
* @see com.flickr4java.flickr.Flickr#CONTENTTYPE_OTHER
* @see com.flickr4java.flickr.Flickr#CONTENTTYPE_PHOTO
* @see com.flickr4java.flickr.Flickr#CONTENTTYPE_SCREENSHOT
* @return The content-type
* @throws FlickrException
*/
public String getContentType() throws FlickrException {
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("method", METHOD_GET_CONTENT_TYPE);
Response response = transportAPI.get(transportAPI.getPath(), parameters, apiKey, sharedSecret);
if (response.isError()) {
throw new FlickrException(response.getErrorCode(), response.getErrorMessage());
}
Element personElement = response.getPayload();
return personElement.getAttribute("content_type");
}
/**
* Returns the default privacy level for geographic information attached to the user's photos.
*
* @return privacy-level
* @throws FlickrException
* @see com.flickr4java.flickr.Flickr#PRIVACY_LEVEL_NO_FILTER
* @see com.flickr4java.flickr.Flickr#PRIVACY_LEVEL_PUBLIC
* @see com.flickr4java.flickr.Flickr#PRIVACY_LEVEL_FRIENDS
* @see com.flickr4java.flickr.Flickr#PRIVACY_LEVEL_FAMILY
* @see com.flickr4java.flickr.Flickr#PRIVACY_LEVEL_FRIENDS_FAMILY
* @see com.flickr4java.flickr.Flickr#PRIVACY_LEVEL_PRIVATE
*/
public int getGeoPerms() throws FlickrException {
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("method", METHOD_GET_GEO_PERMS);
Response response = transportAPI.get(transportAPI.getPath(), parameters, apiKey, sharedSecret);
if (response.isError()) {
throw new FlickrException(response.getErrorCode(), response.getErrorMessage());
}
int perm = -1;
Element personElement = response.getPayload();
String geoPerms = personElement.getAttribute("geoperms");
try {
perm = Integer.parseInt(geoPerms);
} catch (NumberFormatException e) {
throw new FlickrException("0", "Unable to parse geoPermission");
}
return perm;
}
/**
* Returns the default hidden preference for the user.
*
* @return boolean hidden or not
* @throws FlickrException
*/
public boolean getHidden() throws FlickrException {
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("method", METHOD_GET_HIDDEN);
Response response = transportAPI.get(transportAPI.getPath(), parameters, apiKey, sharedSecret);
if (response.isError()) {
throw new FlickrException(response.getErrorCode(), response.getErrorMessage());
}
Element personElement = response.getPayload();
return personElement.getAttribute("hidden").equals("1") ? true : false;
}
/**
* Returns the default safety level preference for the user.
*
* @see com.flickr4java.flickr.Flickr#SAFETYLEVEL_MODERATE
* @see com.flickr4java.flickr.Flickr#SAFETYLEVEL_RESTRICTED
* @see com.flickr4java.flickr.Flickr#SAFETYLEVEL_SAFE
* @return The current users safety-level
* @throws FlickrException
*/
public String getSafetyLevel() throws FlickrException {
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("method", METHOD_GET_SAFETY_LEVEL);
Response response = transportAPI.get(transportAPI.getPath(), parameters, apiKey, sharedSecret);
if (response.isError()) {
throw new FlickrException(response.getErrorCode(), response.getErrorMessage());
}
Element personElement = response.getPayload();
return personElement.getAttribute("safety_level");
}
/**
* Returns the default privacy level preference for the user.
*
* @see com.flickr4java.flickr.Flickr#PRIVACY_LEVEL_NO_FILTER
* @see com.flickr4java.flickr.Flickr#PRIVACY_LEVEL_PUBLIC
* @see com.flickr4java.flickr.Flickr#PRIVACY_LEVEL_FRIENDS
* @see com.flickr4java.flickr.Flickr#PRIVACY_LEVEL_FRIENDS_FAMILY
* @see com.flickr4java.flickr.Flickr#PRIVACY_LEVEL_FAMILY
* @see com.flickr4java.flickr.Flickr#PRIVACY_LEVEL_FRIENDS
* @throws FlickrException
* @return privacyLevel
*/
public int getPrivacy() throws FlickrException {
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("method", METHOD_GET_PRIVACY);
Response response = transportAPI.get(transportAPI.getPath(), parameters, apiKey, sharedSecret);
if (response.isError()) {
throw new FlickrException(response.getErrorCode(), response.getErrorMessage());
}
Element personElement = response.getPayload();
return Integer.parseInt(personElement.getAttribute("privacy"));
}
}