ticket_abstractor_client 0.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/README.md +93 -0
- data/lib/ticket_abstractor_client/brouha_client.rb +5 -0
- data/lib/ticket_abstractor_client/client.rb +19 -0
- data/lib/ticket_abstractor_client/itrc_client.rb +33 -0
- data/lib/ticket_abstractor_client/jira_client.rb +71 -0
- data/lib/ticket_abstractor_client/version.rb +3 -0
- data/lib/ticket_abstractor_client.rb +25 -0
- metadata +101 -0
data/README.md
ADDED
@@ -0,0 +1,93 @@
|
|
1
|
+
# TicketAbstractorClient
|
2
|
+
|
3
|
+
Client for accessing to a TicketAbstractor service.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'ticket_abstractor_client'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install ticket_abstractor_client
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
Initialize:
|
22
|
+
|
23
|
+
client = TicketAbstractorClient.initialize_client('http://ticket.abstractor.url')
|
24
|
+
|
25
|
+
Access clients:
|
26
|
+
|
27
|
+
client.jira
|
28
|
+
client.brouha
|
29
|
+
client.itrc
|
30
|
+
|
31
|
+
### Jira
|
32
|
+
|
33
|
+
Grab issue:
|
34
|
+
|
35
|
+
client.jira.get_issue 'IFS-123'
|
36
|
+
client.jira.get_issue_status 'IFS-123' => 'Open'
|
37
|
+
|
38
|
+
Create issue (summary, description and issuetype fields are required):
|
39
|
+
|
40
|
+
options = { project: "IFS", summary: "Summary", description: "Desc", issuetype: "Bug"}
|
41
|
+
client.jira.create_issue options
|
42
|
+
|
43
|
+
Create issue with an attachment:
|
44
|
+
|
45
|
+
options = { project: "IFS", summary: "Summary", description: "Desc", issuetype: "Bug"}
|
46
|
+
attachment = File.new('file.png', 'rb')
|
47
|
+
client.jira.create_issue options, attachment
|
48
|
+
|
49
|
+
Update issue (issuekey field is required):
|
50
|
+
|
51
|
+
client.jira.update_issue({ issuekey: 'IFS-46728', description: 'new description' })
|
52
|
+
|
53
|
+
Attach the file to issue:
|
54
|
+
|
55
|
+
attachment = File.new('file.png', 'rb')
|
56
|
+
client.jira.update_issue({ issuekey: 'IFS-46728' }, attachment)
|
57
|
+
|
58
|
+
### Brouha
|
59
|
+
|
60
|
+
Grab issue:
|
61
|
+
|
62
|
+
client.brouha.get_issue '12'
|
63
|
+
|
64
|
+
### iTRC
|
65
|
+
|
66
|
+
Find apps:
|
67
|
+
|
68
|
+
client.itrc.list_apps
|
69
|
+
client.itrc.find_app 'itrc'
|
70
|
+
|
71
|
+
Find app_groups:
|
72
|
+
|
73
|
+
client.itrc.list_app_groups
|
74
|
+
client.itrc.find_app_group 'app-mgmt-tools'
|
75
|
+
|
76
|
+
Find business units:
|
77
|
+
|
78
|
+
client.itrc.list_business_units
|
79
|
+
client.itrc.find_business_unit 3
|
80
|
+
|
81
|
+
Find departments:
|
82
|
+
|
83
|
+
client.itrc.list_departments
|
84
|
+
client.itrc.find_department 4
|
85
|
+
|
86
|
+
|
87
|
+
## Contributing
|
88
|
+
|
89
|
+
1. Fork it
|
90
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
91
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
92
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
93
|
+
5. Create new Pull Request
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class TicketAbstractorClient::Client
|
2
|
+
def initialize(base_url)
|
3
|
+
@base_url = base_url
|
4
|
+
end
|
5
|
+
|
6
|
+
def get(url, args = {}, params = {})
|
7
|
+
params.merge! args: args.to_json
|
8
|
+
response = RestClient.get("#{@base_url}/#{url}", params: params)
|
9
|
+
|
10
|
+
JSON.parse response
|
11
|
+
end
|
12
|
+
|
13
|
+
def post(url, args = {}, params = {})
|
14
|
+
params.merge! args: args.to_json
|
15
|
+
response = RestClient.post("#{@base_url}/#{url}", params)
|
16
|
+
|
17
|
+
JSON.parse response
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
class TicketAbstractorClient::ItrcClient < TicketAbstractorClient::Client
|
2
|
+
def list_apps(page = 1, per_page = 20)
|
3
|
+
get 'itrc/list_apps', page: page, per_page: per_page
|
4
|
+
end
|
5
|
+
|
6
|
+
def find_app(id)
|
7
|
+
get 'itrc/find_app', id: id
|
8
|
+
end
|
9
|
+
|
10
|
+
def list_app_groups(page = 1, per_page = 20)
|
11
|
+
get 'itrc/list_app_groups', page: page, per_page: per_page
|
12
|
+
end
|
13
|
+
|
14
|
+
def find_app_group(id)
|
15
|
+
get 'itrc/find_app_group', id: id
|
16
|
+
end
|
17
|
+
|
18
|
+
def list_business_units(page = 1, per_page = 20)
|
19
|
+
get 'itrc/list_business_units', page: page, per_page: per_page
|
20
|
+
end
|
21
|
+
|
22
|
+
def find_business_unit(id)
|
23
|
+
get 'itrc/find_business_unit', id: id
|
24
|
+
end
|
25
|
+
|
26
|
+
def list_departments(page = 1, per_page = 20)
|
27
|
+
get 'itrc/list_departments', page: page, per_page: per_page
|
28
|
+
end
|
29
|
+
|
30
|
+
def find_department(id)
|
31
|
+
get 'itrc/find_department', id: id
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
class TicketAbstractorClient::JiraClient < TicketAbstractorClient::Client
|
2
|
+
##
|
3
|
+
# Get jira issue by issue id
|
4
|
+
#
|
5
|
+
# == Parameters:
|
6
|
+
# issue_key:
|
7
|
+
# issue id in jira
|
8
|
+
#
|
9
|
+
# == Example:
|
10
|
+
# >> client.jira.get_issue 'IFS-123'
|
11
|
+
# => { 'id' => 'IFS-123', 'description' => '...', ... }
|
12
|
+
def get_issue(issue_key)
|
13
|
+
get "ticket/jira/#{issue_key}"
|
14
|
+
end
|
15
|
+
|
16
|
+
##
|
17
|
+
# Get the status of jira issue by issue id
|
18
|
+
#
|
19
|
+
# == Parameters:
|
20
|
+
# issue_key:
|
21
|
+
# issue id in jira
|
22
|
+
#
|
23
|
+
# == Example:
|
24
|
+
# >> client.jira.get_issue_status 'IFS-123'
|
25
|
+
# => 'Resolved'
|
26
|
+
def get_issue_status(issue_key)
|
27
|
+
get_issue(issue_key)['status']
|
28
|
+
end
|
29
|
+
|
30
|
+
def get_issues_by_query(query)
|
31
|
+
get 'jira/get_issues_by_query', query: query
|
32
|
+
end
|
33
|
+
|
34
|
+
def get_users_by_query(query)
|
35
|
+
get 'jira/get_users_by_query', query: query
|
36
|
+
end
|
37
|
+
|
38
|
+
def get_issues_statuses_by_search_query(issues_id)
|
39
|
+
get 'jira/get_issues_statuses_by_search_query', issues_id: issues_id
|
40
|
+
end
|
41
|
+
|
42
|
+
##
|
43
|
+
# Get issues by jira filter
|
44
|
+
#
|
45
|
+
# == Parameters:
|
46
|
+
# filter_id:
|
47
|
+
# filter id in jira
|
48
|
+
#
|
49
|
+
# == Example:
|
50
|
+
# >> client.jira.get_issues_by_filter 24320
|
51
|
+
# => [{ 'id' => 'ID-1', ... }, { 'id' => 'ID-2', ... }]
|
52
|
+
def get_issues_by_filter(filter_id)
|
53
|
+
get 'jira/get_issues_by_filter', filter_id: filter_id
|
54
|
+
end
|
55
|
+
|
56
|
+
def get_fields_by_project(project_key)
|
57
|
+
get 'jira/get_fields_by_project', project_key: project_key
|
58
|
+
end
|
59
|
+
|
60
|
+
def create_issue(opts = {}, *attachments)
|
61
|
+
post('jira/create_issue', { opts: opts }, attachments: attachments)
|
62
|
+
end
|
63
|
+
|
64
|
+
def update_issue(opts = {}, *attachments)
|
65
|
+
post('jira/update_issue', { opts: opts }, attachments: attachments)
|
66
|
+
end
|
67
|
+
|
68
|
+
def add_comment(issue_key, comment)
|
69
|
+
post 'jira/add_comment', issue_key: issue_key, comment: comment
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module TicketAbstractorClient
|
2
|
+
def self.initialize_client(url)
|
3
|
+
@url = url
|
4
|
+
self
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.jira
|
8
|
+
@jira_client ||= JiraClient.new(@url)
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.brouha
|
12
|
+
@brouha_client ||= BrouhaClient.new(@url)
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.itrc
|
16
|
+
@itrc ||= ItrcClient.new(@url)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
require 'rest_client'
|
21
|
+
require 'ticket_abstractor_client/version'
|
22
|
+
require 'ticket_abstractor_client/client'
|
23
|
+
require 'ticket_abstractor_client/jira_client'
|
24
|
+
require 'ticket_abstractor_client/brouha_client'
|
25
|
+
require 'ticket_abstractor_client/itrc_client'
|
metadata
ADDED
@@ -0,0 +1,101 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ticket_abstractor_client
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.1'
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- rsamoilov
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2014-02-11 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bundler
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '1.3'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.3'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rake
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rest-client
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 1.6.7
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.6.7
|
62
|
+
description: Get access to Jira and Brouha ticketing systems through the single service
|
63
|
+
email:
|
64
|
+
- rsamoilov@productengine.com
|
65
|
+
executables: []
|
66
|
+
extensions: []
|
67
|
+
extra_rdoc_files: []
|
68
|
+
files:
|
69
|
+
- lib/ticket_abstractor_client.rb
|
70
|
+
- lib/ticket_abstractor_client/jira_client.rb
|
71
|
+
- lib/ticket_abstractor_client/itrc_client.rb
|
72
|
+
- lib/ticket_abstractor_client/brouha_client.rb
|
73
|
+
- lib/ticket_abstractor_client/client.rb
|
74
|
+
- lib/ticket_abstractor_client/version.rb
|
75
|
+
- README.md
|
76
|
+
homepage: http://github.com/rsamoilov/ticket_abstractor_client
|
77
|
+
licenses:
|
78
|
+
- MIT
|
79
|
+
post_install_message:
|
80
|
+
rdoc_options: []
|
81
|
+
require_paths:
|
82
|
+
- lib
|
83
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
84
|
+
none: false
|
85
|
+
requirements:
|
86
|
+
- - ! '>='
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0'
|
89
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ! '>='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
95
|
+
requirements: []
|
96
|
+
rubyforge_project:
|
97
|
+
rubygems_version: 1.8.25
|
98
|
+
signing_key:
|
99
|
+
specification_version: 3
|
100
|
+
summary: Client for the Ticket Abstractor service
|
101
|
+
test_files: []
|