def create_or_update_weekly_goal(opts)
      unless opts[:type] && [:steps, :distance, :floors].include?(opts[:type])
        raise InvalidArgumentError, 'Must specify type in order to create or update a weekly goal. One of (:steps, :distance, or :floors) is required.'
      end

      unless opts[:value]
        raise InvalidArgumentError, 'Must specify value of the weekly goal to be created or updated.'
      end

      post("/user/#{@user_id}/activities/goals/weekly.json", opts)
    end
def create_or_update_weekly_goal(opts)
      unless opts[:type] && [:steps, :distance, :floors].include?(opts[:type])
        raise InvalidArgumentError, 'Must specify type in order to create or update a weekly goal. One of (:steps, :distance, or :floors) is required.'
      end

      unless opts[:value]
        raise InvalidArgumentError, 'Must specify value of the weekly goal to be created or updated.'
      end

      post("/user/#{@user_id}/activities/goals/weekly.json", opts)
    end
Create or update a user's weekly goal

 @param [Hash] :opts

 @option opts [Symbol] :type The type of goal to create or update; must be one of
   :steps, :distance, or :floors. REQUIRED
 @option opts [Decimal, Integer, String] :value The goal value; in the format 'X.XX'
   if a string. REQUIRED

 @since v0.9.0