Class: KiYoutrack::Session

Inherits:
Object
  • Object
show all
Defined in:
lib/ki_youtrack/session.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(login, password, subdomain, opts = {}) ⇒ Session

Returns a new instance of Session.



17
18
19
20
21
22
23
# File 'lib/ki_youtrack/session.rb', line 17

def initialize(, password, subdomain, opts = {})
  ssl = opts.fetch(:ssl, true)
  @login = 
  @password = password
  @api_url = Session.url(subdomain, ssl)
  @session_cookies = opts[:cookies]
end

Instance Attribute Details

#api_urlObject (readonly)

Returns the value of attribute api_url.



7
8
9
# File 'lib/ki_youtrack/session.rb', line 7

def api_url
  @api_url
end

#session_cookiesObject (readonly)

Returns the value of attribute session_cookies.



7
8
9
# File 'lib/ki_youtrack/session.rb', line 7

def session_cookies
  @session_cookies
end

Class Method Details

.url(subdomain, ssl) ⇒ Object

TODO - hacky, remove this TODO - the default for SSL should be in ONE place



11
12
13
14
15
# File 'lib/ki_youtrack/session.rb', line 11

def self.url(subdomain, ssl)
  ssl = true if ssl.nil?
  protocol = ssl ? "https" : "http"
  "#{protocol}://#{subdomain}.myjetbrains.com"
end

Instance Method Details

#initObject



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/ki_youtrack/session.rb', line 25

def init
  return if @session_cookies
  response = connection.post("/youtrack/rest/user/login",
                  :login => @login,
                  :password => @password)
  @session_cookies = response.headers['set-cookie']
  case response.status
  when 404
    if response.body =~ /HTTPS is supported in paid version only/
      raise SessionError, "Authentication failed because HTTPS is not supported for this domain."
    else
      raise SessionError, "Authentication failed. Check subdomain and SSL settings."
    end
  when 302
    raise SessionError, "Authentication failed. Check subdomain."
  when 403
    raise SessionError, "Authentication failed. Check login and password."
  when 200
    response
  else
    raise SessionError, "Unhandled status code #{response.status}"
  end
end

#issue(id) ⇒ Object



66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/ki_youtrack/session.rb', line 66

def issue(id)
  try_with_provided_session do
    response = connection.get do |req|
      req.url "/youtrack/rest/issue/#{id}"
      req.headers['Cookie'] = session_cookies
      req.options[:timeout] = 5
      req.options[:open_timeout] = 2
    end

    case response.status
    when 200
      response.body['issue']
    when 404
      raise SessionError, "Can't find issue #{id}"
    else
      raise SessionError, "Unhandled status code #{response.status}"
    end
  end
end

#userObject



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/ki_youtrack/session.rb', line 49

def user
  try_with_provided_session do
    response = connection.get do |req|
      req.url "/youtrack/rest/admin/user/root"
      req.headers['Cookie'] = session_cookies
      req.options[:timeout] = 5
      req.options[:open_timeout] = 2
    end
    case response.status
    when 200
      response.body
    else
      raise SessionError, "Unhandled status code #{response.status}"
    end
  end
end