com.fitbit.api.client
Class FitbitApiClientAgent

java.lang.Object
  extended by com.fitbit.api.client.FitbitApiClientAgent
All Implemented Interfaces:
Serializable

public class FitbitApiClientAgent
extends Object
implements Serializable

See Also:
Serialized Form

Field Summary
protected  HttpClient http
           
protected  org.apache.commons.logging.Log log
           
protected  String source
           
protected static String SUBSCRIBER_ID_HEADER_NAME
           
protected  boolean USE_SSL
           
 
Constructor Summary
FitbitApiClientAgent()
          Default constructor.
FitbitApiClientAgent(String apiBaseUrl, String webBaseUrl, FitbitApiCredentialsCache credentialsCache)
          Creates FitbitApiClientAgent with custom API hosts and credentials cache.
FitbitApiClientAgent(String requestTokenURL, String authorizationURL, String accessTokenURL)
           
 
Method Summary
 void acceptInvitationFromUser(LocalUserDetail localUser, FitbitUser fitbitUser)
          Accept friend invitation from another user
 void addFavoriteActivity(LocalUserDetail localUser, String activityId)
          Adds the activity with the given id to user's list of favorite activities.
 void addFavoriteFood(LocalUserDetail localUser, String foodId)
          Add the food with the given id to user's list of favorite foods
protected static String appendParamsToUrl(String url, PostParameter[] params)
           
 ScaleMeasurementLog assignScaleMeasurementLogToGuest(LocalUserDetail localUser, String deviceId, Long scaleMeasurementLodId)
           
protected  void clearAccessToken()
           
 Food createFood(LocalUserDetail localUser, String name, String description, long defaultFoodMeasurementUnitId, float defaultServingSize, FoodFormType formType, NutritionalValuesEntry nutritionalValuesEntry)
          Create new private food for a user
 Food createFood(LocalUserDetail localUser, String name, String description, long defaultFoodMeasurementUnitId, float defaultServingSize, int caloriesPerServingSize, FoodFormType formType)
          Create new private food for a user
 void deleteActivityLog(LocalUserDetail localUser, String activityLogId)
          Delete user's activity log entry with the given id
 void deleteBp(LocalUserDetail localUser, String logId)
          Delete user's blood pressure log entry with the given id
 void deleteFat(LocalUserDetail localUser, String logId)
          Delete user's fat log entry with the given id
 void deleteFavoriteActivity(LocalUserDetail localUser, String activityId)
          Delete the activity with the given id from user's list of favorite activities.
 void deleteFavoriteFood(LocalUserDetail localUser, String foodId)
          Delete the food with the given id from user's list of favorite foods
 void deleteFoodLog(LocalUserDetail localUser, String foodLogId)
          Delete the user's food log entry with the given id
 void deleteHeartRate(LocalUserDetail localUser, String logId)
          Delete user's heart rate log entry with the given id
 void deleteScaleInvite(LocalUserDetail localUser, String deviceId, Long invite)
           
 void deleteScaleMeasurementLog(LocalUserDetail localUser, String deviceId, Long scaleMeasurementLodId)
           
 void deleteScaleUser(LocalUserDetail localUser, String deviceId, FitbitUser fitbitUser)
           
 void deleteSleepLog(LocalUserDetail localUser, Long sleepLogId)
          Delete user's sleep log entry with the given id
 void deleteWater(LocalUserDetail localUser, String logWaterId)
          Delete user's water log entry with the given id
 void deleteWeight(LocalUserDetail localUser, String logId)
          Delete user's weight log entry with the given id
 void forceUsePost(boolean forceUsePost)
          Deprecated. some methods don't accept POST method anymore
 Achievements getAchievements(LocalUserDetail localUser, FitbitUser fitbitUser)
          Get user's activity statistics (lifetime and bests)
 Activities getActivities(LocalUserDetail localUser, FitbitUser fitbitUser, org.joda.time.LocalDate date)
          Get a summary and list of a user's activities and activity log entries for a given day
 LifetimeAchievements getActivitiesAchievements(LocalUserDetail localUser, FitbitUser fitbitUser)
          Deprecated. 
 Activity getActivity(LocalUserDetail localUser, long activityId)
          Get the details of a specific activity in Fitbit activities database.
 Activity getActivity(LocalUserDetail localUser, String activityId)
          Get the details of a specific activity in Fitbit activities database.
 List<ActivityCategory> getActivityCategories(LocalUserDetail localUser)
          Get a tree of all valid Fitbit public activities from the activities catalog as well as private custom activities the user created
 String getApiBaseSecuredUrl()
          Returns the base API SSL URL
 String getApiBaseUrl()
          Returns the base API URL
 APIVersion getApiVersion()
          Returns currently used API version
 Body getBody(LocalUserDetail localUser, FitbitUser fitbitUser, org.joda.time.LocalDate date)
          Get a summary of a user's body measurements for a given day
 Body getBody(LocalUserDetail localUser, String date)
          Get a summary of a user's body measurements for a given day
 BodyWithGoals getBodyWithGoals(LocalUserDetail localUser, FitbitUser fitbitUser, org.joda.time.LocalDate date)
           
 BodyWithGoals getBodyWithGoals(LocalUserDetail localUser, String date)
           
 ApiRateLimitStatus getClientAndViewerRateLimitStatus(LocalUserDetail localUser)
          Get Rate Limiting Quota left for the Client+Viewer
 ApiRateLimitStatus getClientRateLimitStatus()
          Get Rate Limiting Quota left for the Client
 String getClientURL()
           
 String getClientVersion()
          Fetches the X-Fitbit-Client-Version header.
 Object getCollectionForDate(LocalUserDetail localUser, FitbitUser fitbitUser, APICollectionType type, org.joda.time.LocalDate date)
           
 Response getCollectionResponseForDate(LocalUserDetail localUser, FitbitUser fitbitUser, APICollectionType type, org.joda.time.LocalDate date)
           
 Response getCollectionResponseForProperty(LocalUserDetail localUser, FitbitUser fitbitUser, APICollectionType type, ApiCollectionProperty property)
           
 FitbitApiCredentialsCache getCredentialsCache()
          Retrieves credentials cache
 Device getDevice(LocalUserDetail localUser, String deviceId)
          Retrieve the attributes of user's Fitbit device
 List<Device> getDevices(LocalUserDetail localUser)
          Retrieves the list of Fitbit devices for a user
static String getErrorMessage(Response res)
           
 List<ActivityReference> getFavoriteActivities(LocalUserDetail localUser, FitbitUser fitbitUser)
          Get a list of a user's favorite activities.
 List<Food> getFavoriteFoods(LocalUserDetail localUser, FitbitUser fitbitUser)
          Get a list of a user's favorite foods.
 Food getFood(LocalUserDetail localUser, Long foodId)
          Get the details of a specific food in Fitbit Food database (or private food for the user)
 Foods getFoods(LocalUserDetail localUser, FitbitUser fitbitUser, org.joda.time.LocalDate date)
          Get a summary and list of a user's food log entries for a given day
 List<FoodUnit> getFoodUnits()
          Get list of all valid Fitbit food units
 List<LoggedActivityReference> getFrequentActivities(LocalUserDetail localUser, FitbitUser fitbitUser)
          Get a list of a user's frequent activities.
 List<LoggedFood> getFrequentFoods(LocalUserDetail localUser, FitbitUser fitbitUser)
          Get a list of a user's frequent foods
 List<UserInfo> getFriends(FitbitUser owner)
          Get a list of user's friends
 List<UserInfo> getFriends(LocalUserDetail localUser)
          Get a list of user's friends
 List<UserInfo> getFriends(LocalUserDetail localUser, FitbitUser owner)
          Get a list of user's friends
 List<FriendStats> getFriendsLeaderboard(LocalUserDetail localUser, TimePeriod timePeriod)
          Get a leaderboard of user's friends progress
 IntradaySummary getIntraDayTimeSeries(LocalUserDetail localUser, FitbitUser user, TimeSeriesResourceType resourceType, org.joda.time.LocalDate date)
           
 IntradaySummary getIntraDayTimeSeries(LocalUserDetail localUser, FitbitUser user, TimeSeriesResourceType resourceType, org.joda.time.LocalDate date, org.joda.time.LocalTime startTime, org.joda.time.LocalTime endTime)
           
 IntradaySummary getIntraDayTimeSeries(LocalUserDetail localUser, FitbitUser user, TimeSeriesResourceType resourceType, String date)
           
 IntradaySummary getIntraDayTimeSeries(LocalUserDetail localUser, FitbitUser user, TimeSeriesResourceType resourceType, String date, String startTime, String endTime)
           
 Bp getLoggedBp(LocalUserDetail localUser, FitbitUser fitbitUser, org.joda.time.LocalDate date)
          Get an average and list of a user's blood pressure log entries for a given day
 List<FatLog> getLoggedFat(LocalUserDetail localUser, FitbitUser fitbitUser, org.joda.time.LocalDate date)
          Get list of a user's fat log entries for a given day
 List<FatLog> getLoggedFat(LocalUserDetail localUser, FitbitUser fitbitUser, org.joda.time.LocalDate endDate, DataPeriod period)
          Get list of a user's fat log entries for a given days' period
 List<FatLog> getLoggedFat(LocalUserDetail localUser, FitbitUser fitbitUser, org.joda.time.LocalDate startDate, org.joda.time.LocalDate endDate)
          Get list of a user's fat log entries for a given days' range
 List<FatLog> getLoggedFat(LocalUserDetail localUser, FitbitUser fitbitUser, String dateUrl)
          Get list of a user's fat log entries
 List<LoggedFood> getLoggedFoods(LocalUserDetail localUser, FitbitUser fitbitUser, ApiCollectionProperty property)
           
 Glucose getLoggedGlucose(LocalUserDetail localUser, FitbitUser fitbitUser, org.joda.time.LocalDate date)
          Get list of a user's glucose log entries and hba1c for a given day
 Heart getLoggedHeartRate(LocalUserDetail localUser, FitbitUser fitbitUser, org.joda.time.LocalDate date)
          Get an average and list of a user's heart rate log entries for a given day
 Water getLoggedWater(LocalUserDetail localUser, FitbitUser fitbitUser, org.joda.time.LocalDate date)
          Get a summary and list of a user's water log entries for a given day
 List<WeightLog> getLoggedWeight(LocalUserDetail localUser, FitbitUser fitbitUser, org.joda.time.LocalDate date)
          Get list of a user's weight log entries for a given day
 List<WeightLog> getLoggedWeight(LocalUserDetail localUser, FitbitUser fitbitUser, org.joda.time.LocalDate endDate, DataPeriod period)
          Get list of a user's weight log entries for a given days' period
 List<WeightLog> getLoggedWeight(LocalUserDetail localUser, FitbitUser fitbitUser, org.joda.time.LocalDate startDate, org.joda.time.LocalDate endDate)
          Get list of a user's weight log entries for a given days' range
 List<WeightLog> getLoggedWeight(LocalUserDetail localUser, FitbitUser fitbitUser, String dateUrl)
          Get list of a user's weight log entries
 List<Meal> getMeals(LocalUserDetail localUser)
          Get a list of meals created by user
 AccessToken getOAuthAccessToken(String token, String tokenSecret, String oauth_verifier)
          Retrieves an access token associated with the supplied request token, retrieved tokenSecret and oauth_verifier or pin
 AccessToken getOAuthAccessToken(TempCredentials tempToken)
          Retrieves an access token associated with the supplied request token.
 AccessToken getOAuthAccessToken(TempCredentials tempToken, String pin)
          Retrieves an access token associated with the supplied request token and retrieved pin, sets userId.
 TempCredentials getOAuthTempToken()
          Retrieves a request token
 TempCredentials getOAuthTempToken(String callback_url)
          Retrieves a request token, providing custom callback url
 String getPassword()
          Returns authenticating password
 ApiRateLimitStatus getRateLimitStatus(ApiQuotaType quotaType)
           
 List<LoggedActivityReference> getRecentActivities(LocalUserDetail localUser, FitbitUser fitbitUser)
          Get a list of a user's recent activities.
 List<LoggedFood> getRecentFoods(LocalUserDetail localUser, FitbitUser fitbitUser)
          Get a list of a user's recent foods
 Scale getScale(LocalUserDetail localUser, String deviceId)
          Retrieve the attributes of user's scale
 List<ScaleInvite> getScaleInvites(LocalUserDetail localUser, String deviceId)
           
 List<ScaleMeasurementLog> getScaleMeasurementLogs(LocalUserDetail localUser, String deviceId, org.joda.time.LocalDate startDate, org.joda.time.LocalDate endDate)
           
 List<ScaleMeasurementLog> getScaleMeasurementLogs(LocalUserDetail localUser, String deviceId, org.joda.time.LocalDate startDate, TimePeriod timePeriod)
           
 List<Scale> getScales(LocalUserDetail localUser)
          Retrieves the list of user's scales
 List<ScaleUser> getScaleUsers(LocalUserDetail localUser, String deviceId)
           
 Sleep getSleep(LocalUserDetail localUser, FitbitUser fitbitUser, org.joda.time.LocalDate date)
          Get a summary and list of a user's sleep log entries for a given day
 String getSource()
          Returns the source
 List<ApiSubscription> getSubscriptions(LocalUserDetail localUser)
           
 List<ApiSubscription> getSubscriptions(LocalUserDetail localUser, APICollectionType collectionType)
           
 List<Data> getTimeSeries(FitbitUser user, TimeSeriesResourceType resourceType, org.joda.time.LocalDate startDate, org.joda.time.LocalDate endDate)
          Get time series in the specified range for a given resource of a user (as an unauthorized)
 List<Data> getTimeSeries(FitbitUser user, TimeSeriesResourceType resourceType, org.joda.time.LocalDate startDate, TimePeriod period)
          Get time series in the specified range for a given resource of a user (as an unauthorized)
 List<Data> getTimeSeries(FitbitUser user, TimeSeriesResourceType resourceType, String startDate, TimePeriod period)
          Get time series in the specified range for a given resource of a user (as an unauthorized)
 List<Data> getTimeSeries(LocalUserDetail localUser, FitbitUser user, TimeSeriesResourceType resourceType, org.joda.time.LocalDate startDate, org.joda.time.LocalDate endDate)
          Get time series in the specified range for a given resource of a user
 List<Data> getTimeSeries(LocalUserDetail localUser, FitbitUser user, TimeSeriesResourceType resourceType, org.joda.time.LocalDate startDate, TimePeriod period)
          Get time series in the specified range for a given resource of a user
 List<Data> getTimeSeries(LocalUserDetail localUser, FitbitUser user, TimeSeriesResourceType resourceType, String startDate, String periodOrEndDate)
           
 List<Data> getTimeSeries(LocalUserDetail localUser, FitbitUser user, TimeSeriesResourceType resourceType, String startDate, TimePeriod period)
          Get time series in the specified range for a given resource of a user
 String getUserAgent()
           
 String getUserId()
          Returns authenticating userid
 UserInfo getUserInfo(LocalUserDetail localUser)
          Get a user's profile
 UserInfo getUserInfo(LocalUserDetail localUser, FitbitUser fitbitUser)
          Get a user's profile
 double getWeight(LocalUserDetail localUser, FitbitUser fitbitUser, org.joda.time.LocalDate date)
          Retrieve a user's body measurements for a given day
 double getWeight(LocalUserDetail localUser, String date)
          Deprecated. 
protected  Response httpDelete(String url, boolean authenticate)
           
protected  Response httpDelete(String url, PostParameter[] params, boolean authenticate)
           
protected  Response httpGet(String url, boolean authenticate)
          Issues an HTTP GET request.
protected  Response httpGet(String url, PostParameter[] params, boolean authenticate)
          Issues an HTTP GET request.
protected  Response httpGet(String url, String name1, String value1, boolean authenticate)
          Issues an HTTP GET request.
protected  Response httpGet(String url, String name1, String value1, String name2, String value2, boolean authenticate)
          Issues an HTTP GET request.
protected  Response httpPost(String url, PostParameter[] params, boolean authenticate)
           
 void inviteByEmail(LocalUserDetail localUser, String invitedUserEmail)
          Invite another user to be a friend given his email
 void inviteByUserId(LocalUserDetail localUser, String invitedUserId)
          Invite another user to be a friend given his userId
 List<ScaleInviteSendingResult> inviteUsersToScale(LocalUserDetail localUser, String deviceId, String invitedUserEmails, String message)
           
 boolean isUsePostForced()
           
 ActivityLog logActivity(LocalUserDetail localUser, List<PostParameter> params)
          Create log entry for an activity
 ActivityLog logActivity(LocalUserDetail localUser, long activityId, int steps, int durationMillis, float distance, org.joda.time.LocalDate date, org.joda.time.LocalTime startTime)
          Create log entry for an activity
 ActivityLog logActivity(LocalUserDetail localUser, long activityId, int steps, int durationMillis, float distance, String distanceUnit, org.joda.time.LocalDate date, org.joda.time.LocalTime startTime)
          Create log entry for an activity
 ActivityLog logActivity(LocalUserDetail localUser, long activityId, int steps, int durationMillis, float distance, String distanceUnit, org.joda.time.LocalDate date, org.joda.time.LocalTime startTime, int manualCalories)
          Create log entry for an activity
 ActivityLog logActivity(LocalUserDetail localUser, String activityName, int durationMillis, float distance, org.joda.time.LocalDate date, org.joda.time.LocalTime startTime, int manualCalories)
          Create log entry for a custom activity
 ActivityLog logActivity(LocalUserDetail localUser, String activityName, int durationMillis, float distance, String distanceUnit, org.joda.time.LocalDate date, org.joda.time.LocalTime startTime, int manualCalories)
          Create log entry for a custom activity
 ActivityLog logActivity(LocalUserDetail localUser, String activityName, int durationMillis, org.joda.time.LocalDate date, org.joda.time.LocalTime startTime, int manualCalories)
          Create log entry for a custom activity
 Body logBody(LocalUserDetail localUser, Body body, org.joda.time.LocalDate date)
          Get a summary of a user's body measurements for a given day
 Body logBody(LocalUserDetail localUser, List<PostParameter> params)
           
 BpLog logBp(LocalUserDetail localUser, int systolic, int diastolic, org.joda.time.LocalDate date)
          Create log entry for a blood pressure measurement
 BpLog logBp(LocalUserDetail localUser, int systolic, int diastolic, org.joda.time.LocalDate date, String time)
          Create log entry for a blood pressure measurement
 BpLog logBp(LocalUserDetail localUser, List<PostParameter> params)
           
 FatLog logFat(LocalUserDetail localUser, double fat, org.joda.time.LocalDate date)
          Create log entry for a fat
 FatLog logFat(LocalUserDetail localUser, double fat, org.joda.time.LocalDate date, String time)
          Create log entry for a fat
 FatLog logFat(LocalUserDetail localUser, List<PostParameter> params)
           
 FoodLog logFood(LocalUserDetail localUser, List<PostParameter> params)
          Create log entry for a food
 FoodLog logFood(LocalUserDetail localUser, long foodId, int mealTypeId, int unitId, String amount, org.joda.time.LocalDate date)
          Create log entry for a food
 FoodLog logFood(LocalUserDetail localUser, String foodName, String brandName, NutritionalValuesEntry nutritionalValuesEntry, int mealTypeId, int unitId, String amount, org.joda.time.LocalDate date)
          Create log entry for a food
 Glucose logGlucose(LocalUserDetail localUser, List<PostParameter> params)
           
 Glucose logGlucose(LocalUserDetail localUser, String tracker, Float glucose, Float hba1c, org.joda.time.LocalDate date)
          Create log entry for a glucose
 Glucose logGlucose(LocalUserDetail localUser, String tracker, Float glucose, Float hba1c, org.joda.time.LocalDate date, String time)
          Create log entry for a glucose
 HeartLog logHeartRate(LocalUserDetail localUser, List<PostParameter> params)
           
 HeartLog logHeartRate(LocalUserDetail localUser, String tracker, int heartRate, org.joda.time.LocalDate date)
          Create log entry for a heart rate
 HeartLog logHeartRate(LocalUserDetail localUser, String tracker, int heartRate, org.joda.time.LocalDate date, String time)
          Create log entry for a heart rate
 SleepLog logSleep(LocalUserDetail localUser, org.joda.time.LocalDate date, org.joda.time.LocalTime startTime, long duration)
          Create log entry for a sleep
 WaterLog logWater(LocalUserDetail localUser, float amount, org.joda.time.LocalDate date)
          Create log entry for a water
 WaterLog logWater(LocalUserDetail localUser, float amount, VolumeUnits volumeUnit, org.joda.time.LocalDate date)
          Create log entry for a water in custom volume units
 WaterLog logWater(LocalUserDetail localUser, List<PostParameter> params)
           
 WeightLog logWeight(LocalUserDetail localUser, double weight, org.joda.time.LocalDate date)
          Create log entry for a weight
 WeightLog logWeight(LocalUserDetail localUser, double weight, org.joda.time.LocalDate date, String time)
          Create log entry for a weight
 void logWeight(LocalUserDetail localUser, float weight, org.joda.time.LocalDate date)
          Deprecated. 
 WeightLog logWeight(LocalUserDetail localUser, List<PostParameter> params)
           
protected  SubscriptionDetail nullSafeSubscribe(String subscriberId, LocalUserDetail localUser, FitbitUser fitbitUser, APICollectionType collectionType, String subscriptionId)
           
protected  void nullSafeUnsubscribe(String subscriberId, LocalUserDetail localUser, FitbitUser fitbitUser, APICollectionType collectionType, String subscriptionId)
           
 ScaleMeasurementLog reassignScaleMeasurementLogToUser(LocalUserDetail localUser, String deviceId, Long scaleMeasurementLodId, FitbitUser fitbitUser)
           
 void rejectInvitationFromUser(LocalUserDetail localUser, FitbitUser fitbitUser)
          Reject friend invitation from another user
 List<Food> searchFoods(LocalUserDetail localUser, String query)
          Given a search query, get a list of public foods from Fitbit foods database and private foods the user created
protected  void setAccessToken(LocalUserDetail localUser)
           
 void setClientURL(String clientURL)
          Sets the X-Fitbit-Client-URL header.
 void setClientVersion(String version)
          Sets the X-Fitbit-Client-Version header.
 void setHttpConnectionTimeout(int connectionTimeout)
          Sets a specified timeout value, in milliseconds, to be used when opening a communications link to the Fitbit API.
 void setHttpProxy(String proxyHost, int proxyPort)
          Enables use of HTTP proxy
 void setHttpProxyAuth(String proxyUser, String proxyPass)
          Adds authentication on HTTP proxy
 void setHttpReadTimeout(int readTimeoutMilliSecs)
          Sets the read timeout to a specified timeout, in milliseconds.
 void setLocale(Locale locale)
          Set unit system for future API calls
 void setLocalization(Locale locale)
           
 void setOAuthAccessToken(AccessToken accessToken)
          Sets the access token
 void setOAuthAccessToken(String token, String tokenSecret)
          Sets the access token and secret
 void setOAuthAccessToken(String token, String tokenSecret, String encodedUserId)
          Sets the access token and secret
 void setOAuthConsumer(String consumerKey, String consumerSecret)
          Sets the OAuth consumer credentials
 void setPassword(String password)
          Sets the password
 void setRequestHeader(String name, String value)
          Sets the request header name/value combination
 void setRetryCount(int retryCount)
           
 void setRetryIntervalSecs(int retryIntervalSecs)
           
 void setSource(String source)
          Sets X-Fitbit-Client http header and the source parameter that will be passed by updating methods.
protected  void setSubscriberId(String subscriberId)
          Sets id of a default subscriber for subscription requests
 void setUserAgent(String userAgent)
          Sets the User-Agent header.
 void setUserId(String userId)
          Sets the userid
 SubscriptionDetail subscribe(String subscriberId, LocalUserDetail localUser, FitbitUser fitbitUser)
          Adds a subscription to all user's collections
 SubscriptionDetail subscribe(String subscriberId, LocalUserDetail localUser, FitbitUser fitbitUser, APICollectionType collectionType)
          Adds a subscription to user's collection
 SubscriptionDetail subscribe(String subscriberId, LocalUserDetail localUser, FitbitUser fitbitUser, APICollectionType collectionType, String subscriptionId)
          Adds a subscription with given id to user's collection
 SubscriptionDetail subscribe(String subscriberId, LocalUserDetail localUser, FitbitUser fitbitUser, String subscriptionId)
          Adds a subscription with given id to all user's collections
static void throwExceptionIfError(Response res)
           
static void throwExceptionIfError(Response res, int expectedStatusCode)
           
 void unsubscribe(String subscriberId, LocalUserDetail localUser, FitbitUser fitbitUser, APICollectionType collectionType, String subscriptionId)
          Removes a subscription with given id from user's collection
 void unsubscribe(String subscriberId, LocalUserDetail localUser, FitbitUser fitbitUser, String subscriptionId)
          Removes a subscription with given id from all user's collections
 Scale updateScaleSettings(LocalUserDetail localUser, String deviceId, String name, UnitSystem unitSystem, Integer brightness)
          Update scale settings
 ScaleUser updateScaleUser(LocalUserDetail localUser, String deviceId, String scaleUserName, BodyType bodyType)
           
 UserInfo updateUserInfo(LocalUserDetail localUser, List<PostParameter> params)
          Update user's profile
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

SUBSCRIBER_ID_HEADER_NAME

protected static final String SUBSCRIBER_ID_HEADER_NAME
See Also:
Constant Field Values

log

protected org.apache.commons.logging.Log log

http

protected HttpClient http

source

protected String source

USE_SSL

protected final boolean USE_SSL
Constructor Detail

FitbitApiClientAgent

public FitbitApiClientAgent()
Default constructor. Creates FitbitApiClientAgent with default API hosts and credentials cache.


FitbitApiClientAgent

public FitbitApiClientAgent(String apiBaseUrl,
                            String webBaseUrl,
                            FitbitApiCredentialsCache credentialsCache)
Creates FitbitApiClientAgent with custom API hosts and credentials cache.

Parameters:
apiBaseUrl - e.g. api.fitbit.com
webBaseUrl - e.g. http://www.fitbit.com
credentialsCache - Credentials cache
See Also:
Fitbit API: API-Client-Reference-App

FitbitApiClientAgent

public FitbitApiClientAgent(String requestTokenURL,
                            String authorizationURL,
                            String accessTokenURL)
Parameters:
requestTokenURL - e.g. https://api.fitbit.com/oauth/request_token
authorizationURL - e.g. http://www.fitbit.com/oauth/authorize
accessTokenURL - https://api.fitbit.com/oauth/access_token
See Also:
Fitbit API: API-Client-Reference-App
Method Detail

getApiBaseUrl

public String getApiBaseUrl()
Returns the base API URL

Returns:
the base API URL

getApiBaseSecuredUrl

public String getApiBaseSecuredUrl()
Returns the base API SSL URL

Returns:
the secured base API URL

getApiVersion

public APIVersion getApiVersion()
Returns currently used API version

Returns:
API version

getOAuthTempToken

public TempCredentials getOAuthTempToken()
                                  throws FitbitAPIException
Retrieves a request token

Returns:
retrieved request token@since Fitbit 1.0
Throws:
FitbitAPIException - when Fitbit API service or network is unavailable
See Also:
Fitbit API: OAuth-Authentication-API<, OAuth Core 1.0 - 6.1. Obtaining an Unauthorized Request Token

getOAuthTempToken

public TempCredentials getOAuthTempToken(String callback_url)
                                  throws FitbitAPIException
Retrieves a request token, providing custom callback url

Returns:
retrieved request token@since Fitbit 1.0
Throws:
FitbitAPIException - when Fitbit API service or network is unavailable
See Also:
Fitbit API: OAuth-Authentication-API, OAuth Core 1.0 - 6.1. Obtaining an Unauthorized Request Token

getOAuthAccessToken

public AccessToken getOAuthAccessToken(TempCredentials tempToken)
                                throws FitbitAPIException
Retrieves an access token associated with the supplied request token.

Parameters:
tempToken - the request token
Returns:
access token associated with the supplied request token.
Throws:
FitbitAPIException - when Fitbit service or network is unavailable, or the user has not authorized
See Also:
Fitbit API: OAuth-Authentication-API<, OAuth Core 1.0 - 6.2. Obtaining User Authorization

getOAuthAccessToken

public AccessToken getOAuthAccessToken(TempCredentials tempToken,
                                       String pin)
                                throws FitbitAPIException
Retrieves an access token associated with the supplied request token and retrieved pin, sets userId.

Parameters:
tempToken - the request token
pin - pin
Returns:
access token associsted with the supplied request token.
Throws:
FitbitAPIException - when Fitbit service or network is unavailable, or the user has not authorized
See Also:
Fitbit API: OAuth-Authentication-API, OAuth Core 1.0 - 6.2. Obtaining User Authorization

getOAuthAccessToken

public AccessToken getOAuthAccessToken(String token,
                                       String tokenSecret,
                                       String oauth_verifier)
                                throws FitbitAPIException
Retrieves an access token associated with the supplied request token, retrieved tokenSecret and oauth_verifier or pin

Parameters:
token - request token
tokenSecret - request token secret
oauth_verifier - oauth_verifier or pin
Returns:
access token associsted with the supplied request token.
Throws:
FitbitAPIException - when Fitbit service or network is unavailable, or the user has not authorized
See Also:
Fitbit API: OAuth-Authentication-API, OAuth Core 1.0 - 6.2. Obtaining User Authorization

setOAuthAccessToken

public void setOAuthAccessToken(AccessToken accessToken)
Sets the access token

Parameters:
accessToken - access token
See Also:
Fitbit API: OAuth-Authentication-API, OAuth Core 1.0 - 6.2. Obtaining User Authorization

setOAuthAccessToken

public void setOAuthAccessToken(String token,
                                String tokenSecret)
Sets the access token and secret

Parameters:
token - access token
tokenSecret - access token secret

setOAuthAccessToken

public void setOAuthAccessToken(String token,
                                String tokenSecret,
                                String encodedUserId)
Sets the access token and secret

Parameters:
token - access token
tokenSecret - access token secret
encodedUserId - userId

setOAuthConsumer

public void setOAuthConsumer(String consumerKey,
                             String consumerSecret)
Sets the OAuth consumer credentials

Parameters:
consumerKey - consumer key
consumerKey - consumer secret

setSubscriberId

protected void setSubscriberId(String subscriberId)
Sets id of a default subscriber for subscription requests

Parameters:
subscriberId - default subscriber id
See Also:
Fitbit API: Subscriptions-API

getCredentialsCache

public FitbitApiCredentialsCache getCredentialsCache()
Retrieves credentials cache

Returns:
credentials cache

getAchievements

public Achievements getAchievements(LocalUserDetail localUser,
                                    FitbitUser fitbitUser)
                             throws FitbitAPIException
Get user's activity statistics (lifetime and bests)

Parameters:
localUser - authorized user
fitbitUser - user to retrieve data from
Returns:
user's activity statistics
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-Activity-Stats

getActivitiesAchievements

@Deprecated
public LifetimeAchievements getActivitiesAchievements(LocalUserDetail localUser,
                                                                 FitbitUser fitbitUser)
                                               throws FitbitAPIException
Deprecated. 

Get user's lifetime activity statistics

Parameters:
localUser - authorized user
fitbitUser - user to retrieve data from
Returns:
user's activity statistics
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-Activity-Stats

getActivities

public Activities getActivities(LocalUserDetail localUser,
                                FitbitUser fitbitUser,
                                org.joda.time.LocalDate date)
                         throws FitbitAPIException
Get a summary and list of a user's activities and activity log entries for a given day

Parameters:
localUser - authorized user
fitbitUser - user to retrieve data from
date - date to retrieve data dor
Returns:
activities for a given day
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-Activities

getFavoriteActivities

public List<ActivityReference> getFavoriteActivities(LocalUserDetail localUser,
                                                     FitbitUser fitbitUser)
                                              throws FitbitAPIException
Get a list of a user's favorite activities. The activity id contained in the record retrieved can be used to log the activity

Parameters:
localUser - authorized user
fitbitUser - user to retrieve data from
Returns:
list of user's favorite activities
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-Favorite-Activities

getRecentActivities

public List<LoggedActivityReference> getRecentActivities(LocalUserDetail localUser,
                                                         FitbitUser fitbitUser)
                                                  throws FitbitAPIException
Get a list of a user's recent activities. The activity id contained in the record retrieved can be used to log the activity

Parameters:
localUser - authorized user
fitbitUser - user to retrieve data from
Returns:
list of user's recent activities
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-Recent-Activities

getFrequentActivities

public List<LoggedActivityReference> getFrequentActivities(LocalUserDetail localUser,
                                                           FitbitUser fitbitUser)
                                                    throws FitbitAPIException
Get a list of a user's frequent activities. The activity id contained in the record retrieved can be used to log the activity

Parameters:
localUser - authorized user
fitbitUser - user to retrieve data from
Returns:
list of user's frequent activities
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-Frequent-Activities

logActivity

public ActivityLog logActivity(LocalUserDetail localUser,
                               long activityId,
                               int steps,
                               int durationMillis,
                               float distance,
                               org.joda.time.LocalDate date,
                               org.joda.time.LocalTime startTime)
                        throws FitbitAPIException
Create log entry for an activity

Parameters:
localUser - authorized user
activityId - Activity id
steps - Start time
durationMillis - Duration
distance - Distance
date - Log entry date
startTime - Start time
Returns:
new activity log entry
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Log-Activity

logActivity

public ActivityLog logActivity(LocalUserDetail localUser,
                               long activityId,
                               int steps,
                               int durationMillis,
                               float distance,
                               String distanceUnit,
                               org.joda.time.LocalDate date,
                               org.joda.time.LocalTime startTime)
                        throws FitbitAPIException
Create log entry for an activity

Parameters:
localUser - authorized user
activityId - Activity id
steps - Start time
durationMillis - Duration
distance - Distance
distanceUnit - distance measurement unit;
date - Log entry date
startTime - Start time
Returns:
new activity log entry
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Log-Activity

logActivity

public ActivityLog logActivity(LocalUserDetail localUser,
                               long activityId,
                               int steps,
                               int durationMillis,
                               float distance,
                               String distanceUnit,
                               org.joda.time.LocalDate date,
                               org.joda.time.LocalTime startTime,
                               int manualCalories)
                        throws FitbitAPIException
Create log entry for an activity

Parameters:
localUser - authorized user
activityId - Activity id
steps - Start time
durationMillis - Duration
distance - Distance
distanceUnit - distance measurement unit;
date - Log entry date
startTime - Start time
manualCalories - manual calories
Returns:
new activity log entry
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Log-Activity

logActivity

public ActivityLog logActivity(LocalUserDetail localUser,
                               String activityName,
                               int durationMillis,
                               org.joda.time.LocalDate date,
                               org.joda.time.LocalTime startTime,
                               int manualCalories)
                        throws FitbitAPIException
Create log entry for a custom activity

Parameters:
localUser - authorized user
activityName - Activity name
durationMillis - Duration
date - Log entry date
startTime - Start time
manualCalories - manual calories
Returns:
new activity log entry
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Log-Activity

logActivity

public ActivityLog logActivity(LocalUserDetail localUser,
                               String activityName,
                               int durationMillis,
                               float distance,
                               org.joda.time.LocalDate date,
                               org.joda.time.LocalTime startTime,
                               int manualCalories)
                        throws FitbitAPIException
Create log entry for a custom activity

Parameters:
localUser - authorized user
activityName - Activity name
durationMillis - Duration
distance - Distance
date - Log entry date
startTime - Start time
manualCalories - manual calories
Returns:
new activity log entry
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Log-Activity

logActivity

public ActivityLog logActivity(LocalUserDetail localUser,
                               String activityName,
                               int durationMillis,
                               float distance,
                               String distanceUnit,
                               org.joda.time.LocalDate date,
                               org.joda.time.LocalTime startTime,
                               int manualCalories)
                        throws FitbitAPIException
Create log entry for a custom activity

Parameters:
localUser - authorized user
activityName - Activity name
durationMillis - Duration
distance - Distance
distanceUnit - distance measurement unit;
date - Log entry date
startTime - Start time
manualCalories - manual calories
Returns:
new activity log entry
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Log-Activity

logActivity

public ActivityLog logActivity(LocalUserDetail localUser,
                               List<PostParameter> params)
                        throws FitbitAPIException
Create log entry for an activity

Parameters:
localUser - authorized user
params - POST request parameters
Returns:
new activity log entry
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Log-Activity

deleteActivityLog

public void deleteActivityLog(LocalUserDetail localUser,
                              String activityLogId)
                       throws FitbitAPIException
Delete user's activity log entry with the given id

Parameters:
localUser - authorized user
activityLogId - Activity log entry id
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Delete-Activity-Log

getActivityCategories

public List<ActivityCategory> getActivityCategories(LocalUserDetail localUser)
                                             throws FitbitAPIException
Get a tree of all valid Fitbit public activities from the activities catalog as well as private custom activities the user created

Parameters:
localUser - authorized user
Returns:
activities catalog
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Browse-Activities

getActivity

public Activity getActivity(LocalUserDetail localUser,
                            long activityId)
                     throws FitbitAPIException
Get the details of a specific activity in Fitbit activities database. If activity has levels, also get list of activity level details.

Parameters:
localUser - authorized user
activityId - Activity id
Returns:
activity description
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-Activity

getActivity

public Activity getActivity(LocalUserDetail localUser,
                            String activityId)
                     throws FitbitAPIException
Get the details of a specific activity in Fitbit activities database. If activity has levels, also get list of activity level details.

Parameters:
localUser - authorized user
activityId - Activity id
Returns:
activity description
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-Activity

addFavoriteActivity

public void addFavoriteActivity(LocalUserDetail localUser,
                                String activityId)
                         throws FitbitAPIException
Adds the activity with the given id to user's list of favorite activities.

Parameters:
localUser - authorized user
activityId - Activity id
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Add-Favorite-Activity

deleteFavoriteActivity

public void deleteFavoriteActivity(LocalUserDetail localUser,
                                   String activityId)
                            throws FitbitAPIException
Delete the activity with the given id from user's list of favorite activities.

Parameters:
localUser - authorized user
activityId - Activity id
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Delete-Favorite-Activity

createFood

public Food createFood(LocalUserDetail localUser,
                       String name,
                       String description,
                       long defaultFoodMeasurementUnitId,
                       float defaultServingSize,
                       int caloriesPerServingSize,
                       FoodFormType formType)
                throws FitbitAPIException
Create new private food for a user

Parameters:
localUser - authorized user
name - Food name
description - Food description
defaultFoodMeasurementUnitId - Default measurement unit for a food
defaultServingSize - Default size of a serving
caloriesPerServingSize - Calories in default serving
formType - Form type
Returns:
new food object
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Create-Food

createFood

public Food createFood(LocalUserDetail localUser,
                       String name,
                       String description,
                       long defaultFoodMeasurementUnitId,
                       float defaultServingSize,
                       FoodFormType formType,
                       NutritionalValuesEntry nutritionalValuesEntry)
                throws FitbitAPIException
Create new private food for a user

Parameters:
localUser - authorized user
name - Food name
description - Food description
defaultFoodMeasurementUnitId - Default measurement unit for a food
defaultServingSize - Default size of a serving
formType - Form type
nutritionalValuesEntry - Set of nutritional values for a default serving
Returns:
new food object
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Create-Food

getFoods

public Foods getFoods(LocalUserDetail localUser,
                      FitbitUser fitbitUser,
                      org.joda.time.LocalDate date)
               throws FitbitAPIException
Get a summary and list of a user's food log entries for a given day

Parameters:
localUser - authorized user
fitbitUser - user to retrieve data from
date - date to retrieve data dor
Returns:
food records for a given day
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-Foods

getLoggedFoods

public List<LoggedFood> getLoggedFoods(LocalUserDetail localUser,
                                       FitbitUser fitbitUser,
                                       ApiCollectionProperty property)
                                throws FitbitAPIException
Throws:
FitbitAPIException

getFavoriteFoods

public List<Food> getFavoriteFoods(LocalUserDetail localUser,
                                   FitbitUser fitbitUser)
                            throws FitbitAPIException
Get a list of a user's favorite foods. A favorite food provides a quick way to log the food

Parameters:
localUser - authorized user
fitbitUser - user to retrieve data from
Returns:
list of user's favorite foods
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-Favorite-Foods

getRecentFoods

public List<LoggedFood> getRecentFoods(LocalUserDetail localUser,
                                       FitbitUser fitbitUser)
                                throws FitbitAPIException
Get a list of a user's recent foods

Parameters:
localUser - authorized user
fitbitUser - user to retrieve data from
Returns:
list of user's recent foods
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-Recent-Foods

getFrequentFoods

public List<LoggedFood> getFrequentFoods(LocalUserDetail localUser,
                                         FitbitUser fitbitUser)
                                  throws FitbitAPIException
Get a list of a user's frequent foods

Parameters:
localUser - authorized user
fitbitUser - user to retrieve data from
Returns:
list of user's frequent foods
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-Frequent-Foods

searchFoods

public List<Food> searchFoods(LocalUserDetail localUser,
                              String query)
                       throws FitbitAPIException
Given a search query, get a list of public foods from Fitbit foods database and private foods the user created

Parameters:
localUser - authorized user
query - search query
Returns:
list of food search results
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Search-Foods

getFood

public Food getFood(LocalUserDetail localUser,
                    Long foodId)
             throws FitbitAPIException
Get the details of a specific food in Fitbit Food database (or private food for the user)

Parameters:
localUser - authorized user
foodId - Food id
Returns:
food description
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-Food

getFoodUnits

public List<FoodUnit> getFoodUnits()
                            throws FitbitAPIException
Get list of all valid Fitbit food units

Returns:
list of valid food units
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-Food-Units

logFood

public FoodLog logFood(LocalUserDetail localUser,
                       long foodId,
                       int mealTypeId,
                       int unitId,
                       String amount,
                       org.joda.time.LocalDate date)
                throws FitbitAPIException
Create log entry for a food

Parameters:
localUser - authorized user
foodId - Food id
mealTypeId - Meal type id
unitId - Unit id
amount - Amount consumed
date - Log entry date
Returns:
new food log entry
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Log-Food

logFood

public FoodLog logFood(LocalUserDetail localUser,
                       String foodName,
                       String brandName,
                       NutritionalValuesEntry nutritionalValuesEntry,
                       int mealTypeId,
                       int unitId,
                       String amount,
                       org.joda.time.LocalDate date)
                throws FitbitAPIException
Create log entry for a food

Parameters:
localUser - authorized user
foodName - Food name
brandName - Brand name
nutritionalValuesEntry - Nutritional Values
mealTypeId - Meal type id
unitId - Unit id
amount - Amount consumed
date - Log entry date
Returns:
new food log entry
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Log-Food

logFood

public FoodLog logFood(LocalUserDetail localUser,
                       List<PostParameter> params)
                throws FitbitAPIException
Create log entry for a food

Parameters:
localUser - authorized user
params - POST request parameters
Returns:
new food log entry
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Log-Food

deleteFoodLog

public void deleteFoodLog(LocalUserDetail localUser,
                          String foodLogId)
                   throws FitbitAPIException
Delete the user's food log entry with the given id

Parameters:
localUser - authorized user
foodLogId - Food log entry id
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Delete-Food-Log

addFavoriteFood

public void addFavoriteFood(LocalUserDetail localUser,
                            String foodId)
                     throws FitbitAPIException
Add the food with the given id to user's list of favorite foods

Parameters:
localUser - authorized user
foodId - Food id
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Add-Favorite-Food

deleteFavoriteFood

public void deleteFavoriteFood(LocalUserDetail localUser,
                               String foodId)
                        throws FitbitAPIException
Delete the food with the given id from user's list of favorite foods

Parameters:
localUser - authorized user
foodId - Food id
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Delete-Favorite-Food

getMeals

public List<Meal> getMeals(LocalUserDetail localUser)
                    throws FitbitAPIException
Get a list of meals created by user

Parameters:
localUser - authorized user
Returns:
list of meals
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-Meals

getDevices

public List<Device> getDevices(LocalUserDetail localUser)
                        throws FitbitAPIException
Retrieves the list of Fitbit devices for a user

Parameters:
localUser - authorized user
Returns:
list of devices
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-Devices

getDevice

public Device getDevice(LocalUserDetail localUser,
                        String deviceId)
                 throws FitbitAPIException
Retrieve the attributes of user's Fitbit device

Parameters:
localUser - authorized user
deviceId - device id
Returns:
device
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-Device

getScales

public List<Scale> getScales(LocalUserDetail localUser)
                      throws FitbitAPIException
Retrieves the list of user's scales

Parameters:
localUser - authorized user
Returns:
list of user's scales
Throws:
FitbitAPIException - Fitbit API Exception

getScale

public Scale getScale(LocalUserDetail localUser,
                      String deviceId)
               throws FitbitAPIException
Retrieve the attributes of user's scale

Parameters:
localUser - authorized user
deviceId - scale serial number
Returns:
scale info
Throws:
FitbitAPIException - Fitbit API Exception

updateScaleSettings

public Scale updateScaleSettings(LocalUserDetail localUser,
                                 String deviceId,
                                 String name,
                                 UnitSystem unitSystem,
                                 Integer brightness)
                          throws FitbitAPIException
Update scale settings

Parameters:
localUser - authorized user
deviceId - scale device id
name - scale name
unitSystem - unit system
brightness - brightness
Returns:
scale info
Throws:
FitbitAPIException - Fitbit API Exception

getScaleUsers

public List<ScaleUser> getScaleUsers(LocalUserDetail localUser,
                                     String deviceId)
                              throws FitbitAPIException
Throws:
FitbitAPIException

updateScaleUser

public ScaleUser updateScaleUser(LocalUserDetail localUser,
                                 String deviceId,
                                 String scaleUserName,
                                 BodyType bodyType)
                          throws FitbitAPIException
Throws:
FitbitAPIException

deleteScaleUser

public void deleteScaleUser(LocalUserDetail localUser,
                            String deviceId,
                            FitbitUser fitbitUser)
                     throws FitbitAPIException
Throws:
FitbitAPIException

inviteUsersToScale

public List<ScaleInviteSendingResult> inviteUsersToScale(LocalUserDetail localUser,
                                                         String deviceId,
                                                         String invitedUserEmails,
                                                         String message)
                                                  throws FitbitAPIException
Throws:
FitbitAPIException

getScaleInvites

public List<ScaleInvite> getScaleInvites(LocalUserDetail localUser,
                                         String deviceId)
                                  throws FitbitAPIException
Throws:
FitbitAPIException

deleteScaleInvite

public void deleteScaleInvite(LocalUserDetail localUser,
                              String deviceId,
                              Long invite)
                       throws FitbitAPIException
Throws:
FitbitAPIException

getScaleMeasurementLogs

public List<ScaleMeasurementLog> getScaleMeasurementLogs(LocalUserDetail localUser,
                                                         String deviceId,
                                                         org.joda.time.LocalDate startDate,
                                                         TimePeriod timePeriod)
                                                  throws FitbitAPIException
Throws:
FitbitAPIException

getScaleMeasurementLogs

public List<ScaleMeasurementLog> getScaleMeasurementLogs(LocalUserDetail localUser,
                                                         String deviceId,
                                                         org.joda.time.LocalDate startDate,
                                                         org.joda.time.LocalDate endDate)
                                                  throws FitbitAPIException
Throws:
FitbitAPIException

reassignScaleMeasurementLogToUser

public ScaleMeasurementLog reassignScaleMeasurementLogToUser(LocalUserDetail localUser,
                                                             String deviceId,
                                                             Long scaleMeasurementLodId,
                                                             FitbitUser fitbitUser)
                                                      throws FitbitAPIException
Throws:
FitbitAPIException

assignScaleMeasurementLogToGuest

public ScaleMeasurementLog assignScaleMeasurementLogToGuest(LocalUserDetail localUser,
                                                            String deviceId,
                                                            Long scaleMeasurementLodId)
                                                     throws FitbitAPIException
Throws:
FitbitAPIException

deleteScaleMeasurementLog

public void deleteScaleMeasurementLog(LocalUserDetail localUser,
                                      String deviceId,
                                      Long scaleMeasurementLodId)
                               throws FitbitAPIException
Throws:
FitbitAPIException

getCollectionResponseForDate

public Response getCollectionResponseForDate(LocalUserDetail localUser,
                                             FitbitUser fitbitUser,
                                             APICollectionType type,
                                             org.joda.time.LocalDate date)
                                      throws FitbitAPIException
Throws:
FitbitAPIException

getCollectionResponseForProperty

public Response getCollectionResponseForProperty(LocalUserDetail localUser,
                                                 FitbitUser fitbitUser,
                                                 APICollectionType type,
                                                 ApiCollectionProperty property)
                                          throws FitbitAPIException
Throws:
FitbitAPIException

getCollectionForDate

public Object getCollectionForDate(LocalUserDetail localUser,
                                   FitbitUser fitbitUser,
                                   APICollectionType type,
                                   org.joda.time.LocalDate date)
                            throws FitbitAPIException
Throws:
FitbitAPIException

getWeight

public double getWeight(LocalUserDetail localUser,
                        FitbitUser fitbitUser,
                        org.joda.time.LocalDate date)
                 throws FitbitAPIException
Retrieve a user's body measurements for a given day

Parameters:
localUser - authorized user
fitbitUser - user to retrieve data from
date - day to retrieve data for
Returns:
body measurements for a give date
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-Body-Measurements

getWeight

@Deprecated
public double getWeight(LocalUserDetail localUser,
                                   String date)
                 throws FitbitAPIException
Deprecated. 

Retrieve a user's body measurements for a given day

Parameters:
localUser - authorized user
date - day to retrieve data for
Returns:
body measurements for a give date
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-Body-Measurements

getBody

public Body getBody(LocalUserDetail localUser,
                    FitbitUser fitbitUser,
                    org.joda.time.LocalDate date)
             throws FitbitAPIException
Get a summary of a user's body measurements for a given day

Parameters:
localUser - authorized user
fitbitUser - user to retrieve data from
date - day to retrieve data for
Returns:
body measurements for a give date
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-Body-Measurements

getBody

public Body getBody(LocalUserDetail localUser,
                    String date)
             throws FitbitAPIException
Get a summary of a user's body measurements for a given day

Parameters:
localUser - authorized user
date - day to retrieve data for
Returns:
body measurements for a give date
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-Body-Measurements

getBodyWithGoals

public BodyWithGoals getBodyWithGoals(LocalUserDetail localUser,
                                      String date)
                               throws FitbitAPIException
Throws:
FitbitAPIException

getBodyWithGoals

public BodyWithGoals getBodyWithGoals(LocalUserDetail localUser,
                                      FitbitUser fitbitUser,
                                      org.joda.time.LocalDate date)
                               throws FitbitAPIException
Throws:
FitbitAPIException

logBody

public Body logBody(LocalUserDetail localUser,
                    Body body,
                    org.joda.time.LocalDate date)
             throws FitbitAPIException
Get a summary of a user's body measurements for a given day

Parameters:
localUser - authorized user
body - updated body measurements
date - day to retrieve data for
Returns:
updated body measurements for selected date
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Log-Body-Measurements

logBody

public Body logBody(LocalUserDetail localUser,
                    List<PostParameter> params)
             throws FitbitAPIException
Throws:
FitbitAPIException

logWeight

@Deprecated
public void logWeight(LocalUserDetail localUser,
                                 float weight,
                                 org.joda.time.LocalDate date)
               throws FitbitAPIException
Deprecated. 

Log weight

Parameters:
localUser - authorized user
weight - Weight
date - Log entry date
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Log-Body-Measurements

logWater

public WaterLog logWater(LocalUserDetail localUser,
                         float amount,
                         VolumeUnits volumeUnit,
                         org.joda.time.LocalDate date)
                  throws FitbitAPIException
Create log entry for a water in custom volume units

Parameters:
localUser - authorized user
amount - Amount consumed
date - Log entry date
volumeUnit - Custom volume unit
Returns:
new water log entry
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Log-Water

logWater

public WaterLog logWater(LocalUserDetail localUser,
                         float amount,
                         org.joda.time.LocalDate date)
                  throws FitbitAPIException
Create log entry for a water

Parameters:
localUser - authorized user
amount - Amount consumed
date - Log entry date
Returns:
new water log entry
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Log-Water

logWater

public WaterLog logWater(LocalUserDetail localUser,
                         List<PostParameter> params)
                  throws FitbitAPIException
Throws:
FitbitAPIException

getLoggedWater

public Water getLoggedWater(LocalUserDetail localUser,
                            FitbitUser fitbitUser,
                            org.joda.time.LocalDate date)
                     throws FitbitAPIException
Get a summary and list of a user's water log entries for a given day

Parameters:
localUser - authorized user
fitbitUser - user to retrieve data from
date - date to retrieve data for
Returns:
water for a given day
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-Water

deleteWater

public void deleteWater(LocalUserDetail localUser,
                        String logWaterId)
                 throws FitbitAPIException
Delete user's water log entry with the given id

Parameters:
localUser - authorized user
logWaterId - Water log entry id
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Delete-Water-Log

logBp

public BpLog logBp(LocalUserDetail localUser,
                   int systolic,
                   int diastolic,
                   org.joda.time.LocalDate date,
                   String time)
            throws FitbitAPIException
Create log entry for a blood pressure measurement

Parameters:
localUser - authorized user
systolic - Systolic blood pressure
diastolic - Diastolic blood pressure
date - Log entry date
time - Log entry time string
Returns:
new blood pressure log entry
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Log-Blood-Pressure

logBp

public BpLog logBp(LocalUserDetail localUser,
                   int systolic,
                   int diastolic,
                   org.joda.time.LocalDate date)
            throws FitbitAPIException
Create log entry for a blood pressure measurement

Parameters:
localUser - authorized user
systolic - Systolic blood pressure
diastolic - Diastolic blood pressure
date - Log entry date
Returns:
new blood pressure log entry
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Log-Blood-Pressure

logBp

public BpLog logBp(LocalUserDetail localUser,
                   List<PostParameter> params)
            throws FitbitAPIException
Throws:
FitbitAPIException

getLoggedBp

public Bp getLoggedBp(LocalUserDetail localUser,
                      FitbitUser fitbitUser,
                      org.joda.time.LocalDate date)
               throws FitbitAPIException
Get an average and list of a user's blood pressure log entries for a given day

Parameters:
localUser - authorized user
fitbitUser - user to retrieve data from
date - date to retrieve data for
Returns:
blood pressure entries for a given day
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-Blood-Pressure

deleteBp

public void deleteBp(LocalUserDetail localUser,
                     String logId)
              throws FitbitAPIException
Delete user's blood pressure log entry with the given id

Parameters:
localUser - authorized user
logId - Blood pressure log entry id
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Delete-Blood-Pressure-Log

logGlucose

public Glucose logGlucose(LocalUserDetail localUser,
                          String tracker,
                          Float glucose,
                          Float hba1c,
                          org.joda.time.LocalDate date,
                          String time)
                   throws FitbitAPIException
Create log entry for a glucose

Parameters:
localUser - authorized user
tracker - tracker name
glucose - glucose value
hba1c - hba1c value
date - Log entry date
time - Log entry time string
Returns:
new glucose log entry
Throws:
FitbitAPIException - Fitbit API Exception

logGlucose

public Glucose logGlucose(LocalUserDetail localUser,
                          String tracker,
                          Float glucose,
                          Float hba1c,
                          org.joda.time.LocalDate date)
                   throws FitbitAPIException
Create log entry for a glucose

Parameters:
localUser - authorized user
tracker - tracker name
glucose - glucose value
hba1c - hba1c value
date - Log entry date
Returns:
new blood pressure log entry
Throws:
FitbitAPIException - Fitbit API Exception

logGlucose

public Glucose logGlucose(LocalUserDetail localUser,
                          List<PostParameter> params)
                   throws FitbitAPIException
Throws:
FitbitAPIException

getLoggedGlucose

public Glucose getLoggedGlucose(LocalUserDetail localUser,
                                FitbitUser fitbitUser,
                                org.joda.time.LocalDate date)
                         throws FitbitAPIException
Get list of a user's glucose log entries and hba1c for a given day

Parameters:
localUser - authorized user
fitbitUser - user to retrieve data from
date - date to retrieve data for
Returns:
glucose entries for a given day
Throws:
FitbitAPIException - Fitbit API Exception

logHeartRate

public HeartLog logHeartRate(LocalUserDetail localUser,
                             String tracker,
                             int heartRate,
                             org.joda.time.LocalDate date,
                             String time)
                      throws FitbitAPIException
Create log entry for a heart rate

Parameters:
localUser - authorized user
tracker - Tracker name
heartRate - Heart rate
date - Log entry date
time - Log entry time string
Returns:
new heart rate log entry
Throws:
FitbitAPIException - Fitbit API Exception

logHeartRate

public HeartLog logHeartRate(LocalUserDetail localUser,
                             String tracker,
                             int heartRate,
                             org.joda.time.LocalDate date)
                      throws FitbitAPIException
Create log entry for a heart rate

Parameters:
localUser - authorized user
tracker - Tracker name
heartRate - Heart rate
date - Log entry date
Returns:
new heart rate log entry
Throws:
FitbitAPIException - Fitbit API Exception

logHeartRate

public HeartLog logHeartRate(LocalUserDetail localUser,
                             List<PostParameter> params)
                      throws FitbitAPIException
Throws:
FitbitAPIException

getLoggedHeartRate

public Heart getLoggedHeartRate(LocalUserDetail localUser,
                                FitbitUser fitbitUser,
                                org.joda.time.LocalDate date)
                         throws FitbitAPIException
Get an average and list of a user's heart rate log entries for a given day

Parameters:
localUser - authorized user
fitbitUser - user to retrieve data from
date - date to retrieve data for
Returns:
heart rate entries for a given day
Throws:
FitbitAPIException - Fitbit API Exception

deleteHeartRate

public void deleteHeartRate(LocalUserDetail localUser,
                            String logId)
                     throws FitbitAPIException
Delete user's heart rate log entry with the given id

Parameters:
localUser - authorized user
logId - Heart rate log entry id
Throws:
FitbitAPIException - Fitbit API Exception

getUserInfo

public UserInfo getUserInfo(LocalUserDetail localUser)
                     throws FitbitAPIException
Get a user's profile

Parameters:
localUser - authorized user
Returns:
profile of a user
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-User-Info

getUserInfo

public UserInfo getUserInfo(LocalUserDetail localUser,
                            FitbitUser fitbitUser)
                     throws FitbitAPIException
Get a user's profile

Parameters:
localUser - authorized user
fitbitUser - user to retrieve data from
Returns:
profile of a user
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-User-Info

updateUserInfo

public UserInfo updateUserInfo(LocalUserDetail localUser,
                               List<PostParameter> params)
                        throws FitbitAPIException
Update user's profile

Parameters:
localUser - authorized user
params - list of values to update
Returns:
updated profile of a user
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Update-User-Info

inviteByUserId

public void inviteByUserId(LocalUserDetail localUser,
                           String invitedUserId)
                    throws FitbitAPIException
Invite another user to be a friend given his userId

Parameters:
localUser - authorized user
invitedUserId - invited user id
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Create-Invite

inviteByEmail

public void inviteByEmail(LocalUserDetail localUser,
                          String invitedUserEmail)
                   throws FitbitAPIException
Invite another user to be a friend given his email

Parameters:
localUser - authorized user
invitedUserEmail - invited user's email
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Create-Invite

acceptInvitationFromUser

public void acceptInvitationFromUser(LocalUserDetail localUser,
                                     FitbitUser fitbitUser)
                              throws FitbitAPIException
Accept friend invitation from another user

Parameters:
localUser - authorized user
fitbitUser - inviting user
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Accept-Invite

rejectInvitationFromUser

public void rejectInvitationFromUser(LocalUserDetail localUser,
                                     FitbitUser fitbitUser)
                              throws FitbitAPIException
Reject friend invitation from another user

Parameters:
localUser - authorized user
fitbitUser - inviting user
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Accept-Invite

getSleep

public Sleep getSleep(LocalUserDetail localUser,
                      FitbitUser fitbitUser,
                      org.joda.time.LocalDate date)
               throws FitbitAPIException
Get a summary and list of a user's sleep log entries for a given day

Parameters:
localUser - authorized user
fitbitUser - user to retrieve data from
date - date to retrieve data for
Returns:
sleep for a given day
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-Sleep

logSleep

public SleepLog logSleep(LocalUserDetail localUser,
                         org.joda.time.LocalDate date,
                         org.joda.time.LocalTime startTime,
                         long duration)
                  throws FitbitAPIException
Create log entry for a sleep

Parameters:
localUser - authorized user
date - Log entry date
startTime - Start time
duration - Duration
Returns:
new sleep log entry
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Log-Sleep

deleteSleepLog

public void deleteSleepLog(LocalUserDetail localUser,
                           Long sleepLogId)
                    throws FitbitAPIException
Delete user's sleep log entry with the given id

Parameters:
localUser - authorized user
sleepLogId - Sleep log entry id
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Delete-Sleep-Log

getFriends

public List<UserInfo> getFriends(LocalUserDetail localUser)
                          throws FitbitAPIException
Get a list of user's friends

Parameters:
localUser - authorized user
Returns:
list of user's friends
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-Friends

getFriends

public List<UserInfo> getFriends(FitbitUser owner)
                          throws FitbitAPIException
Get a list of user's friends

Parameters:
owner - user to retrieve data from
Returns:
list of user's friends
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-Friends

getFriends

public List<UserInfo> getFriends(LocalUserDetail localUser,
                                 FitbitUser owner)
                          throws FitbitAPIException
Get a list of user's friends

Parameters:
localUser - authorized user
owner - user to retrieve data from
Returns:
list of user's friends
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-Friends

getFriendsLeaderboard

public List<FriendStats> getFriendsLeaderboard(LocalUserDetail localUser,
                                               TimePeriod timePeriod)
                                        throws FitbitAPIException
Get a leaderboard of user's friends progress

Parameters:
localUser - authorized user
timePeriod - leaderboard time period (currently support only TimePeriod.SEVEN_DAYS and TimePeriod.THIRTY_DAYS)
Returns:
list of user friend's stats
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-Friends-Leaderboard

getClientRateLimitStatus

public ApiRateLimitStatus getClientRateLimitStatus()
                                            throws FitbitAPIException
Get Rate Limiting Quota left for the Client

Returns:
quota
Throws:
FitbitAPIException - Fitbit API Exception

getClientAndViewerRateLimitStatus

public ApiRateLimitStatus getClientAndViewerRateLimitStatus(LocalUserDetail localUser)
                                                     throws FitbitAPIException
Get Rate Limiting Quota left for the Client+Viewer

Parameters:
localUser - authorized user
Returns:
quota
Throws:
FitbitAPIException - Fitbit API Exception

getRateLimitStatus

public ApiRateLimitStatus getRateLimitStatus(ApiQuotaType quotaType)
                                      throws FitbitAPIException
Throws:
FitbitAPIException

subscribe

public SubscriptionDetail subscribe(String subscriberId,
                                    LocalUserDetail localUser,
                                    FitbitUser fitbitUser)
                             throws FitbitAPIException
Adds a subscription to all user's collections

Parameters:
subscriberId - ID of a subscriber for this subscription, defined on dev.fitbit.com
localUser - authorized user
fitbitUser - user to subscribe to
Returns:
details of a new subscription
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: Subscriptions-API

subscribe

public SubscriptionDetail subscribe(String subscriberId,
                                    LocalUserDetail localUser,
                                    FitbitUser fitbitUser,
                                    APICollectionType collectionType)
                             throws FitbitAPIException
Adds a subscription to user's collection

Parameters:
subscriberId - ID of a subscriber for this subscription, defined on dev.fitbit.com
localUser - authorized user
fitbitUser - user to subscribe to
collectionType - type of a collection to subscribe to
Returns:
details of a new subscription
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: Subscriptions-API

subscribe

public SubscriptionDetail subscribe(String subscriberId,
                                    LocalUserDetail localUser,
                                    FitbitUser fitbitUser,
                                    String subscriptionId)
                             throws FitbitAPIException
Adds a subscription with given id to all user's collections

Parameters:
subscriberId - ID of a subscriber for this subscription, defined on dev.fitbit.com
localUser - authorized user
fitbitUser - user to subscribe to
subscriptionId - The ID of the subscription that makes sense to your application
Returns:
details of a new subscription
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: Subscriptions-API

subscribe

public SubscriptionDetail subscribe(String subscriberId,
                                    LocalUserDetail localUser,
                                    FitbitUser fitbitUser,
                                    APICollectionType collectionType,
                                    String subscriptionId)
                             throws FitbitAPIException
Adds a subscription with given id to user's collection

Parameters:
subscriberId - ID of a subscriber for this subscription, defined on dev.fitbit.com
localUser - authorized user
fitbitUser - user to subscribe to
collectionType - type of a collection to subscribe to
subscriptionId - The ID of the subscription that makes sense to your application
Returns:
details of a new subscription
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: Subscriptions-API

unsubscribe

public void unsubscribe(String subscriberId,
                        LocalUserDetail localUser,
                        FitbitUser fitbitUser,
                        String subscriptionId)
                 throws FitbitAPIException
Removes a subscription with given id from all user's collections

Parameters:
subscriberId - ID of a subscriber for this subscription, defined on dev.fitbit.com
localUser - authorized user
fitbitUser - user to subscribe to
subscriptionId - The ID of the subscription
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: Subscriptions-API

unsubscribe

public void unsubscribe(String subscriberId,
                        LocalUserDetail localUser,
                        FitbitUser fitbitUser,
                        APICollectionType collectionType,
                        String subscriptionId)
                 throws FitbitAPIException
Removes a subscription with given id from user's collection

Parameters:
subscriberId - ID of a subscriber for this subscription, defined on dev.fitbit.com
localUser - authorized user
fitbitUser - user to subscribe to
collectionType - type of a collection to unsubscribe from
subscriptionId - The ID of the subscription
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: Subscriptions-API

nullSafeSubscribe

protected SubscriptionDetail nullSafeSubscribe(String subscriberId,
                                               LocalUserDetail localUser,
                                               FitbitUser fitbitUser,
                                               APICollectionType collectionType,
                                               String subscriptionId)
                                        throws FitbitAPIException
Throws:
FitbitAPIException

nullSafeUnsubscribe

protected void nullSafeUnsubscribe(String subscriberId,
                                   LocalUserDetail localUser,
                                   FitbitUser fitbitUser,
                                   APICollectionType collectionType,
                                   String subscriptionId)
                            throws FitbitAPIException
Throws:
FitbitAPIException

getSubscriptions

public List<ApiSubscription> getSubscriptions(LocalUserDetail localUser)
                                       throws FitbitAPIException
Throws:
FitbitAPIException

getSubscriptions

public List<ApiSubscription> getSubscriptions(LocalUserDetail localUser,
                                              APICollectionType collectionType)
                                       throws FitbitAPIException
Throws:
FitbitAPIException

getTimeSeries

public List<Data> getTimeSeries(FitbitUser user,
                                TimeSeriesResourceType resourceType,
                                org.joda.time.LocalDate startDate,
                                TimePeriod period)
                         throws FitbitAPIException
Get time series in the specified range for a given resource of a user (as an unauthorized)

Parameters:
user - user to fetch data from
resourceType - type of a resource
startDate - End date of a time range
period - Depth of a time range
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-Time-Series

getTimeSeries

public List<Data> getTimeSeries(FitbitUser user,
                                TimeSeriesResourceType resourceType,
                                String startDate,
                                TimePeriod period)
                         throws FitbitAPIException
Get time series in the specified range for a given resource of a user (as an unauthorized)

Parameters:
user - user to fetch data from
resourceType - type of a resource
startDate - End date of a time range
period - Depth of a time range
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-Time-Series

getTimeSeries

public List<Data> getTimeSeries(FitbitUser user,
                                TimeSeriesResourceType resourceType,
                                org.joda.time.LocalDate startDate,
                                org.joda.time.LocalDate endDate)
                         throws FitbitAPIException
Get time series in the specified range for a given resource of a user (as an unauthorized)

Parameters:
user - user to fetch data from
resourceType - type of a resource
startDate - Start date of a time range
endDate - End date of a time range
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-Time-Series

getTimeSeries

public List<Data> getTimeSeries(LocalUserDetail localUser,
                                FitbitUser user,
                                TimeSeriesResourceType resourceType,
                                org.joda.time.LocalDate startDate,
                                TimePeriod period)
                         throws FitbitAPIException
Get time series in the specified range for a given resource of a user

Parameters:
localUser - authorized user
user - user to fetch data from
resourceType - type of a resource
startDate - End date of a time range
period - Depth of a time range
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-Time-Series

getTimeSeries

public List<Data> getTimeSeries(LocalUserDetail localUser,
                                FitbitUser user,
                                TimeSeriesResourceType resourceType,
                                String startDate,
                                TimePeriod period)
                         throws FitbitAPIException
Get time series in the specified range for a given resource of a user

Parameters:
localUser - authorized user
user - user to fetch data from
resourceType - type of a resource
startDate - End date of a time range
period - Depth of a time range
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-Time-Series

getTimeSeries

public List<Data> getTimeSeries(LocalUserDetail localUser,
                                FitbitUser user,
                                TimeSeriesResourceType resourceType,
                                org.joda.time.LocalDate startDate,
                                org.joda.time.LocalDate endDate)
                         throws FitbitAPIException
Get time series in the specified range for a given resource of a user

Parameters:
localUser - authorized user
user - user to fetch data from
resourceType - type of a resource
startDate - Start date of a time range
endDate - End date of a time range
Throws:
FitbitAPIException - Fitbit API Exception
See Also:
Fitbit API: API-Get-Time-Series

getTimeSeries

public List<Data> getTimeSeries(LocalUserDetail localUser,
                                FitbitUser user,
                                TimeSeriesResourceType resourceType,
                                String startDate,
                                String periodOrEndDate)
                         throws FitbitAPIException
Throws:
FitbitAPIException

getIntraDayTimeSeries

public IntradaySummary getIntraDayTimeSeries(LocalUserDetail localUser,
                                             FitbitUser user,
                                             TimeSeriesResourceType resourceType,
                                             org.joda.time.LocalDate date,
                                             org.joda.time.LocalTime startTime,
                                             org.joda.time.LocalTime endTime)
                                      throws FitbitAPIException
Throws:
FitbitAPIException

getIntraDayTimeSeries

public IntradaySummary getIntraDayTimeSeries(LocalUserDetail localUser,
                                             FitbitUser user,
                                             TimeSeriesResourceType resourceType,
                                             String date,
                                             String startTime,
                                             String endTime)
                                      throws FitbitAPIException
Throws:
FitbitAPIException

getIntraDayTimeSeries

public IntradaySummary getIntraDayTimeSeries(LocalUserDetail localUser,
                                             FitbitUser user,
                                             TimeSeriesResourceType resourceType,
                                             org.joda.time.LocalDate date)
                                      throws FitbitAPIException
Throws:
FitbitAPIException

getIntraDayTimeSeries

public IntradaySummary getIntraDayTimeSeries(LocalUserDetail localUser,
                                             FitbitUser user,
                                             TimeSeriesResourceType resourceType,
                                             String date)
                                      throws FitbitAPIException
Throws:
FitbitAPIException

setAccessToken

protected void setAccessToken(LocalUserDetail localUser)

clearAccessToken

protected void clearAccessToken()

httpGet

protected Response httpGet(String url,
                           boolean authenticate)
                    throws FitbitAPIException
Issues an HTTP GET request.

Parameters:
url - the request url
authenticate - if true, the request will be sent with BASIC authentication header
Returns:
the response
Throws:
FitbitAPIException - when Fitbit service or network is unavailable

httpGet

protected Response httpGet(String url,
                           String name1,
                           String value1,
                           boolean authenticate)
                    throws FitbitAPIException
Issues an HTTP GET request.

Parameters:
url - the request url
authenticate - if true, the request will be sent with BASIC authentication header
name1 - the name of the first parameter
value1 - the value of the first parameter
Returns:
the response
Throws:
FitbitAPIException - when Fitbit service or network is unavailable

httpGet

protected Response httpGet(String url,
                           String name1,
                           String value1,
                           String name2,
                           String value2,
                           boolean authenticate)
                    throws FitbitAPIException
Issues an HTTP GET request.

Parameters:
url - the request url
name1 - the name of the first parameter
value1 - the value of the first parameter
name2 - the name of the second parameter
value2 - the value of the second parameter
authenticate - if true, the request will be sent with BASIC authentication header
Returns:
the response
Throws:
FitbitAPIException - when Fitbit service or network is unavailable

httpGet

protected Response httpGet(String url,
                           PostParameter[] params,
                           boolean authenticate)
                    throws FitbitAPIException
Issues an HTTP GET request.

Parameters:
url - the request url
params - the request parameters
authenticate - if true, the request will be sent with BASIC authentication header
Returns:
the response
Throws:
FitbitAPIException - when Fitbit service or network is unavailable

httpPost

protected Response httpPost(String url,
                            PostParameter[] params,
                            boolean authenticate)
                     throws FitbitAPIException
Throws:
FitbitAPIException

httpDelete

protected Response httpDelete(String url,
                              boolean authenticate)
                       throws FitbitAPIException
Throws:
FitbitAPIException

httpDelete

protected Response httpDelete(String url,
                              PostParameter[] params,
                              boolean authenticate)
                       throws FitbitAPIException
Throws:
FitbitAPIException

appendParamsToUrl

protected static String appendParamsToUrl(String url,
                                          PostParameter[] params)

throwExceptionIfError

public static void throwExceptionIfError(Response res)
                                  throws FitbitAPIException
Throws:
FitbitAPIException

throwExceptionIfError

public static void throwExceptionIfError(Response res,
                                         int expectedStatusCode)
                                  throws FitbitAPIException
Throws:
FitbitAPIException

getErrorMessage

public static String getErrorMessage(Response res)
                              throws FitbitAPIException
Throws:
FitbitAPIException

setLocale

public void setLocale(Locale locale)
Set unit system for future API calls

Parameters:
locale - requested unit system
See Also:
Fitbit API: API-Unit-System

logWeight

public WeightLog logWeight(LocalUserDetail localUser,
                           double weight,
                           org.joda.time.LocalDate date)
                    throws FitbitAPIException
Create log entry for a weight

Parameters:
localUser - authorized user
weight - weight
date - Log entry date
Returns:
new weight log entry
Throws:
FitbitAPIException - Fitbit API Exception

logWeight

public WeightLog logWeight(LocalUserDetail localUser,
                           double weight,
                           org.joda.time.LocalDate date,
                           String time)
                    throws FitbitAPIException
Create log entry for a weight

Parameters:
localUser - authorized user
weight - weight
date - Log entry date
time - Log entry time
Returns:
new weight log entry
Throws:
FitbitAPIException - Fitbit API Exception

logWeight

public WeightLog logWeight(LocalUserDetail localUser,
                           List<PostParameter> params)
                    throws FitbitAPIException
Throws:
FitbitAPIException

getLoggedWeight

public List<WeightLog> getLoggedWeight(LocalUserDetail localUser,
                                       FitbitUser fitbitUser,
                                       org.joda.time.LocalDate date)
                                throws FitbitAPIException
Get list of a user's weight log entries for a given day

Parameters:
localUser - authorized user
fitbitUser - user to retrieve data from
date - date to retrieve data for
Returns:
weight entries for a given day
Throws:
FitbitAPIException - Fitbit API Exception

getLoggedWeight

public List<WeightLog> getLoggedWeight(LocalUserDetail localUser,
                                       FitbitUser fitbitUser,
                                       org.joda.time.LocalDate startDate,
                                       org.joda.time.LocalDate endDate)
                                throws FitbitAPIException
Get list of a user's weight log entries for a given days' range

Parameters:
localUser - authorized user
fitbitUser - user to retrieve data from
startDate - date to retrieve data from
endDate - date to retrieve data to
Returns:
weight entries days' range
Throws:
FitbitAPIException - Fitbit API Exception

getLoggedWeight

public List<WeightLog> getLoggedWeight(LocalUserDetail localUser,
                                       FitbitUser fitbitUser,
                                       org.joda.time.LocalDate endDate,
                                       DataPeriod period)
                                throws FitbitAPIException
Get list of a user's weight log entries for a given days' period

Parameters:
localUser - authorized user
fitbitUser - user to retrieve data from
endDate - date to retrieve data to
period - data period
Returns:
weight entries for a given day
Throws:
FitbitAPIException - Fitbit API Exception

getLoggedWeight

public List<WeightLog> getLoggedWeight(LocalUserDetail localUser,
                                       FitbitUser fitbitUser,
                                       String dateUrl)
                                throws FitbitAPIException
Get list of a user's weight log entries

Parameters:
localUser - authorized user
fitbitUser - user to retrieve data from
dateUrl - date url part
Returns:
weight entries
Throws:
FitbitAPIException - Fitbit API Exception

deleteWeight

public void deleteWeight(LocalUserDetail localUser,
                         String logId)
                  throws FitbitAPIException
Delete user's weight log entry with the given id

Parameters:
localUser - authorized user
logId - Weight log entry id
Throws:
FitbitAPIException - Fitbit API Exception

logFat

public FatLog logFat(LocalUserDetail localUser,
                     double fat,
                     org.joda.time.LocalDate date)
              throws FitbitAPIException
Create log entry for a fat

Parameters:
localUser - authorized user
fat - fat
date - Log entry date
Returns:
new fat log entry
Throws:
FitbitAPIException - Fitbit API Exception

logFat

public FatLog logFat(LocalUserDetail localUser,
                     double fat,
                     org.joda.time.LocalDate date,
                     String time)
              throws FitbitAPIException
Create log entry for a fat

Parameters:
localUser - authorized user
fat - fat
date - Log entry date
time - Log entry time
Returns:
new fat log entry
Throws:
FitbitAPIException - Fitbit API Exception

logFat

public FatLog logFat(LocalUserDetail localUser,
                     List<PostParameter> params)
              throws FitbitAPIException
Throws:
FitbitAPIException

getLoggedFat

public List<FatLog> getLoggedFat(LocalUserDetail localUser,
                                 FitbitUser fitbitUser,
                                 org.joda.time.LocalDate date)
                          throws FitbitAPIException
Get list of a user's fat log entries for a given day

Parameters:
localUser - authorized user
fitbitUser - user to retrieve data from
date - date to retrieve data for
Returns:
fat entries for a given day
Throws:
FitbitAPIException - Fitbit API Exception

getLoggedFat

public List<FatLog> getLoggedFat(LocalUserDetail localUser,
                                 FitbitUser fitbitUser,
                                 org.joda.time.LocalDate startDate,
                                 org.joda.time.LocalDate endDate)
                          throws FitbitAPIException
Get list of a user's fat log entries for a given days' range

Parameters:
localUser - authorized user
fitbitUser - user to retrieve data from
startDate - date to retrieve data from
endDate - date to retrieve data to
Returns:
fat entries days' range
Throws:
FitbitAPIException - Fitbit API Exception

getLoggedFat

public List<FatLog> getLoggedFat(LocalUserDetail localUser,
                                 FitbitUser fitbitUser,
                                 org.joda.time.LocalDate endDate,
                                 DataPeriod period)
                          throws FitbitAPIException
Get list of a user's fat log entries for a given days' period

Parameters:
localUser - authorized user
fitbitUser - user to retrieve data from
endDate - date to retrieve data to
period - data period
Returns:
fat entries for a given day
Throws:
FitbitAPIException - Fitbit API Exception

getLoggedFat

public List<FatLog> getLoggedFat(LocalUserDetail localUser,
                                 FitbitUser fitbitUser,
                                 String dateUrl)
                          throws FitbitAPIException
Get list of a user's fat log entries

Parameters:
localUser - authorized user
fitbitUser - user to retrieve data from
dateUrl - date url part
Returns:
fat entries
Throws:
FitbitAPIException - Fitbit API Exception

deleteFat

public void deleteFat(LocalUserDetail localUser,
                      String logId)
               throws FitbitAPIException
Delete user's fat log entry with the given id

Parameters:
localUser - authorized user
logId - Fat log entry id
Throws:
FitbitAPIException - Fitbit API Exception

setLocalization

public void setLocalization(Locale locale)

setUserAgent

public void setUserAgent(String userAgent)
Sets the User-Agent header. System property -Dfitbit4j.http.userAgent overrides this attribute.

Parameters:
userAgent - new UserAgent

getUserAgent

public String getUserAgent()
Returns:
UserAgent

setClientVersion

public void setClientVersion(String version)
Sets the X-Fitbit-Client-Version header. System property -Dfitbit4j.clientVersion overrides this attribute.

Parameters:
version - client version

getClientVersion

public String getClientVersion()
Fetches the X-Fitbit-Client-Version header. Client version

Returns:
client version

setClientURL

public void setClientURL(String clientURL)
Sets the X-Fitbit-Client-URL header. System property -DFitbit4j.clientURL overrides this attribute.

Parameters:
clientURL - client URL

getClientURL

public String getClientURL()
Returns:
client URL

setUserId

public void setUserId(String userId)
Sets the userid

Parameters:
userId - new userid

getUserId

public String getUserId()
Returns authenticating userid

Returns:
userid

setPassword

public void setPassword(String password)
Sets the password

Parameters:
password - new password

getPassword

public String getPassword()
Returns authenticating password

Returns:
password

setHttpProxy

public void setHttpProxy(String proxyHost,
                         int proxyPort)
Enables use of HTTP proxy

Parameters:
proxyHost - proxy host, can be overridden system property -DFitbit4j.http.proxyHost , -Dhttp.proxyHost
proxyPort - proxy port, can be overridden system property -DFitbit4j.http.proxyPort , -Dhttp.proxyPort

setHttpProxyAuth

public void setHttpProxyAuth(String proxyUser,
                             String proxyPass)
Adds authentication on HTTP proxy

Parameters:
proxyUser - proxy user, can be overridden system property -DFitbit4j.http.proxyUser
proxyPass - proxy password, can be overridden system property -DFitbit4j.http.proxyPassword

setHttpConnectionTimeout

public void setHttpConnectionTimeout(int connectionTimeout)
Sets a specified timeout value, in milliseconds, to be used when opening a communications link to the Fitbit API. System property -DFitbit4j.http.connectionTimeout overrides this attribute.

Parameters:
connectionTimeout - an int that specifies the connect timeout value in milliseconds

setHttpReadTimeout

public void setHttpReadTimeout(int readTimeoutMilliSecs)
Sets the read timeout to a specified timeout, in milliseconds.

Parameters:
readTimeoutMilliSecs - an int that specifies the timeout value to be used in milliseconds

setSource

public void setSource(String source)
Sets X-Fitbit-Client http header and the source parameter that will be passed by updating methods. System property -DFitbit4j.source overrides this attribute. System property -DFitbit4j.source overrides this attribute.

Parameters:
source - the new source

getSource

public String getSource()
Returns the source

Returns:
source

setRequestHeader

public void setRequestHeader(String name,
                             String value)
Sets the request header name/value combination

Parameters:
name - the name of the request header
value - the value of the request header

forceUsePost

public void forceUsePost(boolean forceUsePost)
Deprecated. some methods don't accept POST method anymore

Set true to force using POST method communicating to the server.
This method doesn't take effect anymore

Parameters:
forceUsePost - if true POST method will be used forcibly

isUsePostForced

public boolean isUsePostForced()
Returns:
true if POST is used forcibly

setRetryCount

public void setRetryCount(int retryCount)

setRetryIntervalSecs

public void setRetryIntervalSecs(int retryIntervalSecs)


Copyright © 2012. All Rights Reserved.