jira-ruby 2.1.3

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.
Files changed (154) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +13 -0
  3. data/.travis.yml +9 -0
  4. data/Gemfile +14 -0
  5. data/Guardfile +14 -0
  6. data/LICENSE +19 -0
  7. data/README.md +427 -0
  8. data/Rakefile +31 -0
  9. data/example.rb +224 -0
  10. data/http-basic-example.rb +113 -0
  11. data/jira-ruby.gemspec +35 -0
  12. data/lib/jira-ruby.rb +49 -0
  13. data/lib/jira/base.rb +525 -0
  14. data/lib/jira/base_factory.rb +46 -0
  15. data/lib/jira/client.rb +308 -0
  16. data/lib/jira/has_many_proxy.rb +42 -0
  17. data/lib/jira/http_client.rb +112 -0
  18. data/lib/jira/http_error.rb +14 -0
  19. data/lib/jira/jwt_client.rb +67 -0
  20. data/lib/jira/oauth_client.rb +114 -0
  21. data/lib/jira/railtie.rb +10 -0
  22. data/lib/jira/request_client.rb +31 -0
  23. data/lib/jira/resource/agile.rb +79 -0
  24. data/lib/jira/resource/applinks.rb +39 -0
  25. data/lib/jira/resource/attachment.rb +50 -0
  26. data/lib/jira/resource/board.rb +91 -0
  27. data/lib/jira/resource/board_configuration.rb +9 -0
  28. data/lib/jira/resource/comment.rb +12 -0
  29. data/lib/jira/resource/component.rb +8 -0
  30. data/lib/jira/resource/createmeta.rb +44 -0
  31. data/lib/jira/resource/field.rb +83 -0
  32. data/lib/jira/resource/filter.rb +15 -0
  33. data/lib/jira/resource/issue.rb +141 -0
  34. data/lib/jira/resource/issuelink.rb +20 -0
  35. data/lib/jira/resource/issuelinktype.rb +14 -0
  36. data/lib/jira/resource/issuetype.rb +8 -0
  37. data/lib/jira/resource/priority.rb +8 -0
  38. data/lib/jira/resource/project.rb +41 -0
  39. data/lib/jira/resource/rapidview.rb +67 -0
  40. data/lib/jira/resource/remotelink.rb +26 -0
  41. data/lib/jira/resource/resolution.rb +8 -0
  42. data/lib/jira/resource/serverinfo.rb +18 -0
  43. data/lib/jira/resource/sprint.rb +105 -0
  44. data/lib/jira/resource/sprint_report.rb +8 -0
  45. data/lib/jira/resource/status.rb +8 -0
  46. data/lib/jira/resource/transition.rb +29 -0
  47. data/lib/jira/resource/user.rb +30 -0
  48. data/lib/jira/resource/version.rb +8 -0
  49. data/lib/jira/resource/watcher.rb +35 -0
  50. data/lib/jira/resource/webhook.rb +37 -0
  51. data/lib/jira/resource/worklog.rb +14 -0
  52. data/lib/jira/tasks.rb +0 -0
  53. data/lib/jira/version.rb +3 -0
  54. data/lib/tasks/generate.rake +18 -0
  55. data/spec/integration/attachment_spec.rb +32 -0
  56. data/spec/integration/comment_spec.rb +52 -0
  57. data/spec/integration/component_spec.rb +39 -0
  58. data/spec/integration/field_spec.rb +32 -0
  59. data/spec/integration/issue_spec.rb +93 -0
  60. data/spec/integration/issuelinktype_spec.rb +26 -0
  61. data/spec/integration/issuetype_spec.rb +24 -0
  62. data/spec/integration/priority_spec.rb +24 -0
  63. data/spec/integration/project_spec.rb +49 -0
  64. data/spec/integration/rapidview_spec.rb +74 -0
  65. data/spec/integration/resolution_spec.rb +26 -0
  66. data/spec/integration/status_spec.rb +24 -0
  67. data/spec/integration/transition_spec.rb +49 -0
  68. data/spec/integration/user_spec.rb +41 -0
  69. data/spec/integration/version_spec.rb +39 -0
  70. data/spec/integration/watcher_spec.rb +62 -0
  71. data/spec/integration/webhook.rb +25 -0
  72. data/spec/integration/worklog_spec.rb +51 -0
  73. data/spec/jira/base_factory_spec.rb +45 -0
  74. data/spec/jira/base_spec.rb +598 -0
  75. data/spec/jira/client_spec.rb +291 -0
  76. data/spec/jira/has_many_proxy_spec.rb +46 -0
  77. data/spec/jira/http_client_spec.rb +328 -0
  78. data/spec/jira/http_error_spec.rb +24 -0
  79. data/spec/jira/jwt_uri_builder_spec.rb +59 -0
  80. data/spec/jira/oauth_client_spec.rb +162 -0
  81. data/spec/jira/request_client_spec.rb +41 -0
  82. data/spec/jira/resource/agile_spec.rb +135 -0
  83. data/spec/jira/resource/attachment_spec.rb +138 -0
  84. data/spec/jira/resource/board_spec.rb +224 -0
  85. data/spec/jira/resource/createmeta_spec.rb +258 -0
  86. data/spec/jira/resource/field_spec.rb +85 -0
  87. data/spec/jira/resource/filter_spec.rb +97 -0
  88. data/spec/jira/resource/issue_spec.rb +227 -0
  89. data/spec/jira/resource/issuelink_spec.rb +14 -0
  90. data/spec/jira/resource/project_factory_spec.rb +11 -0
  91. data/spec/jira/resource/project_spec.rb +123 -0
  92. data/spec/jira/resource/sprint_spec.rb +90 -0
  93. data/spec/jira/resource/user_factory_spec.rb +31 -0
  94. data/spec/jira/resource/worklog_spec.rb +22 -0
  95. data/spec/mock_responses/board/1.json +33 -0
  96. data/spec/mock_responses/board/1_issues.json +62 -0
  97. data/spec/mock_responses/component.post.json +28 -0
  98. data/spec/mock_responses/component/10000.invalid.put.json +5 -0
  99. data/spec/mock_responses/component/10000.json +39 -0
  100. data/spec/mock_responses/component/10000.put.json +39 -0
  101. data/spec/mock_responses/empty_issues.json +8 -0
  102. data/spec/mock_responses/field.json +32 -0
  103. data/spec/mock_responses/field/1.json +15 -0
  104. data/spec/mock_responses/issue.json +1108 -0
  105. data/spec/mock_responses/issue.post.json +5 -0
  106. data/spec/mock_responses/issue/10002.invalid.put.json +6 -0
  107. data/spec/mock_responses/issue/10002.json +126 -0
  108. data/spec/mock_responses/issue/10002.put.missing_field_update.json +6 -0
  109. data/spec/mock_responses/issue/10002/attachments/10000.json +20 -0
  110. data/spec/mock_responses/issue/10002/comment.json +65 -0
  111. data/spec/mock_responses/issue/10002/comment.post.json +29 -0
  112. data/spec/mock_responses/issue/10002/comment/10000.json +29 -0
  113. data/spec/mock_responses/issue/10002/comment/10000.put.json +29 -0
  114. data/spec/mock_responses/issue/10002/transitions.json +49 -0
  115. data/spec/mock_responses/issue/10002/transitions.post.json +1 -0
  116. data/spec/mock_responses/issue/10002/watchers.json +13 -0
  117. data/spec/mock_responses/issue/10002/worklog.json +98 -0
  118. data/spec/mock_responses/issue/10002/worklog.post.json +30 -0
  119. data/spec/mock_responses/issue/10002/worklog/10000.json +31 -0
  120. data/spec/mock_responses/issue/10002/worklog/10000.put.json +30 -0
  121. data/spec/mock_responses/issueLinkType.json +25 -0
  122. data/spec/mock_responses/issueLinkType/10000.json +7 -0
  123. data/spec/mock_responses/issuetype.json +42 -0
  124. data/spec/mock_responses/issuetype/5.json +8 -0
  125. data/spec/mock_responses/jira/rest/webhooks/1.0/webhook.json +11 -0
  126. data/spec/mock_responses/jira/rest/webhooks/1.0/webhook/2.json +11 -0
  127. data/spec/mock_responses/priority.json +42 -0
  128. data/spec/mock_responses/priority/1.json +8 -0
  129. data/spec/mock_responses/project.json +12 -0
  130. data/spec/mock_responses/project/SAMPLEPROJECT.issues.json +1108 -0
  131. data/spec/mock_responses/project/SAMPLEPROJECT.json +84 -0
  132. data/spec/mock_responses/rapidview.json +10 -0
  133. data/spec/mock_responses/rapidview/SAMPLEPROJECT.issues.full.json +276 -0
  134. data/spec/mock_responses/rapidview/SAMPLEPROJECT.issues.json +111 -0
  135. data/spec/mock_responses/rapidview/SAMPLEPROJECT.json +6 -0
  136. data/spec/mock_responses/resolution.json +15 -0
  137. data/spec/mock_responses/resolution/1.json +7 -0
  138. data/spec/mock_responses/sprint/1_issues.json +125 -0
  139. data/spec/mock_responses/status.json +37 -0
  140. data/spec/mock_responses/status/1.json +7 -0
  141. data/spec/mock_responses/user_username=admin.json +17 -0
  142. data/spec/mock_responses/version.post.json +7 -0
  143. data/spec/mock_responses/version/10000.invalid.put.json +5 -0
  144. data/spec/mock_responses/version/10000.json +11 -0
  145. data/spec/mock_responses/version/10000.put.json +7 -0
  146. data/spec/mock_responses/webhook.json +11 -0
  147. data/spec/mock_responses/webhook/webhook.json +11 -0
  148. data/spec/spec_helper.rb +21 -0
  149. data/spec/support/clients_helper.rb +16 -0
  150. data/spec/support/matchers/have_attributes.rb +11 -0
  151. data/spec/support/matchers/have_many.rb +9 -0
  152. data/spec/support/matchers/have_one.rb +5 -0
  153. data/spec/support/shared_examples/integration.rb +177 -0
  154. metadata +491 -0
@@ -0,0 +1,31 @@
1
+ require 'bundler/gem_tasks'
2
+
3
+ require 'rubygems'
4
+ require 'rspec/core/rake_task'
5
+ require 'rdoc/task'
6
+
7
+ Dir.glob('lib/tasks/*.rake').each { |r| import r }
8
+
9
+ task default: [:test]
10
+
11
+ task test: %i[prepare spec]
12
+
13
+ desc 'Prepare and run rspec tests'
14
+ task :prepare do
15
+ rsa_key = File.expand_path('rsakey.pem')
16
+ unless File.exist?(rsa_key)
17
+ raise 'rsakey.pem does not exist, tests will fail. Run `rake jira:generate_public_cert` first'
18
+ end
19
+ end
20
+
21
+ desc 'Run RSpec tests'
22
+ # RSpec::Core::RakeTask.new(:spec)
23
+ RSpec::Core::RakeTask.new(:spec) do |task|
24
+ task.rspec_opts = ['--color', '--format', 'doc']
25
+ end
26
+
27
+ Rake::RDocTask.new(:doc) do |rd|
28
+ rd.main = 'README.rdoc'
29
+ rd.rdoc_dir = 'doc'
30
+ rd.rdoc_files.include('README.rdoc', 'lib/**/*.rb')
31
+ end
@@ -0,0 +1,224 @@
1
+ require 'pp'
2
+ require './lib/jira-ruby'
3
+
4
+ CONSUMER_KEY = 'test'
5
+ SITE = 'https://test.jira.com'
6
+
7
+ options = {
8
+ :private_key_file => "rsakey.pem",
9
+ :context_path => '',
10
+ :consumer_key => CONSUMER_KEY,
11
+ :site => SITE
12
+ }
13
+
14
+ client = JIRA::Client.new(options)
15
+
16
+ if ARGV.length == 0
17
+ # If not passed any command line arguments, open a browser and prompt the
18
+ # user for the OAuth verifier.
19
+ request_token = client.request_token
20
+ puts "Opening #{request_token.authorize_url}"
21
+ system "open #{request_token.authorize_url}"
22
+
23
+ puts "Enter the oauth_verifier: "
24
+ oauth_verifier = gets.strip
25
+
26
+ access_token = client.init_access_token(:oauth_verifier => oauth_verifier)
27
+ puts "Access token: #{access_token.token} secret: #{access_token.secret}"
28
+ elsif ARGV.length == 2
29
+ # Otherwise assume the arguments are a previous access token and secret.
30
+ access_token = client.set_access_token(ARGV[0], ARGV[1])
31
+ else
32
+ # Script must be passed 0 or 2 arguments
33
+ raise "Usage: #{$0} [ token secret ]"
34
+ end
35
+
36
+ # Show all projects
37
+ projects = client.Project.all
38
+
39
+ projects.each do |project|
40
+ puts "Project -> key: #{project.key}, name: #{project.name}"
41
+ end
42
+ issue = client.Issue.find('SAMPLEPROJECT-1')
43
+ pp issue
44
+
45
+ # # Handling fields by name, rather than by id
46
+ # # ------------------------------------------
47
+ # Cache the Field list from the server
48
+ client.Field.map_fields
49
+ # This allows use of friendlier names for custom fields
50
+ # Say that 'Special Field' is customfield_12345
51
+ # It becomes mapped to Special_Field which is usable as a method call
52
+ #
53
+ # Say that there is a second 'Special Field' is customfield_54321
54
+ # Names are deduplicated so the second 'Special Field' becomes Special_Field_54321
55
+ #
56
+ # Names are massaged to get rid of special characters, and spaces
57
+ # So 'Special & @ Field' becomes Special_____Field - not perfect, but usable
58
+ old_way = issue.customfield_12345
59
+ new_way = issue.Special_Field
60
+ (old_way == new_way) && puts 'much easier'
61
+ #
62
+ # You can also specify fields to be returned in the response
63
+ # This is especially useful in regards to shortening JQL query response times if performance becomes an issue
64
+ client.Issue.jql(a_normal_jql_search, fields:[:description, :summary, :Special_field, :created])
65
+ # Or you could always do it the old way - if you can remember the custom field numbers...
66
+ client.Issue.jql(a_normal_jql_search, fields:[:description, :summary, :customfield_1234, :created])
67
+ # You can also specify the maximum number of results to be returned in the response, i.e. 500
68
+ client.Issue.jql(a_normal_jql_search, max_results: 500)
69
+
70
+ # # Find a specific project by key
71
+ # # ------------------------------
72
+ # project = client.Project.find('SAMPLEPROJECT')
73
+ # pp project
74
+ # project.issues.each do |issue|
75
+ # puts "#{issue.id} - #{issue.fields['summary']}"
76
+ # end
77
+ #
78
+ # # List all Issues
79
+ # # ---------------
80
+ # client.Issue.all.each do |issue|
81
+ # puts "#{issue.id} - #{issue.fields['summary']}"
82
+ # end
83
+ #
84
+ # # List issues by JQL query
85
+ # # ------------------------
86
+ # client.Issue.jql('PROJECT = "SAMPLEPROJECT"', [comments, summary]).each do |issue|
87
+ # puts "#{issue.id} - #{issue.fields['summary']}"
88
+ # end
89
+ #
90
+ # # Delete an issue
91
+ # # ---------------
92
+ # issue = client.Issue.find('SAMPLEPROJECT-2')
93
+ # if issue.delete
94
+ # puts "Delete of issue SAMPLEPROJECT-2 sucessful"
95
+ # else
96
+ # puts "Delete of issue SAMPLEPROJECT-2 failed"
97
+ # end
98
+ #
99
+ # # Create an issue
100
+ # # ---------------
101
+ # issue = client.Issue.build
102
+ # labels = ['label1', 'label2']
103
+ # issue.save({
104
+ # "fields" => {
105
+ # "summary" => "blarg from in example.rb",
106
+ # "project" => {"key" => "SAMPLEPROJECT"},
107
+ # "issuetype" => {"id" => "3"},
108
+ # "labels" => labels,
109
+ # "priority" => {"id" => "1"}
110
+ # }
111
+ # })
112
+ # issue.fetch
113
+ # pp issue
114
+ #
115
+ # # Update an issue
116
+ # # ---------------
117
+ # issue = client.Issue.find("10002")
118
+ # issue.save({"fields"=>{"summary"=>"EVEN MOOOOOOARRR NINJAAAA!"}})
119
+ # pp issue
120
+ #
121
+ # # Transition an issue
122
+ # # -------------------
123
+ # issue_transition = issue.transitions.build
124
+ # issue_transition.save!('transition' => {'id' => transition_id})
125
+ #
126
+ # # Change assignee
127
+ # # -------------------
128
+ # issue.save({'fields' => {'assignee' => {'name' => person_name}}})
129
+ #
130
+ # # Find a user
131
+ # # -----------
132
+ # user = client.User.find('admin')
133
+ # pp user
134
+ #
135
+ # # Get all issue watchers
136
+ # # ----------------------
137
+ # issue = client.Issue.find("10002")
138
+ # watchers = issue.watchers.all
139
+ # watchers = client.Watcher.all(:issue => issue)
140
+ # # Get all issue types
141
+ # # -------------------
142
+ # issuetypes = client.Issuetype.all
143
+ # pp issuetypes
144
+ #
145
+ # # Get a single issue type
146
+ # # -----------------------
147
+ # issuetype = client.Issuetype.find('5')
148
+ # pp issuetype
149
+ #
150
+ # # Get all comments for an issue
151
+ # # -----------------------------
152
+ # issue.comments.each do |comment|
153
+ # pp comment
154
+ # end
155
+ #
156
+ # # Build and Save a comment
157
+ # # ------------------------
158
+ # comment = issue.comments.build
159
+ # comment.save!(:body => "New comment from example script")
160
+ #
161
+ # # Delete a comment from the collection
162
+ # # ------------------------------------
163
+ # issue.comments.last.delete
164
+ #
165
+ # # Update an existing comment
166
+ # # --------------------------
167
+ # issue.comments.first.save({"body" => "an updated comment frome example.rb"})
168
+
169
+ # List all available link types
170
+ # ------------------------------
171
+ pp client.Issuelinktype.all
172
+
173
+ # List issue's links
174
+ # -------------------------
175
+ issue = client.Issue.find("10002")
176
+ pp issue.issuelinks
177
+
178
+ # Link two issues (on the same Jira instance)
179
+ # --------------------------------------------
180
+ link = client.Issuelink.build
181
+ link.save(
182
+ {
183
+ :type => {:name => 'Relates'},
184
+ :inwardIssue => {:key => 'AL-1'},
185
+ :outwardIssue => {:key => 'AL-2'}
186
+ }
187
+ )
188
+
189
+ # List issue's remote links
190
+ # -------------------------
191
+ pp issue.remotelink.all
192
+
193
+ # Link two remote issues (on the different Jira instance)
194
+ # In order to add remote links, you have to add
195
+ # Application Links between two Jira instances first.
196
+ # More information:
197
+ # https://developer.atlassian.com/jiradev/jira-platform/guides/other/guide-jira-remote-issue-links/fields-in-remote-issue-links
198
+ # http://stackoverflow.com/questions/29850252/jira-api-issuelink-connect-two-different-instances
199
+ # -------------------------------------------------------
200
+ client_1 = JIRA::Client.new(options)
201
+ client_2 = JIRA::Client.new(options)
202
+
203
+ # you have to search for your app id here, instead of getting the first
204
+ client_2_app_link = client_2.ApplicationLink.manifest
205
+ issue_1 = client_1.Issue.find('BB-2')
206
+ issue_2 = client_2.Issue.find('AA-1')
207
+
208
+ remote_link = issue_2.remotelink.build
209
+
210
+ remote_link.save(
211
+ {
212
+ :globalId => "appId=#{client_2_app_link.id}&issueId=#{issue_1.id}",
213
+ :application => {
214
+ :type => 'com.atlassian.jira',
215
+ :name => client_2_app_link['name']
216
+ },
217
+ :relationship => 'relates to',
218
+
219
+ :object => {
220
+ :url => client_1.options[:site] + client_1.options[:context_path] + "/browse/#{issue_1.key}",
221
+ :title => issue_1.key,
222
+ }
223
+ }
224
+ )
@@ -0,0 +1,113 @@
1
+ require 'rubygems'
2
+ require 'pp'
3
+ require 'jira-ruby'
4
+
5
+ if ARGV.empty?
6
+ # If not passed any command line arguments, prompt the
7
+ # user for the username and password.
8
+ puts 'Enter the username: '
9
+ username = gets.strip
10
+
11
+ puts 'Enter the password: '
12
+ password = gets.strip
13
+ elsif ARGV.length == 2
14
+ username = ARGV[0]
15
+ password = ARGV[1]
16
+ else
17
+ # Script must be passed 0 or 2 arguments
18
+ raise "Usage: #{$PROGRAM_NAME} [ username password ]"
19
+ end
20
+
21
+ options = {
22
+ username: username,
23
+ password: password,
24
+ site: 'http://localhost:8080/',
25
+ context_path: '',
26
+ auth_type: :basic,
27
+ use_ssl: false
28
+ }
29
+
30
+ client = JIRA::Client.new(options)
31
+
32
+ # Show all projects
33
+ projects = client.Project.all
34
+
35
+ projects.each do |project|
36
+ puts "Project -> key: #{project.key}, name: #{project.name}"
37
+ end
38
+
39
+ # # Find a specific project by key
40
+ # # ------------------------------
41
+ # project = client.Project.find('SAMPLEPROJECT')
42
+ # pp project
43
+ # project.issues.each do |issue|
44
+ # puts "#{issue.id} - #{issue.fields['summary']}"
45
+ # end
46
+ #
47
+ # # List all Issues
48
+ # # ---------------
49
+ # client.Issue.all.each do |issue|
50
+ # puts "#{issue.id} - #{issue.fields['summary']}"
51
+ # end
52
+ #
53
+ # # List issues by JQL query
54
+ # # ------------------------
55
+ # client.Issue.jql('PROJECT = "SAMPLEPROJECT"', {fields: %w(summary status)}).each do |issue|
56
+ # puts "#{issue.id} - #{issue.fields['summary']}"
57
+ # end
58
+ #
59
+ # # Delete an issue
60
+ # # ---------------
61
+ # issue = client.Issue.find('SAMPLEPROJECT-2')
62
+ # if issue.delete
63
+ # puts "Delete of issue SAMPLEPROJECT-2 sucessful"
64
+ # else
65
+ # puts "Delete of issue SAMPLEPROJECT-2 failed"
66
+ # end
67
+ #
68
+ # # Create an issue
69
+ # # ---------------
70
+ # issue = client.Issue.build
71
+ # issue.save({"fields"=>{"summary"=>"blarg from in example.rb","project"=>{"id"=>"10001"},"issuetype"=>{"id"=>"3"}}})
72
+ # issue.fetch
73
+ # pp issue
74
+ #
75
+ # # Update an issue
76
+ # # ---------------
77
+ # issue = client.Issue.find("10002")
78
+ # issue.save({"fields"=>{"summary"=>"EVEN MOOOOOOARRR NINJAAAA!"}})
79
+ # pp issue
80
+ #
81
+ # # Find a user
82
+ # # -----------
83
+ # user = client.User.find('admin')
84
+ # pp user
85
+ #
86
+ # # Get all issue types
87
+ # # -------------------
88
+ # issuetypes = client.Issuetype.all
89
+ # pp issuetypes
90
+ #
91
+ # # Get a single issue type
92
+ # # -----------------------
93
+ # issuetype = client.Issuetype.find('5')
94
+ # pp issuetype
95
+ #
96
+ # # Get all comments for an issue
97
+ # # -----------------------------
98
+ # issue.comments.each do |comment|
99
+ # pp comment
100
+ # end
101
+ #
102
+ # # Build and Save a comment
103
+ # # ------------------------
104
+ # comment = issue.comments.build
105
+ # comment.save!(:body => "New comment from example script")
106
+ #
107
+ # # Delete a comment from the collection
108
+ # # ------------------------------------
109
+ # issue.comments.last.delete
110
+ #
111
+ # # Update an existing comment
112
+ # # --------------------------
113
+ # issue.comments.first.save({"body" => "an updated comment frome example.rb"})
@@ -0,0 +1,35 @@
1
+ $LOAD_PATH.push File.expand_path('lib', __dir__)
2
+ require 'jira/version'
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = 'jira-ruby'
6
+ s.version = JIRA::VERSION
7
+ s.authors = ['SUMO Heavy Industries', 'test IO']
8
+ s.homepage = 'http://www.sumoheavy.com'
9
+ s.summary = 'Ruby Gem for use with the Atlassian JIRA REST API'
10
+ s.description = 'API for JIRA'
11
+ s.licenses = ['MIT']
12
+ s.metadata = { 'source_code_uri' => 'https://github.com/sumoheavy/jira-ruby' }
13
+
14
+ s.required_ruby_version = '>= 1.9.3'
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
19
+ s.require_paths = ['lib']
20
+
21
+ # Runtime Dependencies
22
+ s.add_runtime_dependency 'activesupport'
23
+ s.add_runtime_dependency 'atlassian-jwt'
24
+ s.add_runtime_dependency 'multipart-post'
25
+ s.add_runtime_dependency 'oauth', '~> 0.5', '>= 0.5.0'
26
+
27
+ # Development Dependencies
28
+ s.add_development_dependency 'guard', '~> 2.13', '>= 2.13.0'
29
+ s.add_development_dependency 'guard-rspec', '~> 4.6', '>= 4.6.5'
30
+ s.add_development_dependency 'pry', '~> 0.10', '>= 0.10.3'
31
+ s.add_development_dependency 'railties'
32
+ s.add_development_dependency 'rake', '~> 10.3', '>= 10.3.2'
33
+ s.add_development_dependency 'rspec', '~> 3.0', '>= 3.0.0'
34
+ s.add_development_dependency 'webmock', '~> 1.18', '>= 1.18.0'
35
+ end
@@ -0,0 +1,49 @@
1
+ $LOAD_PATH << __dir__
2
+
3
+ require 'active_support/inflector'
4
+ ActiveSupport::Inflector.inflections do |inflector|
5
+ inflector.singular /status$/, 'status'
6
+ end
7
+
8
+ require 'jira/base'
9
+ require 'jira/base_factory'
10
+ require 'jira/has_many_proxy'
11
+ require 'jira/http_error'
12
+
13
+ require 'jira/resource/user'
14
+ require 'jira/resource/watcher'
15
+ require 'jira/resource/attachment'
16
+ require 'jira/resource/component'
17
+ require 'jira/resource/issuetype'
18
+ require 'jira/resource/version'
19
+ require 'jira/resource/status'
20
+ require 'jira/resource/transition'
21
+ require 'jira/resource/project'
22
+ require 'jira/resource/priority'
23
+ require 'jira/resource/comment'
24
+ require 'jira/resource/worklog'
25
+ require 'jira/resource/applinks'
26
+ require 'jira/resource/issuelinktype'
27
+ require 'jira/resource/issuelink'
28
+ require 'jira/resource/remotelink'
29
+ require 'jira/resource/sprint'
30
+ require 'jira/resource/sprint_report'
31
+ require 'jira/resource/issue'
32
+ require 'jira/resource/filter'
33
+ require 'jira/resource/field'
34
+ require 'jira/resource/rapidview'
35
+ require 'jira/resource/resolution'
36
+ require 'jira/resource/serverinfo'
37
+ require 'jira/resource/createmeta'
38
+ require 'jira/resource/webhook'
39
+ require 'jira/resource/agile'
40
+ require 'jira/resource/board'
41
+ require 'jira/resource/board_configuration'
42
+
43
+ require 'jira/request_client'
44
+ require 'jira/oauth_client'
45
+ require 'jira/http_client'
46
+ require 'jira/jwt_client'
47
+ require 'jira/client'
48
+
49
+ require 'jira/railtie' if defined?(Rails)