Sha256: 9f2d36caed64d6dafd5c1be0da52679773419adeea4f2f01612af39a67842d24

Contents?: true

Size: 1.17 KB

Versions: 3

Compression:

Stored size: 1.17 KB

Contents

Dir[File.expand_path('../models/*.rb', __FILE__)].each { |f| require f }

module RedmineRest
  #
  # Namespace for models + some self-methods
  #
  module Models
    LIST = [Issue, User, Project, IssueStatus, TimeEntry, Relation].freeze

    def self.configure_models(params)
      ModelConfigurator.new.configure_models(params)
    end

    #
    # Class for self-methods. Dont use it outside this module
    #
    class ModelConfigurator
      def configure_models(params)
        site = params[:site] || Issue.site
        user = user_for_models(params)
        password = params.key?(:password) ? params[:password] : Issue.password

        change_models_params site: site,
                             user: user,
                             password: password
      end

      private

      def change_models_params(params)
        Models::LIST.each do |m|
          m.site = params[:site]
          m.user = params[:user]
          m.password = params[:password]
        end
      end

      def user_for_models(params)
        fail(ArgumentError, 'user + apikey was given') if params[:user] && params[:apikey]
        params[:user] || params[:apikey] || Issue.user
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
redmine_rest-0.5.0 lib/redmine_rest/models.rb
redmine_rest-0.4.0 lib/redmine_rest/models.rb
redmine_rest-0.3.0 lib/redmine_rest/models.rb