omniauth-jira 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d0706e8da6d626777fff0247608789913910a2ed
4
+ data.tar.gz: f98eb282b934cf3c81e0bc39a878d6aefdbbef94
5
+ SHA512:
6
+ metadata.gz: 343954036f9ae257cac5e77f4b8a3b1b2b13ea2e8876be3ca2cca4f391baf9dfeeb67a1b160f5057d445b9ab1e1677dd9e8209035ebf6272972885e5da1ad1e6
7
+ data.tar.gz: 1e5a7e52011f8d1f97eb21457d3707dcb0eb50fa91156d7e32bd935793203f50db41b268f716fbe133a723255da1becfb71c3e72cd8e540adbe3dc37f8bf710d
data/README.md CHANGED
@@ -3,9 +3,26 @@ omniauth-jira
3
3
 
4
4
  A simple [OmniAuth](https://github.com/intridea/omniauth) strategy for Atlassian JIRA.
5
5
 
6
+ Install
7
+ -------
8
+
9
+ gem 'omniauth-jira'
10
+
6
11
  Usage
7
12
  -----
8
13
 
14
+ Create a private key and certificate for use with your JIRA instance:
15
+
16
+ openssl req -x509 -nodes -days 365 -newkey rsa:1024 -sha1 -keyout jira_private_key.pem -out jira_x509_certificate.pem
17
+
18
+ Extract the public key:
19
+
20
+ openssl x509 -pubkey -noout -in jira_x509_certificate.pem > jira_public_key.key
21
+
22
+ Configure OAuth on your JIRA instance. You'll need to specify a consumer key and the public key (e.g. `jira_public_key.key` above). More instructions here: https://developer.atlassian.com/jiradev/jira-apis/jira-rest-apis/jira-rest-api-tutorials/jira-rest-api-example-oauth-authentication
23
+
24
+ Then setup the OmniAuth provider in your code:
25
+
9
26
  use OmniAuth::Builder do
10
27
  provider :JIRA,
11
28
  "<consumer_key>",
data/Rakefile CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env rake
2
- require "bundler/gem_tasks"
2
+ require 'bundler/gem_tasks'
3
3
  require 'rspec/core/rake_task'
4
4
 
5
5
  desc 'Default: run specs.'
@@ -1,3 +1,3 @@
1
- require "omniauth-jira/version"
1
+ require 'omniauth-jira/version'
2
2
  require 'omniauth/strategies/jira'
3
3
 
@@ -1,5 +1,5 @@
1
1
  module OmniAuth
2
2
  module JIRA
3
- VERSION = "0.1.0"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
@@ -6,21 +6,28 @@ module OmniAuth
6
6
  module Strategies
7
7
  class JIRA < OmniAuth::Strategies::OAuth
8
8
 
9
- option :name, "JIRA"
9
+ option :name, 'jira'
10
10
  option :client_options, {
11
- :signature_method => 'RSA-SHA1',
11
+ :signature_method => 'RSA-SHA1',
12
12
  :request_token_path => '/plugins/servlet/oauth/request-token',
13
- :authorize_path => "/plugins/servlet/oauth/authorize",
14
- :access_token_path => '/plugins/servlet/oauth/access-token',
15
- :site => nil
13
+ :authorize_path => '/plugins/servlet/oauth/authorize',
14
+ :access_token_path => '/plugins/servlet/oauth/access-token',
15
+ :site => nil
16
16
  }
17
17
 
18
- uid{ raw_info['name'] }
18
+ uid{ user_info['key'] }
19
19
 
20
20
  info do
21
21
  {
22
- :name => raw_info['name'],
23
- :self => raw_info['self']
22
+ nickname: user_info['name'],
23
+ email: user_info['emailAddress'],
24
+ name: user_info['displayName'],
25
+ time_zone: user_info['timeZone'],
26
+ locale: user_info['locale'],
27
+ image: user_info['avatarUrls'] && user_info['avatarUrls']['48x48'],
28
+ urls: {
29
+ self: session_info['self']
30
+ }
24
31
  }
25
32
  end
26
33
 
@@ -30,16 +37,27 @@ module OmniAuth
30
37
  }
31
38
  end
32
39
 
33
- def consumer
34
- consumer = ::OAuth::Consumer.new(options.consumer_key, options.consumer_secret, options.client_options)
35
- consumer.http.open_timeout = options.open_timeout if options.open_timeout
36
- consumer.http.read_timeout = options.read_timeout if options.read_timeout
37
- consumer.http.set_debug_output($stderr)
38
- consumer
40
+ credentials do
41
+ if access_token.params.has_key?(:oauth_expires_in)
42
+ {
43
+ "expires" => true,
44
+ "expires_at" => (Time.now + (access_token.params[:oauth_expires_in].to_i / 1000)).to_i
45
+ }
46
+ end
39
47
  end
40
48
 
41
49
  def raw_info
42
- @raw_info ||= MultiJson.decode(access_token.get('/rest/auth/1/session').body)
50
+ @raw_info ||= {session_info: session_info, user_info: user_info}
51
+ end
52
+
53
+ def session_info
54
+ @session_info ||= MultiJson.decode(access_token.get('/rest/auth/1/session').body)
55
+ rescue ::Errno::ETIMEDOUT
56
+ raise ::Timeout::Error
57
+ end
58
+
59
+ def user_info
60
+ @user_info ||= MultiJson.decode(access_token.get(session_info['self']).body)
43
61
  rescue ::Errno::ETIMEDOUT
44
62
  raise ::Timeout::Error
45
63
  end
@@ -2,15 +2,15 @@
2
2
  require File.expand_path('../lib/omniauth-jira/version', __FILE__)
3
3
 
4
4
  Gem::Specification.new do |gem|
5
- gem.authors = ["Rich Manalang"]
6
- gem.email = ["rmanalang@atlassian.com"]
5
+ gem.authors = ["Rich Manalang", "Joel Van Horn"]
6
+ gem.email = ["rmanalang@atlassian.com", "joel@joelvanhorn.com"]
7
7
  gem.description = %q{A JIRA OAuth 1.0a strategy for OmniAuth.}
8
8
  gem.summary = %q{A JIRA OAuth 1.0a strategy for OmniAuth.}
9
9
  gem.homepage = "https://github.com/manalang/omniauth-jira"
10
10
 
11
- gem.add_dependency 'multi_json', '~> 1.3'
11
+ gem.add_dependency 'multi_json', '~> 1.3'
12
12
  gem.add_runtime_dependency 'omniauth', '~> 1.0'
13
- gem.add_runtime_dependency 'omniauth-oauth', '~> 1.0'
13
+ gem.add_runtime_dependency 'omniauth-oauth', '~> 1.0'
14
14
  gem.add_runtime_dependency 'oauth'
15
15
  gem.add_development_dependency 'rspec', '~> 2.7'
16
16
  gem.add_development_dependency 'webmock'
metadata CHANGED
@@ -1,169 +1,152 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omniauth-jira
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
5
- prerelease:
4
+ version: 0.2.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Rich Manalang
8
+ - Joel Van Horn
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-09 00:00:00.000000000 Z
12
+ date: 2015-10-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: multi_json
16
16
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
17
  requirements:
19
- - - ~>
18
+ - - "~>"
20
19
  - !ruby/object:Gem::Version
21
20
  version: '1.3'
22
21
  type: :runtime
23
22
  prerelease: false
24
23
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
24
  requirements:
27
- - - ~>
25
+ - - "~>"
28
26
  - !ruby/object:Gem::Version
29
27
  version: '1.3'
30
28
  - !ruby/object:Gem::Dependency
31
29
  name: omniauth
32
30
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
31
  requirements:
35
- - - ~>
32
+ - - "~>"
36
33
  - !ruby/object:Gem::Version
37
34
  version: '1.0'
38
35
  type: :runtime
39
36
  prerelease: false
40
37
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
38
  requirements:
43
- - - ~>
39
+ - - "~>"
44
40
  - !ruby/object:Gem::Version
45
41
  version: '1.0'
46
42
  - !ruby/object:Gem::Dependency
47
43
  name: omniauth-oauth
48
44
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
45
  requirements:
51
- - - ~>
46
+ - - "~>"
52
47
  - !ruby/object:Gem::Version
53
48
  version: '1.0'
54
49
  type: :runtime
55
50
  prerelease: false
56
51
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
52
  requirements:
59
- - - ~>
53
+ - - "~>"
60
54
  - !ruby/object:Gem::Version
61
55
  version: '1.0'
62
56
  - !ruby/object:Gem::Dependency
63
57
  name: oauth
64
58
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
59
  requirements:
67
- - - ! '>='
60
+ - - ">="
68
61
  - !ruby/object:Gem::Version
69
62
  version: '0'
70
63
  type: :runtime
71
64
  prerelease: false
72
65
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
66
  requirements:
75
- - - ! '>='
67
+ - - ">="
76
68
  - !ruby/object:Gem::Version
77
69
  version: '0'
78
70
  - !ruby/object:Gem::Dependency
79
71
  name: rspec
80
72
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
73
  requirements:
83
- - - ~>
74
+ - - "~>"
84
75
  - !ruby/object:Gem::Version
85
76
  version: '2.7'
86
77
  type: :development
87
78
  prerelease: false
88
79
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
80
  requirements:
91
- - - ~>
81
+ - - "~>"
92
82
  - !ruby/object:Gem::Version
93
83
  version: '2.7'
94
84
  - !ruby/object:Gem::Dependency
95
85
  name: webmock
96
86
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
87
  requirements:
99
- - - ! '>='
88
+ - - ">="
100
89
  - !ruby/object:Gem::Version
101
90
  version: '0'
102
91
  type: :development
103
92
  prerelease: false
104
93
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
94
  requirements:
107
- - - ! '>='
95
+ - - ">="
108
96
  - !ruby/object:Gem::Version
109
97
  version: '0'
110
98
  - !ruby/object:Gem::Dependency
111
99
  name: simplecov
112
100
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
101
  requirements:
115
- - - ! '>='
102
+ - - ">="
116
103
  - !ruby/object:Gem::Version
117
104
  version: '0'
118
105
  type: :development
119
106
  prerelease: false
120
107
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
108
  requirements:
123
- - - ! '>='
109
+ - - ">="
124
110
  - !ruby/object:Gem::Version
125
111
  version: '0'
126
112
  - !ruby/object:Gem::Dependency
127
113
  name: rack-test
128
114
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
115
  requirements:
131
- - - ! '>='
116
+ - - ">="
132
117
  - !ruby/object:Gem::Version
133
118
  version: '0'
134
119
  type: :development
135
120
  prerelease: false
136
121
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
122
  requirements:
139
- - - ! '>='
123
+ - - ">="
140
124
  - !ruby/object:Gem::Version
141
125
  version: '0'
142
126
  - !ruby/object:Gem::Dependency
143
127
  name: rake
144
128
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
129
  requirements:
147
- - - ! '>='
130
+ - - ">="
148
131
  - !ruby/object:Gem::Version
149
132
  version: '0'
150
133
  type: :development
151
134
  prerelease: false
152
135
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
136
  requirements:
155
- - - ! '>='
137
+ - - ">="
156
138
  - !ruby/object:Gem::Version
157
139
  version: '0'
158
140
  description: A JIRA OAuth 1.0a strategy for OmniAuth.
159
141
  email:
160
142
  - rmanalang@atlassian.com
143
+ - joel@joelvanhorn.com
161
144
  executables: []
162
145
  extensions: []
163
146
  extra_rdoc_files: []
164
147
  files:
165
- - .gitignore
166
- - .rspec
148
+ - ".gitignore"
149
+ - ".rspec"
167
150
  - Gemfile
168
151
  - Guardfile
169
152
  - README.md
@@ -176,33 +159,26 @@ files:
176
159
  - spec/spec_helper.rb
177
160
  homepage: https://github.com/manalang/omniauth-jira
178
161
  licenses: []
162
+ metadata: {}
179
163
  post_install_message:
180
164
  rdoc_options: []
181
165
  require_paths:
182
166
  - lib
183
167
  required_ruby_version: !ruby/object:Gem::Requirement
184
- none: false
185
168
  requirements:
186
- - - ! '>='
169
+ - - ">="
187
170
  - !ruby/object:Gem::Version
188
171
  version: '0'
189
- segments:
190
- - 0
191
- hash: 4141054069828415443
192
172
  required_rubygems_version: !ruby/object:Gem::Requirement
193
- none: false
194
173
  requirements:
195
- - - ! '>='
174
+ - - ">="
196
175
  - !ruby/object:Gem::Version
197
176
  version: '0'
198
- segments:
199
- - 0
200
- hash: 4141054069828415443
201
177
  requirements: []
202
178
  rubyforge_project:
203
- rubygems_version: 1.8.21
179
+ rubygems_version: 2.0.14
204
180
  signing_key:
205
- specification_version: 3
181
+ specification_version: 4
206
182
  summary: A JIRA OAuth 1.0a strategy for OmniAuth.
207
183
  test_files:
208
184
  - spec/omniauth/strategies/jira_spec.rb