teamsupport 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,81 @@
1
+ require 'teamsupport/base'
2
+ require 'teamsupport/creatable'
3
+ require 'teamsupport/identity'
4
+
5
+ module Teamsupport
6
+ class Ticket < Teamsupport::Identity
7
+ include Teamsupport::Creatable
8
+
9
+ # @return [Integer]
10
+ attr_reader :ID, :StatusPosition, :SeverityPosition, :TicketNumber, :ReportedVersionID, :SolvedVersionID, :ProductID, :GroupID, :UserID, :TicketStatusID, :TicketTypeID, :TicketSeverityID, :OrganizationID, :ParentID, :ModifierID, :CreatorID, :CloserID, :DaysClosed, :DaysOpened, :KnowledgeBaseCategoryID
11
+ # @return [Float]
12
+ attr_reader :HoursSpent, :SlaViolationTime, :SlaWarningTime, :SlaViolationHours, :SlaWarningHours
13
+ # @return [String]
14
+ attr_reader :ProductName, :ReportedVersion, :SolvedVersion, :GroupName, :TicketTypeName, :UserName, :Status, :Severity, :Name, :CloserName, :CreatorName, :ModifierName, :KnowledgeBaseCategoryName, :TicketSource
15
+
16
+ # Boolean indicating whether a Ticket is closed on Teamsupport
17
+ #
18
+ # @example
19
+ # teamsupport_ticket = Teamsupport::Ticket.new(IsClosed: true)
20
+ # teamsupport_ticket.IsClosed
21
+ #
22
+ # @return [Boolean]
23
+ #
24
+ # @api public
25
+ def IsClosed # rubocop:disable Style/MethodName
26
+ @attrs[:IsClosed] == 'True' ? true : false
27
+ end
28
+
29
+ # Boolean indicating whether a Ticket is visible via the portal on Teamsupport
30
+ #
31
+ # @example
32
+ # teamsupport_ticket = Teamsupport::Ticket.new(IsVisibleOnPortal: true)
33
+ # teamsupport_ticket.IsVisibleOnPortal
34
+ #
35
+ # @return [Boolean]
36
+ #
37
+ # @api public
38
+ def IsVisibleOnPortal # rubocop:disable Style/MethodName
39
+ @attrs[:IsVisibleOnPortal] == 'True' ? true : false
40
+ end
41
+
42
+ # Boolean indicating whether a Ticket is shown in the knowledgebase on Teamsupport
43
+ #
44
+ # @example
45
+ # teamsupport_ticket = Teamsupport::Ticket.new(IsKnowledgeBase: true)
46
+ # teamsupport_ticket.IsKnowledgeBase
47
+ #
48
+ # @return [Boolean]
49
+ #
50
+ # @api public
51
+ def IsKnowledgeBase # rubocop:disable Style/MethodName
52
+ @attrs[:IsKnowledgeBase] == 'True' ? true : false
53
+ end
54
+
55
+ # Time when the Ticket was closed on Teamsupport
56
+ #
57
+ # @example
58
+ # teamsupport_ticket = Teamsupport::Ticket.new(DateClosed: '4/4/2015 10:00 AM')
59
+ # teamsupport_ticket.DateClosed
60
+ #
61
+ # @return [Time]
62
+ #
63
+ # @api public
64
+ def DateClosed # rubocop:disable Style/MethodName
65
+ Time.strptime(@attrs[:DateClosed], '%m/%d/%Y %l:%M %p').utc unless @attrs[:DateClosed].nil?
66
+ end
67
+
68
+ # Time when the Ticket is due to be completed on Teamsupport
69
+ #
70
+ # @example
71
+ # teamsupport_ticket = Teamsupport::Ticket.new(DueDate: '4/4/2015 10:15 AM')
72
+ # teamsupport_ticket.DueDate
73
+ #
74
+ # @return [Time]
75
+ #
76
+ # @api public
77
+ def DueDate # rubocop:disable Style/MethodName
78
+ Time.strptime(@attrs[:DueDate], '%m/%d/%Y %l:%M %p').utc unless @attrs[:DueDate].nil?
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,16 @@
1
+ require 'teamsupport/base'
2
+ require 'teamsupport/creatable'
3
+ require 'teamsupport/ticket'
4
+
5
+ module Teamsupport
6
+ class TicketAction < Teamsupport::Ticket
7
+ include Teamsupport::Creatable
8
+
9
+ # @return [Integer]
10
+ attr_reader :ID, :CreatorID, :ModifierID, :UserID, :OrganizationID, :ProductID, :TicketID, :TicketNumber
11
+ # @return [Float]
12
+ attr_reader :HoursSpent, :SlaViolationTime, :SlaWarningTime, :SlaViolationHours, :SlaWarningHours
13
+ # @return [String]
14
+ attr_reader :Name, :Description, :ActionType, :CreatorName, :ModifierName, :UserName
15
+ end
16
+ end
@@ -0,0 +1,33 @@
1
+ module Teamsupport
2
+ module Utils
3
+ module_function
4
+
5
+ # Returns new array with concatenated results of running block for every element
6
+ #
7
+ # @param enumerable [Enumerable]
8
+ #
9
+ # @return [Array, Enumerator]
10
+ #
11
+ # @api private
12
+ def flat_pmap(enumerable)
13
+ return to_enum(:flat_pmap, enumerable) unless block_given?
14
+ pmap(enumerable, &Proc.new).flatten(1)
15
+ end
16
+
17
+ # Returns new array with the results of running block once for every element
18
+ #
19
+ # @param enumerable [Enumerable]
20
+ #
21
+ # @return [Array, Enumerator]
22
+ #
23
+ # @api private
24
+ def pmap(enumerable)
25
+ return to_enum(:pmap, enumerable) unless block_given?
26
+ if enumerable.count == 1
27
+ enumerable.collect { |object| yield(object) }
28
+ else
29
+ enumerable.collect { |object| Thread.new { yield(object) } }.collect(&:value)
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,73 @@
1
+ module Teamsupport
2
+ module Version
3
+ module_function
4
+
5
+ # Returns major version
6
+ #
7
+ # @return [Integer]
8
+ #
9
+ # @api private
10
+ def major
11
+ 0
12
+ end
13
+
14
+ # Returns minor version
15
+ #
16
+ # @return [Integer]
17
+ #
18
+ # @api private
19
+ def minor
20
+ 1
21
+ end
22
+
23
+ # Returns patch version
24
+ #
25
+ # @return [Integer]
26
+ #
27
+ # @api private
28
+ def patch
29
+ 0
30
+ end
31
+
32
+ # Returns pre version
33
+ #
34
+ # @return [Integer, NilClass]
35
+ #
36
+ # @api private
37
+ def pre
38
+ nil
39
+ end
40
+
41
+ # Returns version as hash
42
+ #
43
+ # @return [Hash]
44
+ #
45
+ # @api private
46
+ def to_h
47
+ {
48
+ major: major,
49
+ minor: minor,
50
+ patch: patch,
51
+ pre: pre,
52
+ }
53
+ end
54
+
55
+ # Returns version as array
56
+ #
57
+ # @return [Array]
58
+ #
59
+ # @api private
60
+ def to_a
61
+ [major, minor, patch, pre].compact
62
+ end
63
+
64
+ # Returns version as string
65
+ #
66
+ # @return [String]
67
+ #
68
+ # @api private
69
+ def to_s
70
+ to_a.join('.')
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,27 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'teamsupport/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.add_dependency 'addressable', '~> 2.3'
8
+ spec.add_dependency 'equalizer', '~> 0.0.11'
9
+ spec.add_dependency 'http', '~> 1.0'
10
+ spec.add_dependency 'http-form_data', '~> 1.0'
11
+ spec.add_dependency 'naught', '~> 1.0'
12
+ spec.add_development_dependency 'bundler', '~> 1.11'
13
+
14
+ spec.name = 'teamsupport'
15
+ spec.version = Teamsupport::Version
16
+ spec.authors = ['Jon Beilke']
17
+ spec.email = ['jrbeilke@gmail.com']
18
+
19
+ spec.summary = spec.description
20
+ spec.description = 'A Ruby interface to the Teamsupport API.'
21
+ spec.homepage = 'https://github.com/jrbeilke/teamsupport'
22
+ spec.licenses = %w(MIT)
23
+
24
+ spec.files = %w(.yardopts CHANGELOG.md CONTRIBUTING.md LICENSE.md README.md teamsupport.gemspec) + Dir['lib/**/*.rb']
25
+ spec.require_paths = %w(lib)
26
+ spec.required_ruby_version = '>= 1.9.3'
27
+ end
metadata ADDED
@@ -0,0 +1,158 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: teamsupport
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Jon Beilke
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-09-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: addressable
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.3'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: equalizer
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.0.11
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.0.11
41
+ - !ruby/object:Gem::Dependency
42
+ name: http
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: http-form_data
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: naught
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: bundler
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.11'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.11'
97
+ description: A Ruby interface to the Teamsupport API.
98
+ email:
99
+ - jrbeilke@gmail.com
100
+ executables: []
101
+ extensions: []
102
+ extra_rdoc_files: []
103
+ files:
104
+ - ".yardopts"
105
+ - CHANGELOG.md
106
+ - CONTRIBUTING.md
107
+ - LICENSE.md
108
+ - README.md
109
+ - lib/teamsupport.rb
110
+ - lib/teamsupport/arguments.rb
111
+ - lib/teamsupport/base.rb
112
+ - lib/teamsupport/client.rb
113
+ - lib/teamsupport/creatable.rb
114
+ - lib/teamsupport/customer.rb
115
+ - lib/teamsupport/customer_product.rb
116
+ - lib/teamsupport/error.rb
117
+ - lib/teamsupport/headers.rb
118
+ - lib/teamsupport/identity.rb
119
+ - lib/teamsupport/null_object.rb
120
+ - lib/teamsupport/product.rb
121
+ - lib/teamsupport/rest/api.rb
122
+ - lib/teamsupport/rest/client.rb
123
+ - lib/teamsupport/rest/customers.rb
124
+ - lib/teamsupport/rest/products.rb
125
+ - lib/teamsupport/rest/request.rb
126
+ - lib/teamsupport/rest/tickets.rb
127
+ - lib/teamsupport/rest/utils.rb
128
+ - lib/teamsupport/ticket.rb
129
+ - lib/teamsupport/ticket_action.rb
130
+ - lib/teamsupport/utils.rb
131
+ - lib/teamsupport/version.rb
132
+ - teamsupport.gemspec
133
+ homepage: https://github.com/jrbeilke/teamsupport
134
+ licenses:
135
+ - MIT
136
+ metadata: {}
137
+ post_install_message:
138
+ rdoc_options: []
139
+ require_paths:
140
+ - lib
141
+ required_ruby_version: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: 1.9.3
146
+ required_rubygems_version: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - ">="
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
151
+ requirements: []
152
+ rubyforge_project:
153
+ rubygems_version: 2.4.2
154
+ signing_key:
155
+ specification_version: 4
156
+ summary: ''
157
+ test_files: []
158
+ has_rdoc: