class MShealth::Client
Public Instance Methods
activities(start_time:,end_time:,**options)
click to toggle source
# File lib/MShealth/client.rb, line 90 def activities(start_time:,end_time:,**options) query = {} query['startTime'] = start_time.iso8601 query['endTime'] = end_time.iso8601 query['activityTypes'] = options[:activity_types] if options.key?(:activity_types) query = handle_activity_include(query,options) response = response = handle_response("/"+configuration.api_version+"/me/Activities", :headers => {"Authorization" => "bearer "+configuration.token}, :query => query) result = [] types = ['bike','freePlay','golf','guidedWorkout','run','sleep'] result = extract_activities(types,response,result) while response.key?("nextPage") response = handle_response(response['nextPage'],:headers => {"Authorization" => "bearer "+configuration.token}) result = extract_activities(types,response,result) end result end
activity(id:,**options)
click to toggle source
# File lib/MShealth/client.rb, line 78 def activity(id:,**options) query = {} query = handle_activity_include(query,options) response = handle_response("/"+configuration.api_version+"/me/Activities/"+id, :headers => {"Authorization" => "bearer "+configuration.token}, :query => query) MShealth::Mash.new(response) end
configuration()
click to toggle source
# File lib/MShealth/client.rb, line 11 def configuration @configuration ||= Configuration.new end
configure() { |configuration| ... }
click to toggle source
# File lib/MShealth/client.rb, line 15 def configure yield configuration end
device(id:)
click to toggle source
# File lib/MShealth/client.rb, line 35 def device(id:) response = handle_response("/"+configuration.api_version+"/me/Devices/"+id, :headers => {"Authorization" => "bearer "+configuration.token}) MShealth::Mash.new(response) end
devices()
click to toggle source
# File lib/MShealth/client.rb, line 25 def devices response = handle_response("/"+configuration.api_version+"/me/Devices", :headers => {"Authorization" => "bearer "+configuration.token}) devices = [] response['deviceProfiles'].each do |device| devices << MShealth::Mash.new(device) end devices end
profile()
click to toggle source
# File lib/MShealth/client.rb, line 19 def profile response = handle_response("/"+configuration.api_version+"/me/Profile", :headers => {"Authorization" => "bearer "+configuration.token}) MShealth::Mash.new(response) end
summary(period:,start_time:,**options)
click to toggle source
# File lib/MShealth/client.rb, line 41 def summary(period:,start_time:,**options) query = {} query['startTime'] = start_time.iso8601 query['endTime'] = options[:end_time].iso8601 if options.key?(:end_time) query['deviceIds'] = options[:device_id] if options.key?(:device_id) period_str = nil response = nil case period when "hourly" period_str = 'Hourly' when "daily" period_str = 'Daily' else end response = handle_response("/"+configuration.api_version+"/me/Summaries/"+period_str, :headers => {"Authorization" => "bearer "+configuration.token}, :query => query) result = [] response['summaries'].each do |summary| result << MShealth::Mash.new(summary) end while response.key?("nextPage") response = handle_response(response['nextPage'],:headers => {"Authorization" => "bearer "+configuration.token}) response['summaries'].each do |summary| result << MShealth::Mash.new(summary) end end result end
Private Instance Methods
extract_activities(types,response,result)
click to toggle source
# File lib/MShealth/client.rb, line 154 def extract_activities(types,response,result) types.each do |type| name = type + 'Activities' if !response[name].nil? response[name].each do |activity| result << MShealth::Mash.new(activity) end end end result end
handle_activity_include(query,options)
click to toggle source
# File lib/MShealth/client.rb, line 141 def handle_activity_include(query,options) query['activityIncludes'] = "" query['activityIncludes'] += "Details," if options.key?(:details) query['activityIncludes'] += "MinuteSummaries," if options.key?(:minute_summaries) query['activityIncludes'] += "MapPoints," if options.key?(:map_points) if query['activityIncludes'] == "" query.delete('activityIncludes') else query['activityIncludes'] = query['activityIncludes'][0...-1] end query end
handle_response(*args)
click to toggle source
# File lib/MShealth/client.rb, line 117 def handle_response(*args) response = self.class.get(*args) case response.code.to_s when "401" raise MShealth::Errors::UnauthorizedError.new, response when "400" raise MShealth::Errors::BadRequestError.new, response when "403" raise MShealth::Errors::ForbiddenError.new, response when "404" raise MShealth::Errors::NotFoundError.new, response when "429" raise MShealth::Errors::TooManyRequestsError.new, response when "500" raise MShealth::Errors::ServerError.new, response when "200" return response else puts response.code.to_s end end