class V2Intuity::Streams::Stream
Attributes
name[RW]
resource_filters[RW]
start_date[RW]
stream_id[RW]
Public Class Methods
new(options = {})
click to toggle source
# File lib/v2_intuity/streams/stream.rb, line 6 def initialize(options = {}) @name = options[:name] @start_date = options.fetch(:start_date, Time.now.strftime('%Y-%m-%d')) @resource_filters = format_resource_filters(options.fetch(:resource_filters, nil)) @stream_id = options[:stream_id] end
Public Instance Methods
send_request(method, client, query_filters = [])
click to toggle source
# File lib/v2_intuity/streams/stream.rb, line 14 def send_request(method, client, query_filters = []) return 'StreamApi client is requied' unless client.class == V2Intuity::Clients::StreamApi endpoint, options = build_options(method, query_filters) client.build_and_send_request(endpoint, options) end
Private Instance Methods
build_options(method, query_filters = [])
click to toggle source
# File lib/v2_intuity/streams/stream.rb, line 23 def build_options(method, query_filters = []) query_filters = query_filters.is_a?(Array) ? query_filters : [query_filters] case method when V2Intuity::Request::METHODS[:delete] raise 'stream id is needed' unless stream_id options = { method: method, id: stream_id } when V2Intuity::Request::METHODS[:get] options = { method: method, id: stream_id} # id can be blank when getting all streams when V2Intuity::Request::METHODS[:post] raise 'name is required' unless name body = { name: name, start_date: start_date, resource_filters: resource_filters }.delete_if {|k,v| v.nil?} # supported resource_query_filters include measurement, nutrition, sleep, workout options = { method: method, body: body.delete_if {|k,v| v.nil?} } when V2Intuity::Request::METHODS[:put] raise 'stream id is needed' unless stream_id body = { name: name } options = { method: method, body: body.delete_if {|k,v| v.nil?}, id: stream_id } else raise 'incorrect method verb' end options[:query_filters] = query_filters unless query_filters.empty? [V2Intuity::Endpoints::Stream.new, options.delete_if {|k,v| v.nil?} ] end
format_resource_filters(filters)
click to toggle source
# File lib/v2_intuity/streams/stream.rb, line 55 def format_resource_filters(filters) return nil unless filters filters = filters.is_a?(Array) ? filters : [filters] filters.each do |filter| filter_class = filter.class next if filter_class < V2Intuity::ResourceFilters::ResourceFilter || filter_class == V2Intuity::ResourceFilters::ResourceFilter raise 'unsupported filter' end filter_array = [] filters.each { |filter| filter_array << filter.name } filter_array.uniq end