jira-api 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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: []