jira-api 0.1.1

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.
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ .rcs
data/README.rdoc ADDED
@@ -0,0 +1,24 @@
1
+ = Jira - Simple API wrapper to communicate with Jira
2
+
3
+ jira-api gem is a simplified API to communicate with Jira
4
+
5
+ == Installation
6
+
7
+ gem install jira-api
8
+
9
+ == Usage:
10
+
11
+ require 'rubygems'
12
+ require 'jira-api'
13
+
14
+ ENV['JIRA_URL'] = 'http://your.jira.com/'
15
+ ENV['JIRA_USER_NAME'] = 'jira_user'
16
+ ENV['JIRA_AUTH_MD5'] = 'md5(user:password)'
17
+ ENV['JIRA_PROJECT_ID'] = '10001'
18
+
19
+ # Create a new jira
20
+ jira_browse_url = JIRA.create('title', 'description')
21
+
22
+ == Authors & Contributors
23
+
24
+ Casey Manion, author, http://github.com/caseman72
@@ -0,0 +1,29 @@
1
+ module Jira
2
+ JIRA_URL = ENV['JIRA_URL'].to_s.gsub!(/\/*$/, '')
3
+ JIRA_USER_NAME = ENV['JIRA_USER_NAME']
4
+ JIRA_AUTH_MD5 = ENV['JIRA_AUTH_MD5']
5
+ JIRA_PROJECT_ID = ENV['JIRA_PROJECT_ID']
6
+ JIRA_USER_AGENT = ENV['JIRA_USER_AGENT'] || 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)'
7
+
8
+ def self.get(id)
9
+ html = Request.fetch(JIRA_URL + '/browse/' + id.to_s, JIRA_AUTH_MD5, JIRA_USER_AGENT).to_s
10
+ jira_id = html [/<a id=\"key-val\"[^>]*>([^<]+)<\/a>/, 1]
11
+
12
+ # TODO ... pretty this up for display
13
+ return JIRA_URL + '/browse/' + jira_id
14
+ end
15
+
16
+ def self.create(title, description)
17
+ params = {
18
+ 'summary' => title,
19
+ 'reporter' => JIRA_USER_NAME,
20
+ 'description'=> '{code}' + description.to_s.gsub!(/\r?\n/, "\r\n") + '{code}',
21
+ 'assignee' => JIRA_USER_NAME,
22
+ 'priority' => 3, # major
23
+ 'pid' => JIRA_PROJECT_ID,
24
+ 'issuetype' => 3 # task
25
+ };
26
+
27
+ return Request.post(JIRA_URL + '/secure/CreateIssueDetails.jspa', params, JIRA_AUTH_MD5, JIRA_USER_AGENT).to_s
28
+ end
29
+ end
@@ -0,0 +1,26 @@
1
+ module Jira
2
+ class Request
3
+ # Returns response body of specified link
4
+ def self.fetch(link, auth, ua)
5
+ url = URI.parse(link)
6
+ resp = Net::HTTP.start(url.host, url.port) do |http|
7
+ http.get(url.path + (url.query ? "?" + url.query.to_s : ""), {'Authorization' => "Basic #{auth}", 'X-Atlassian-Token' => 'no-check', 'User-Agent' => ua})
8
+ end
9
+ return resp.body if resp.kind_of?(Net::HTTPOK)
10
+ end
11
+
12
+ def self.post(link, params, auth, ua)
13
+ url = URI.parse(link)
14
+ params = url_encode(params)
15
+ resp = Net::HTTP.start(url.host, url.port) do |http|
16
+ http.post(url.path + (url.query ? "?" + url.query.to_s : ""), params, {'Authorization' => "Basic #{auth}", 'X-Atlassian-Token' => 'no-check', 'User-Agent' => ua})
17
+ end
18
+ return resp['location'] if resp.kind_of?(Net::HTTPFound)
19
+ end
20
+
21
+ def self.url_encode(params)
22
+ uri_pattern = Regexp.new("[^#{URI::PATTERN::UNRESERVED}]")
23
+ params.to_a.each.inject([]) { |a, p| a << p.first.to_s + "=" + URI.escape(p.last.to_s, uri_pattern) }.join("&")
24
+ end
25
+ end
26
+ end
data/lib/jira-api.rb ADDED
@@ -0,0 +1,5 @@
1
+ require 'net/http'
2
+ require 'uri'
3
+
4
+ require 'jira-api/request'
5
+ require 'jira-api/jira'
metadata ADDED
@@ -0,0 +1,51 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jira-api
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Casey Manion
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-04-24 00:00:00.000000000 +00:00
13
+ default_executable:
14
+ dependencies: []
15
+ description: Simple API access to Jira
16
+ email: casey@manion.com
17
+ executables: []
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - .gitignore
22
+ - README.rdoc
23
+ - lib/jira-api.rb
24
+ - lib/jira-api/jira.rb
25
+ - lib/jira-api/request.rb
26
+ has_rdoc: true
27
+ homepage: http://github.com/caseman72/jira-api
28
+ licenses: []
29
+ post_install_message:
30
+ rdoc_options: []
31
+ require_paths:
32
+ - lib
33
+ required_ruby_version: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ required_rubygems_version: !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ requirements: []
46
+ rubyforge_project:
47
+ rubygems_version: 1.6.2
48
+ signing_key:
49
+ specification_version: 3
50
+ summary: Jira API
51
+ test_files: []