Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion healthgraph/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,10 @@
FitnessActivity, FitnessActivitySummary,
FitnessActivityFeedItem, FitnessActivityIter,
StrengthActivityFeedItem, StrengthActivityIter,
WeightMeasurementFeedItem, WeightMeasurementIter,)
WeightMeasurementFeedItem, WeightMeasurementIter,
BackgroundActivityFeedItem, BackgroundActivityIter,
NutritionMeasurementFeedItem,NutritionMeasurementIter,
NutritionMeasurement)


__author__ = "Ali Onur Uyar"
Expand Down
131 changes: 130 additions & 1 deletion healthgraph/resources.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down Expand Up @@ -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'),
Expand All @@ -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,
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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',)
Expand Down Expand Up @@ -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,
Expand All @@ -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'),
Expand Down