diff --git a/healthgraph/__init__.py b/healthgraph/__init__.py index 770382d..4390c24 100644 --- a/healthgraph/__init__.py +++ b/healthgraph/__init__.py @@ -18,7 +18,10 @@ FitnessActivity, FitnessActivitySummary, FitnessActivityFeedItem, FitnessActivityIter, StrengthActivityFeedItem, StrengthActivityIter, - WeightMeasurementFeedItem, WeightMeasurementIter,) + WeightMeasurementFeedItem, WeightMeasurementIter, + BackgroundActivityFeedItem, BackgroundActivityIter, + NutritionMeasurementFeedItem,NutritionMeasurementIter, + NutritionMeasurement) __author__ = "Ali Onur Uyar" diff --git a/healthgraph/resources.py b/healthgraph/resources.py index 23acde4..d23450d 100644 --- a/healthgraph/resources.py +++ b/healthgraph/resources.py @@ -89,6 +89,8 @@ def __init__(self, session=None): def _get_resource_data(self, resource, content_type, params=None): resp = self._session.get(resource, content_type, params) + print "_get_resource_data",resource, content_type, params + print resp return resp.json() # TODO - Error Checking def _get_linked_resource(self, link, cls_override=None, **kwargs): @@ -311,6 +313,7 @@ class User(Resource): _prop_defs = {'userID': None, 'profile': PropResourceLink('Profile'), 'settings': PropResourceLink('Settings'), + 'fitness': PropResourceLink('FitnessActivity'), 'fitness_activities': PropResourceLink('FitnessActivityIter'), 'strength_training_activities': PropResourceLink('StrengthActivityIter'), 'background_activities': PropResourceLink('BackgroundActivityIter'), @@ -336,6 +339,16 @@ def get_settings(self): def get_records(self): return self._get_linked_resource(self._prop_dict['records']) + def get_fitness_activity(self, + date_min=None, date_max=None, + mod_date_min=None, mod_date_max=None, + descending=True): + return self._get_linked_resource(self._prop_dict['fitness'], + date_min=date_min, + date_max=date_max, + mod_date_min=mod_date_min, + mod_date_max=mod_date_max, + descending=descending) def get_fitness_activity_iter(self, date_min=None, date_max=None, mod_date_min=None, mod_date_max=None, @@ -380,6 +393,28 @@ def get_sleep_measurement_iter(self, mod_date_max=mod_date_max, descending=descending) + def get_background_activity_measurement_iter(self, + date_min=None, date_max=None, + mod_date_min=None, mod_date_max=None, + descending=True): + return self._get_linked_resource(self._prop_dict['background_activities'], + date_min=date_min, + date_max=date_max, + mod_date_min=mod_date_min, + mod_date_max=mod_date_max, + descending=descending) + + def get_nutrition_measurement_iter(self, + date_min=None, date_max=None, + mod_date_min=None, mod_date_max=None, + descending=True): + return self._get_linked_resource(self._prop_dict['nutrition'], + date_min=date_min, + date_max=date_max, + mod_date_min=mod_date_min, + mod_date_max=mod_date_max, + descending=descending) + class Profile(Resource): _content_type = content_types.PROFILE @@ -536,6 +571,7 @@ class FitnessActivity(Resource): 'nearest_teammate_general_measurements': None, 'nearest_diabetes': None, 'nearest_teammate_diabetes': None, + 'utc_offset':None } _prop_main = ('type', 'start_time',) @@ -670,7 +706,7 @@ def __init__(self, data, session=None): class WeightMeasurementIter(ResourceFeedIter): - _content_type = content_types.WEIGHT_MEASUREMENT_FEED + _content_type = content_types.WEIGHT_MEASUREMENT_FEED#WeightSetFeed _item_cls = WeightMeasurementFeedItem def __init__(self, resource, @@ -687,6 +723,99 @@ def __init__(self, resource, session=session) +class BackgroundActivityFeedItem(FeedItem): + + _prop_defs = {'uri': PropResourceLink('BackgroundActivity'), + 'timestamp': parse_datetime, + 'calories_burned': float, + 'steps': float, + } + _prop_main = ('timestamp',) + + def __init__(self, data, session=None): + super(WeightMeasurementFeedItem, self).__init__(data, session=session) + + +class BackgroundActivityIter(ResourceFeedIter): + + _content_type = content_types.BACKGROUND_ACTIVITY_FEED + _item_cls = BackgroundActivityFeedItem + + def __init__(self, resource, + date_min=None, date_max=None, + mod_date_min=None, mod_date_max=None, + descending=True, + session=None): + super(BackgroundActivityIter, self).__init__(resource, + date_min=date_min, + date_max=date_max, + mod_date_min=mod_date_min, + mod_date_max=mod_date_max, + descending=descending, + session=session) +class NutritionMeasurementFeedItem(FeedItem): + + _prop_defs = {'uri': PropResourceLink('NutritionMeasurement'), + 'timestamp': parse_datetime, + 'calories': float, + 'carbohydrates': float, + 'fat':float, + 'fiber':float, + 'protein':float, + 'sodium':float, + 'water':float + } + _prop_main = ('timestamp',) + + def __init__(self, data, session=None): + super(NutritionMeasurementFeedItem, self).__init__(data, session=session) + + + +class NutritionMeasurementIter(ResourceFeedIter): + + _content_type = content_types.NUTRITION_MEASUREMENT_FEED + _item_cls = NutritionMeasurementFeedItem + + def __init__(self, resource, + date_min=None, date_max=None, + mod_date_min=None, mod_date_max=None, + descending=True, + session=None): + super(NutritionMeasurementIter, self).__init__(resource, + date_min=date_min, + date_max=date_max, + mod_date_min=mod_date_min, + mod_date_max=mod_date_max, + descending=descending, + session=session) +class NutritionMeasurement(Resource): + + _content_type = content_types.NUTRITION_MEASUREMENT + _prop_defs = {'uri': PropResourceLink('NutritionMeasurement'), + 'userID': int, + 'timestamp': parse_datetime, + 'calories': float, + 'carbohydrates': float, + 'fat':float, + 'fiber':float, + 'protein':float, + 'sodium':float, + 'water':float, + "meal": str, + "source": str + #todo add more fields + } + _prop_main = ('timestamp',) + + + def __init__(self, resource, session=None): + super(NutritionMeasurement, self).__init__(resource, session=session) + + def get_activity_detail(self): + return self._get_linked_resource(self._prop_dict['uri']) + + class SleepMeasurementFeedItem(FeedItem): _prop_defs = {'uri': PropResourceLink('SleepMeasurement'),