Sha256: 72bedeeb392c4b0a863bc86b2b9b7656f91074b26b8dba5b910e3a27c8d525f0

Contents?: true

Size: 1.53 KB

Versions: 6

Compression:

Stored size: 1.53 KB

Contents

module Youtrack
  class Client

    # holds the youTrack Server url
    # defaults to nil
    attr_accessor :url

    # stores the Server login credential
    # defaults to nil
    attr_accessor :login
      
    # stores the Server password credential
    # defaulst to nil
    attr_accessor :password

    # stores the response object
    attr_accessor :connection

    # stores the auth_headers
    attr_accessor :cookies

    # stores the scope of all subsequent api calls
    attr_accessor :admin

    def admin?
      true == @admin
    end

    def initialize(options={}, &block)
      @cookies = {}
      @admin   = false

      yield(self) if block_given?
    end

    # the server endpoint
    def endpoint
      @endpoint = File.join(url, 'rest')
    end

    def credentials_hash
      { login: login, password: password }
    end


    # Makes a login call and sets the Cookie headers
    # 
    # Returns the status code of the connection call
    def connect!
      @connection = HTTParty.post(File.join(url, "rest/user/login"), body: credentials_hash )
      @cookies['Cookie'] = @connection.headers['set-cookie']
      @connection.code
    end

    def connected?
      !!(connection && connection.headers['set-cookie'] && connection.code == 200)
    end

    def users
      resource(:user).new(self)
    end

    def projects
      resource(:project).new(self)
    end

    def issues
      resource(:issue).new(self)
    end

    private

      def resource(resource_name)
        Youtrack.const_get(resource_name.to_s.capitalize)
      end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
youtrack-0.0.8 lib/youtrack/client.rb
youtrack-0.0.7 lib/youtrack/client.rb
youtrack-0.0.6 lib/youtrack/client.rb
youtrack-0.0.5 lib/youtrack/client.rb
youtrack-0.0.4 lib/youtrack/client.rb
youtrack-0.0.3 lib/youtrack/client.rb