vimaly 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d14adbbb6cfb6bcd28a369de71608726014a378b
4
- data.tar.gz: bcc970b7e562eed22ae9b180a1e9737aa2bf103d
3
+ metadata.gz: 956fd4a26b6f2eba08ed381f2742879e1e95067c
4
+ data.tar.gz: 501b0918f52ac4a7a039163cc0a15600982cf0b7
5
5
  SHA512:
6
- metadata.gz: 6b422a4e99ebb3dc15fc35bf4ef43c90c85582d951ee335cfd1069c35a184c0c741801e9b211125caedcc855fb3bb794343dda60dae0bf9d0780cdee727c9a51
7
- data.tar.gz: d2c65390339e2c1791865126c9951d484cedfe6a4bae5c5bfb55acaaa65020a90a1b02628e9bcf0cd5c11e9bafae2b24b9fa4a7b8729e6206c35c29f4bee1b60
6
+ metadata.gz: 35e629bd3feb3ff0f584e3211f01a570b06fe96d93e83f87f73eca4ea0892658f5cc7534c52f8af4a133cc8e7242fabbca23b3c7e28b908ef06f1e16401c9634
7
+ data.tar.gz: a213d402482328b805eafef6c6454c6d1a3b5646df734dc2e614c931ff2c24dd97fbbf6f95ea62e620d72f403d5b81312a515547d22fd559e5b5ad67c90b2526
data/lib/vimaly/client.rb CHANGED
@@ -30,8 +30,8 @@ module Vimaly
30
30
  ticket_to_json = ticket.to_json(custom_field_name_map)
31
31
  response = post("/tickets/#{next_ticket_id}", ticket_to_json)
32
32
  case response.status
33
- when 200..299
34
- true
33
+ when 200..299
34
+ true
35
35
  else
36
36
  log_warn "status: #{response.status}"
37
37
  log_warn " #{response.inspect}"
@@ -40,7 +40,7 @@ module Vimaly
40
40
  end
41
41
 
42
42
  def update_ticket(id, other_fields)
43
- ticket = Ticket.new(other_fields)
43
+ ticket = Ticket.new(other_fields)
44
44
 
45
45
  response = put("/tickets/#{id}", ticket.to_json(custom_field_name_map, true))
46
46
  case response.status
@@ -97,11 +97,10 @@ module Vimaly
97
97
  ticket_type_map = Hash[ticket_types.map { |t| [t.id, t] }]
98
98
  bin_map = Hash[bins.map { |b| [b.id, b] }]
99
99
 
100
- @bin_tickets[bin_id] ||= begin
101
- get("/tickets?bin_id=#{bin_id}").map do |ticket_data|
102
- Ticket.from_vimaly(ticket_data, ticket_type_map, bin_map, custom_fields)
103
- end
100
+ get("/tickets?bin_id=#{bin_id}").map do |ticket_data|
101
+ Ticket.from_vimaly(ticket_data, ticket_type_map, bin_map, custom_fields)
104
102
  end
103
+
105
104
  end
106
105
 
107
106
  def matching_tickets_in_named_bin(bin_name, title_matcher)
@@ -144,7 +143,7 @@ module Vimaly
144
143
  request.headers.update({ accept: 'application/json', content_type: 'application/json' })
145
144
  end
146
145
  unless response.success?
147
- raise("Vimaly #{api_path} call failed")
146
+ raise("Vimaly #{api_path} call failed with response #{response.status}")
148
147
  end
149
148
  JSON.parse(response.body)
150
149
  end
data/lib/vimaly/ticket.rb CHANGED
@@ -1,12 +1,14 @@
1
+ require "active_support/core_ext/hash/indifferent_access"
2
+
1
3
  module Vimaly
2
4
  class Ticket
3
5
 
4
6
  # title, description, format, ticket_type, bin, id=nil
5
7
  def initialize(*params)
6
8
  if params.first.is_a?(Hash)
7
- @ticket_fields = params.first
9
+ @ticket_fields = HashWithIndifferentAccess.new(params.first)
8
10
  else
9
- @ticket_fields = {}
11
+ @ticket_fields = HashWithIndifferentAccess.new
10
12
  [:title, :description, :format, :ticket_type, :bin, :id].each_with_index do |param_key, idx|
11
13
  break if idx>=params.size
12
14
  @ticket_fields[param_key] = params[idx]
@@ -44,19 +46,22 @@ module Vimaly
44
46
  def to_vimaly(custom_field_name_map, for_update=false)
45
47
  vimaly_fields = Hash[@ticket_fields.map do |field_name, field_value|
46
48
  case(field_name)
47
- when :format
49
+ when 'id'
50
+ nil # id should not be in ticket body
51
+ when 'format'
48
52
  ['rtformat', field_value]
49
- when :title
53
+ when 'title'
50
54
  ['name', field_value]
51
- when :description
55
+ when 'description'
52
56
  ['description', normalise(field_value)]
53
- when :ticket_type
57
+ when 'ticket_type'
54
58
  ['ticketType_id', field_value.id]
55
- when :bin
59
+ when 'bin'
56
60
  ['bin_id', field_value.id]
57
61
  else
58
62
  if for_update
59
- fdef = custom_field_name_map[field_name.to_s]
63
+ fdef = custom_field_name_map[field_name]
64
+ raise "Field type #{field_name} is not a defined custom or standard field in Vimaly" unless fdef
60
65
  ["customFields.#{fdef[:id]}", cast_to_vimaly(field_value, fdef[:type])]
61
66
  else
62
67
  nil
@@ -66,7 +71,7 @@ module Vimaly
66
71
  ]
67
72
 
68
73
  unless for_update
69
- custom_fields = @ticket_fields.select {|fn, _v| ![:format, :title, :description, :ticket_type, :bin].include?(fn) }
74
+ custom_fields = @ticket_fields.select {|fn, _v| ![:format, :title, :description, :ticket_type, :bin].include?(fn.to_sym) }
70
75
  if custom_fields && !custom_fields.empty?
71
76
  vimaly_fields['customFields'] =
72
77
  Hash[custom_fields.map do |field_name, field_value|
@@ -98,6 +103,11 @@ module Vimaly
98
103
  to_vimaly(custom_field_name_map, for_update).to_json
99
104
  end
100
105
 
106
+ def add_id(id)
107
+ raise "Ticket already has id #{@ticket_fields[:'_id']} and we try and add #{id}" if @ticket_fields[:'_id']
108
+ @ticket_fields['_id'] = id
109
+ end
110
+
101
111
  def [](name)
102
112
  @ticket_fields[name]
103
113
  end
@@ -108,6 +118,10 @@ module Vimaly
108
118
  super
109
119
  end
110
120
 
121
+ def update_fields(fields)
122
+ @ticket_fields.merge!(fields)
123
+ end
124
+
111
125
  private
112
126
 
113
127
  def normalise(text)
@@ -1,3 +1,3 @@
1
1
  module Vimaly
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
data/vimaly.gemspec CHANGED
@@ -21,9 +21,10 @@ Gem::Specification.new do |spec|
21
21
 
22
22
  spec.add_dependency "faraday"
23
23
  spec.add_dependency "faraday_middleware"
24
+ spec.add_dependency "activesupport"
24
25
 
25
- spec.add_development_dependency "bundler", "~> 1.12"
26
- spec.add_development_dependency "rake", "~> 10.0"
26
+ spec.add_development_dependency "bundler"
27
+ spec.add_development_dependency "rake"
27
28
  spec.add_development_dependency "pry"
28
29
  spec.add_development_dependency "maxitest", '~> 1'
29
30
  spec.add_development_dependency "shoulda-context"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vimaly
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thorsten Boettger
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-02-14 00:00:00.000000000 Z
11
+ date: 2017-03-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -38,34 +38,48 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: activesupport
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: bundler
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
- - - "~>"
59
+ - - ">="
46
60
  - !ruby/object:Gem::Version
47
- version: '1.12'
61
+ version: '0'
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
- - - "~>"
66
+ - - ">="
53
67
  - !ruby/object:Gem::Version
54
- version: '1.12'
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rake
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
- - - "~>"
73
+ - - ">="
60
74
  - !ruby/object:Gem::Version
61
- version: '10.0'
75
+ version: '0'
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
- - - "~>"
80
+ - - ">="
67
81
  - !ruby/object:Gem::Version
68
- version: '10.0'
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: pry
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -166,7 +180,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
166
180
  version: '0'
167
181
  requirements: []
168
182
  rubyforge_project:
169
- rubygems_version: 2.6.8
183
+ rubygems_version: 2.5.1
170
184
  signing_key:
171
185
  specification_version: 4
172
186
  summary: Wrapper for the Vimaly API