hirakiuc/tinybucket

View on GitHub
lib/tinybucket/resource/base.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
# frozen_string_literal: true

module Tinybucket
  module Resource
    class Base
      include Tinybucket::Model::Concerns::ApiCallable

      protected

      def method_missing(method, *args)
        enum = enumerator
        return super unless enum.respond_to?(method)

        enum.send(method, *args) do |m|
          block_given? ? yield(m) : m
        end
      end

      def respond_to_missing?(symbol, include_all)
        enumerator.respond_to?(symbol, include_all)
      end

      def create_enumerator(api_client, method, *args, &block)
        iter = Tinybucket::Iterator.new(api_client, method, *args)
        Tinybucket::Enumerator.new(iter, block)
      end

      def inject_repo_keys(model, repo_keys)
        return model unless model.respond_to?(:repo_keys=)

        model.tap { |m| m.repo_keys = repo_keys }
      end
    end
  end
end