Sha256: dcd518435b5459f3b320acee97502a1f4e5f2d7046c8a91f93911709ee88a88f

Contents?: true

Size: 1 KB

Versions: 2

Compression:

Stored size: 1 KB

Contents

# frozen_string_literal

require 'active_support'
require 'active_support/core_ext'

module Dexcom
  module BloodGlucoseUtils
    module ClassMethods
      DEFAULT_NUMBER_OF_VALUES = 1
      MINUTES_PER_DATAPOINT = 5

      def last
        get_last(max_count: 1).first
      end

      def get_last(max_count: nil, minutes: nil)
        number_of_values = calculate_number_of_values(max_count, minutes)

        response = make_api_request(number_of_values)
        blood_glucose_values = process_api_response(response)

        if minutes.present?
          blood_glucose_values.select! { |bg| bg.timestamp >= minutes.minutes.ago }
        end

        blood_glucose_values
      end

      private

      def calculate_number_of_values(max_count, minutes)
        return DEFAULT_NUMBER_OF_VALUES if (minutes.nil? && max_count.nil?)
        return max_count if minutes.nil?
        return (minutes / MINUTES_PER_DATAPOINT) if max_count.nil?

        [max_count, minutes / MINUTES_PER_DATAPOINT].min
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
dexcom-0.3.1 lib/dexcom/blood_glucose/class_methods.rb
dexcom-0.3.0 lib/dexcom/blood_glucose/class_methods.rb