zammad_api 1.2.0 → 1.3.0
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.
- checksums.yaml +4 -4
- data/lib/zammad_api/client.rb +5 -6
- data/lib/zammad_api/dispatcher.rb +0 -1
- data/lib/zammad_api/list_all.rb +0 -1
- data/lib/zammad_api/list_base.rb +4 -10
- data/lib/zammad_api/list_search.rb +0 -1
- data/lib/zammad_api/log.rb +2 -1
- data/lib/zammad_api/resources/base.rb +8 -2
- data/lib/zammad_api/resources/ticket.rb +2 -3
- data/lib/zammad_api/resources/ticket_article.rb +2 -3
- data/lib/zammad_api/resources/ticket_article_attachment.rb +2 -3
- data/lib/zammad_api/resources.rb +1 -1
- data/lib/zammad_api/transport.rb +4 -6
- data/lib/zammad_api/version.rb +1 -1
- metadata +5 -63
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 42c75fd97c167f27bec8282ccd8214f3885e051691c042ad0e8e491651814d81
|
|
4
|
+
data.tar.gz: 949a756e4310f53f9ca929a9e973dcb30af4a80e494e55059da6cac345a8bc28
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b6625e7abed25c87ae3fe46bf543c9095cc092f61eacc23fded2af1a9807a0fc8ebf589221d6afbb57414704e3c732e9f629f89bf460791cffecd91448398a38
|
|
7
|
+
data.tar.gz: '0379ee29e881afe691eb7d47b0c2c3dbe01ae0a6eddd73e783d24ec8c07fc0dd635dca03148c9a539c006e5b2ad6c87173b944e5511024849727ffcff58be454'
|
data/lib/zammad_api/client.rb
CHANGED
|
@@ -6,7 +6,6 @@ require 'zammad_api/dispatcher'
|
|
|
6
6
|
require 'zammad_api/resources'
|
|
7
7
|
|
|
8
8
|
module ZammadAPI
|
|
9
|
-
|
|
10
9
|
class Client
|
|
11
10
|
extend Forwardable
|
|
12
11
|
|
|
@@ -27,7 +26,7 @@ module ZammadAPI
|
|
|
27
26
|
end
|
|
28
27
|
|
|
29
28
|
def method_missing(method, *_args)
|
|
30
|
-
method = modulize(
|
|
29
|
+
method = modulize(method.to_s)
|
|
31
30
|
class_name = "ZammadAPI::Resources::#{method}"
|
|
32
31
|
begin
|
|
33
32
|
class_object = Kernel.const_get(class_name)
|
|
@@ -41,7 +40,7 @@ module ZammadAPI
|
|
|
41
40
|
|
|
42
41
|
def check_config
|
|
43
42
|
raise 'missing url in config' if !@config[:url]
|
|
44
|
-
raise 'config url needs to start with http:// or https://' if
|
|
43
|
+
raise 'config url needs to start with http:// or https://' if !%r{^(http|https)://}.match?(@config[:url])
|
|
45
44
|
|
|
46
45
|
# check for token auth
|
|
47
46
|
return if @config[:http_token] && !@config[:http_token].empty?
|
|
@@ -58,9 +57,9 @@ module ZammadAPI
|
|
|
58
57
|
|
|
59
58
|
def modulize(string)
|
|
60
59
|
string.gsub(/__(.?)/) { "::#{$1.upcase}" }
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
60
|
+
.gsub(%r{/(.?)}) { "::#{$1.upcase}" }
|
|
61
|
+
.gsub(/(?:_+|-+)([a-z])/) { $1.upcase }
|
|
62
|
+
.gsub(/(\A|\s)([a-z])/) { $1 + $2.upcase }
|
|
64
63
|
end
|
|
65
64
|
end
|
|
66
65
|
end
|
data/lib/zammad_api/list_all.rb
CHANGED
data/lib/zammad_api/list_base.rb
CHANGED
|
@@ -14,7 +14,6 @@ module ZammadAPI
|
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
def [](position)
|
|
17
|
-
|
|
18
17
|
local_parameter = @parameter.merge(
|
|
19
18
|
page: position + 1,
|
|
20
19
|
per_page: 1
|
|
@@ -23,7 +22,6 @@ module ZammadAPI
|
|
|
23
22
|
end
|
|
24
23
|
|
|
25
24
|
def page(page, per_page, &block)
|
|
26
|
-
|
|
27
25
|
@parameter[:page] = page
|
|
28
26
|
@parameter[:per_page] = per_page
|
|
29
27
|
fetch_and_yield_each(&block)
|
|
@@ -45,18 +43,14 @@ module ZammadAPI
|
|
|
45
43
|
|
|
46
44
|
private
|
|
47
45
|
|
|
48
|
-
def fetch_and_yield_each
|
|
46
|
+
def fetch_and_yield_each(&block)
|
|
49
47
|
result = perform_request(@parameter)
|
|
50
|
-
result.each
|
|
51
|
-
yield item
|
|
52
|
-
}
|
|
48
|
+
result.each(&block)
|
|
53
49
|
end
|
|
54
50
|
|
|
55
51
|
def request(request, url, parameter)
|
|
56
|
-
|
|
57
52
|
# convert parameters into a GET query
|
|
58
53
|
url += '?' + parameter.map { |key, value|
|
|
59
|
-
|
|
60
54
|
if !value.is_a? String
|
|
61
55
|
value = value.to_s
|
|
62
56
|
end
|
|
@@ -71,11 +65,11 @@ module ZammadAPI
|
|
|
71
65
|
end
|
|
72
66
|
|
|
73
67
|
list = []
|
|
74
|
-
data.each
|
|
68
|
+
data.each do |local_data|
|
|
75
69
|
item = @resource.new(@transport, local_data)
|
|
76
70
|
item.new_instance = false
|
|
77
71
|
list.push item
|
|
78
|
-
|
|
72
|
+
end
|
|
79
73
|
list
|
|
80
74
|
end
|
|
81
75
|
|
data/lib/zammad_api/log.rb
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
module ZammadAPI
|
|
2
2
|
class Log
|
|
3
|
-
|
|
4
3
|
def initialize(config)
|
|
5
4
|
return if !config[:logger]
|
|
5
|
+
|
|
6
6
|
require 'logger'
|
|
7
7
|
@logger = Logger.new($stderr)
|
|
8
8
|
#@logger.level = Logger::WARN
|
|
@@ -11,6 +11,7 @@ module ZammadAPI
|
|
|
11
11
|
|
|
12
12
|
def method_missing(method, *args)
|
|
13
13
|
return if !@logger
|
|
14
|
+
|
|
14
15
|
@logger.send(method, args)
|
|
15
16
|
end
|
|
16
17
|
end
|
|
@@ -23,6 +23,7 @@ module ZammadAPI
|
|
|
23
23
|
|
|
24
24
|
def method_missing(method, *args)
|
|
25
25
|
return @attributes[method] if !method.to_s.end_with?('=')
|
|
26
|
+
|
|
26
27
|
method = method.to_s[0, method.length - 1].to_sym
|
|
27
28
|
@changes[method] = [@attributes[method], args[0]]
|
|
28
29
|
@attributes[method] = args[0]
|
|
@@ -43,6 +44,7 @@ module ZammadAPI
|
|
|
43
44
|
data = JSON.parse(response.body)
|
|
44
45
|
end
|
|
45
46
|
return true if response.status == 200
|
|
47
|
+
|
|
46
48
|
raise "Can't destroy object (#{self.class.name}): #{data['error']}"
|
|
47
49
|
end
|
|
48
50
|
|
|
@@ -78,6 +80,7 @@ module ZammadAPI
|
|
|
78
80
|
if response.status != 200
|
|
79
81
|
raise "Can't find object (#{self.class.name}): #{data['error']}"
|
|
80
82
|
end
|
|
83
|
+
|
|
81
84
|
item = new(transport, data)
|
|
82
85
|
item.new_instance = false
|
|
83
86
|
item
|
|
@@ -99,6 +102,7 @@ module ZammadAPI
|
|
|
99
102
|
|
|
100
103
|
def saved_attributes
|
|
101
104
|
return save_new if @new_instance
|
|
105
|
+
|
|
102
106
|
save_existing
|
|
103
107
|
end
|
|
104
108
|
|
|
@@ -106,18 +110,20 @@ module ZammadAPI
|
|
|
106
110
|
response = @transport.post(url: "#{@url}?expand=true", params: @attributes)
|
|
107
111
|
attributes = JSON.parse(response.body)
|
|
108
112
|
return attributes if response.status == 201
|
|
113
|
+
|
|
109
114
|
save_error(attributes)
|
|
110
115
|
end
|
|
111
116
|
|
|
112
117
|
def save_existing
|
|
113
118
|
attributes_to_post = {}
|
|
114
|
-
@changes.each
|
|
119
|
+
@changes.each do |name, values|
|
|
115
120
|
attributes_to_post[name] = values[1]
|
|
116
|
-
|
|
121
|
+
end
|
|
117
122
|
response = @transport.put(url: "#{@url}/#{@attributes[:id]}?expand=true", params: attributes_to_post)
|
|
118
123
|
attributes = JSON.parse(response.body)
|
|
119
124
|
|
|
120
125
|
return attributes if response.status == 200
|
|
126
|
+
|
|
121
127
|
save_error(attributes)
|
|
122
128
|
end
|
|
123
129
|
|
|
@@ -8,11 +8,11 @@ class ZammadAPI::Resources::Ticket < ZammadAPI::Resources::Base
|
|
|
8
8
|
raise "Can't get articles (#{self.class.name}): #{data['error']}"
|
|
9
9
|
end
|
|
10
10
|
|
|
11
|
-
data.collect
|
|
11
|
+
data.collect do |raw|
|
|
12
12
|
item = ZammadAPI::Resources::TicketArticle.new(@transport, raw)
|
|
13
13
|
item.new_instance = false
|
|
14
14
|
item
|
|
15
|
-
|
|
15
|
+
end
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
def article(data)
|
|
@@ -21,5 +21,4 @@ class ZammadAPI::Resources::Ticket < ZammadAPI::Resources::Base
|
|
|
21
21
|
item.save
|
|
22
22
|
item
|
|
23
23
|
end
|
|
24
|
-
|
|
25
24
|
end
|
|
@@ -2,11 +2,10 @@ class ZammadAPI::Resources::TicketArticle < ZammadAPI::Resources::Base
|
|
|
2
2
|
url '/api/v1/ticket_articles'
|
|
3
3
|
|
|
4
4
|
def attachments
|
|
5
|
-
@attributes[:attachments].collect
|
|
5
|
+
@attributes[:attachments].collect do |raw|
|
|
6
6
|
raw[:ticket_id] = @attributes[:ticket_id]
|
|
7
7
|
raw[:article_id] = @attributes[:id]
|
|
8
8
|
ZammadAPI::Resources::TicketArticleAttachment.new(@transport, raw)
|
|
9
|
-
|
|
9
|
+
end
|
|
10
10
|
end
|
|
11
|
-
|
|
12
11
|
end
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
class ZammadAPI::Resources::TicketArticleAttachment < ZammadAPI::Resources::Base
|
|
2
|
-
|
|
3
|
-
def initialize(transport, attributes = {})
|
|
2
|
+
def initialize(transport, attributes = {}) # rubocop:disable Lint/MissingSuper
|
|
4
3
|
@transport = transport
|
|
5
4
|
@attributes = attributes
|
|
6
5
|
symbolize_keys_deep!(@attributes)
|
|
@@ -13,8 +12,8 @@ class ZammadAPI::Resources::TicketArticleAttachment < ZammadAPI::Resources::Base
|
|
|
13
12
|
def download
|
|
14
13
|
response = @transport.get(url: "/api/v1/ticket_attachment/#{ticket_id}/#{article_id}/#{id}")
|
|
15
14
|
return response.body if response.status == 200
|
|
15
|
+
|
|
16
16
|
data = JSON.parse(response.body)
|
|
17
17
|
raise "Can't get articles (#{self.class.name}): #{data['error']}"
|
|
18
18
|
end
|
|
19
|
-
|
|
20
19
|
end
|
data/lib/zammad_api/resources.rb
CHANGED
data/lib/zammad_api/transport.rb
CHANGED
|
@@ -3,7 +3,6 @@ require 'openssl'
|
|
|
3
3
|
|
|
4
4
|
module ZammadAPI
|
|
5
5
|
class Transport
|
|
6
|
-
|
|
7
6
|
attr_accessor :url, :user, :password, :on_behalf_of
|
|
8
7
|
|
|
9
8
|
def initialize(config, logger)
|
|
@@ -12,7 +11,7 @@ module ZammadAPI
|
|
|
12
11
|
@conn = Faraday.new(url: config[:url]) do |faraday|
|
|
13
12
|
#faraday.request :url_encoded # form-encode POST params
|
|
14
13
|
#faraday.response :logger # log requests to STDOUT
|
|
15
|
-
faraday.adapter Faraday.default_adapter
|
|
14
|
+
faraday.adapter Faraday.default_adapter # make requests with Net::HTTP
|
|
16
15
|
end
|
|
17
16
|
@conn.headers[:user_agent] = 'Zammad API Ruby'
|
|
18
17
|
if config[:http_token] && !config[:http_token].empty?
|
|
@@ -26,16 +25,15 @@ module ZammadAPI
|
|
|
26
25
|
|
|
27
26
|
%w[get post put delete].each do |method|
|
|
28
27
|
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
|
29
|
-
def #{method}(params)
|
|
30
|
-
run_request(:#{method}, params)
|
|
31
|
-
end
|
|
28
|
+
def #{method}(params) # def get(params)
|
|
29
|
+
run_request(:#{method}, params) # run_request(:get, params)
|
|
30
|
+
end # end
|
|
32
31
|
RUBY
|
|
33
32
|
end
|
|
34
33
|
|
|
35
34
|
private
|
|
36
35
|
|
|
37
36
|
def run_request(verb, param)
|
|
38
|
-
|
|
39
37
|
@logger.debug "#{verb.to_s.upcase}: #{@url}#{param[:url]}"
|
|
40
38
|
|
|
41
39
|
with_params = !param[:params].nil?
|
data/lib/zammad_api/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: zammad_api
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Martin Edenhofer
|
|
8
8
|
- Martin Gruner
|
|
9
|
-
autorequire:
|
|
10
9
|
bindir: bin
|
|
11
10
|
cert_chain: []
|
|
12
|
-
date:
|
|
11
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
13
12
|
dependencies:
|
|
14
13
|
- !ruby/object:Gem::Dependency
|
|
15
14
|
name: faraday
|
|
@@ -25,62 +24,6 @@ dependencies:
|
|
|
25
24
|
- - "~>"
|
|
26
25
|
- !ruby/object:Gem::Version
|
|
27
26
|
version: '2'
|
|
28
|
-
- !ruby/object:Gem::Dependency
|
|
29
|
-
name: bundler
|
|
30
|
-
requirement: !ruby/object:Gem::Requirement
|
|
31
|
-
requirements:
|
|
32
|
-
- - ">="
|
|
33
|
-
- !ruby/object:Gem::Version
|
|
34
|
-
version: 2.2.10
|
|
35
|
-
type: :development
|
|
36
|
-
prerelease: false
|
|
37
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
38
|
-
requirements:
|
|
39
|
-
- - ">="
|
|
40
|
-
- !ruby/object:Gem::Version
|
|
41
|
-
version: 2.2.10
|
|
42
|
-
- !ruby/object:Gem::Dependency
|
|
43
|
-
name: rake
|
|
44
|
-
requirement: !ruby/object:Gem::Requirement
|
|
45
|
-
requirements:
|
|
46
|
-
- - ">="
|
|
47
|
-
- !ruby/object:Gem::Version
|
|
48
|
-
version: '0'
|
|
49
|
-
type: :development
|
|
50
|
-
prerelease: false
|
|
51
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
52
|
-
requirements:
|
|
53
|
-
- - ">="
|
|
54
|
-
- !ruby/object:Gem::Version
|
|
55
|
-
version: '0'
|
|
56
|
-
- !ruby/object:Gem::Dependency
|
|
57
|
-
name: rspec
|
|
58
|
-
requirement: !ruby/object:Gem::Requirement
|
|
59
|
-
requirements:
|
|
60
|
-
- - ">="
|
|
61
|
-
- !ruby/object:Gem::Version
|
|
62
|
-
version: '0'
|
|
63
|
-
type: :development
|
|
64
|
-
prerelease: false
|
|
65
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
66
|
-
requirements:
|
|
67
|
-
- - ">="
|
|
68
|
-
- !ruby/object:Gem::Version
|
|
69
|
-
version: '0'
|
|
70
|
-
- !ruby/object:Gem::Dependency
|
|
71
|
-
name: webmock
|
|
72
|
-
requirement: !ruby/object:Gem::Requirement
|
|
73
|
-
requirements:
|
|
74
|
-
- - ">="
|
|
75
|
-
- !ruby/object:Gem::Version
|
|
76
|
-
version: '0'
|
|
77
|
-
type: :development
|
|
78
|
-
prerelease: false
|
|
79
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
80
|
-
requirements:
|
|
81
|
-
- - ">="
|
|
82
|
-
- !ruby/object:Gem::Version
|
|
83
|
-
version: '0'
|
|
84
27
|
description: Ruby wrapper for the Zammad API v1.0.
|
|
85
28
|
email:
|
|
86
29
|
- support@zammad.org
|
|
@@ -116,7 +59,7 @@ metadata:
|
|
|
116
59
|
homepage_uri: https://github.com/zammad/zammad-api-client-ruby
|
|
117
60
|
source_code_uri: https://github.com/zammad/zammad-api-client-ruby
|
|
118
61
|
changelog_uri: https://github.com/zammad/zammad-api-client-ruby/blob/master/CHANGELOG.md
|
|
119
|
-
|
|
62
|
+
rubygems_mfa_required: 'true'
|
|
120
63
|
rdoc_options: []
|
|
121
64
|
require_paths:
|
|
122
65
|
- lib
|
|
@@ -124,15 +67,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
124
67
|
requirements:
|
|
125
68
|
- - ">="
|
|
126
69
|
- !ruby/object:Gem::Version
|
|
127
|
-
version: '0'
|
|
70
|
+
version: '3.0'
|
|
128
71
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
129
72
|
requirements:
|
|
130
73
|
- - ">="
|
|
131
74
|
- !ruby/object:Gem::Version
|
|
132
75
|
version: '0'
|
|
133
76
|
requirements: []
|
|
134
|
-
rubygems_version: 3.
|
|
135
|
-
signing_key:
|
|
77
|
+
rubygems_version: 3.6.9
|
|
136
78
|
specification_version: 4
|
|
137
79
|
summary: Zammad API v1.0 client.
|
|
138
80
|
test_files: []
|