zammad_api 1.2.0 → 1.3.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.
- checksums.yaml +4 -4
- data/lib/zammad_api/client.rb +5 -6
- data/lib/zammad_api/dispatcher.rb +0 -1
- data/lib/zammad_api/json_helper.rb +11 -0
- data/lib/zammad_api/list_all.rb +0 -1
- data/lib/zammad_api/list_base.rb +8 -11
- data/lib/zammad_api/list_search.rb +0 -1
- data/lib/zammad_api/log.rb +2 -1
- data/lib/zammad_api/resources/base.rb +16 -7
- data/lib/zammad_api/resources/ticket.rb +3 -4
- data/lib/zammad_api/resources/ticket_article.rb +2 -3
- data/lib/zammad_api/resources/ticket_article_attachment.rb +3 -4
- 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 +6 -63
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e210909fb0d53e8184097f0ac41021ae674a5981b80e4e405631d33d6d07623e
|
|
4
|
+
data.tar.gz: 83e7ac5be2b238ce682b9f478d0bc7dbab3a00308367a01b95e5fc3c9ee586f5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c8122abe30faebe219bea0e71ac5220a060b6c2f1ac08e2d86783987c4de5280daccd9341627a49da41e2e9eb24d88e7db84350b21d0f9f47feda364066deb8b
|
|
7
|
+
data.tar.gz: 72f47ce52a5f80a4a17f56bb652324cebee7b07c32ae944901065b09b5850d634081b0ae7278327074f6e546c9be6a68714ce842c078979c13294650f9b771f9
|
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
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
require 'zammad_api/json_helper'
|
|
2
|
+
|
|
1
3
|
module ZammadAPI
|
|
2
4
|
class ListBase
|
|
3
5
|
include Enumerable
|
|
6
|
+
include ZammadAPI::JsonHelper
|
|
4
7
|
|
|
5
8
|
def initialize(resource, transport, parameter = {})
|
|
6
9
|
@resource = resource
|
|
@@ -14,7 +17,6 @@ module ZammadAPI
|
|
|
14
17
|
end
|
|
15
18
|
|
|
16
19
|
def [](position)
|
|
17
|
-
|
|
18
20
|
local_parameter = @parameter.merge(
|
|
19
21
|
page: position + 1,
|
|
20
22
|
per_page: 1
|
|
@@ -23,7 +25,6 @@ module ZammadAPI
|
|
|
23
25
|
end
|
|
24
26
|
|
|
25
27
|
def page(page, per_page, &block)
|
|
26
|
-
|
|
27
28
|
@parameter[:page] = page
|
|
28
29
|
@parameter[:per_page] = per_page
|
|
29
30
|
fetch_and_yield_each(&block)
|
|
@@ -45,18 +46,14 @@ module ZammadAPI
|
|
|
45
46
|
|
|
46
47
|
private
|
|
47
48
|
|
|
48
|
-
def fetch_and_yield_each
|
|
49
|
+
def fetch_and_yield_each(&block)
|
|
49
50
|
result = perform_request(@parameter)
|
|
50
|
-
result.each
|
|
51
|
-
yield item
|
|
52
|
-
}
|
|
51
|
+
result.each(&block)
|
|
53
52
|
end
|
|
54
53
|
|
|
55
54
|
def request(request, url, parameter)
|
|
56
|
-
|
|
57
55
|
# convert parameters into a GET query
|
|
58
56
|
url += '?' + parameter.map { |key, value|
|
|
59
|
-
|
|
60
57
|
if !value.is_a? String
|
|
61
58
|
value = value.to_s
|
|
62
59
|
end
|
|
@@ -65,17 +62,17 @@ module ZammadAPI
|
|
|
65
62
|
}.join('&')
|
|
66
63
|
|
|
67
64
|
response = @transport.get(url: url)
|
|
68
|
-
data =
|
|
65
|
+
data = safe_json_parse(response.body)
|
|
69
66
|
if response.status != 200
|
|
70
67
|
raise "Can't get .#{request} of object (#{@resource.class.name}): #{data['error']}"
|
|
71
68
|
end
|
|
72
69
|
|
|
73
70
|
list = []
|
|
74
|
-
data.each
|
|
71
|
+
data.each do |local_data|
|
|
75
72
|
item = @resource.new(@transport, local_data)
|
|
76
73
|
item.new_instance = false
|
|
77
74
|
list.push item
|
|
78
|
-
|
|
75
|
+
end
|
|
79
76
|
list
|
|
80
77
|
end
|
|
81
78
|
|
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
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
require 'cgi'
|
|
2
|
-
require '
|
|
2
|
+
require 'zammad_api/json_helper'
|
|
3
3
|
require 'zammad_api/transport'
|
|
4
4
|
|
|
5
5
|
module ZammadAPI
|
|
6
6
|
module Resources
|
|
7
7
|
class Base
|
|
8
|
+
include ZammadAPI::JsonHelper
|
|
9
|
+
extend ZammadAPI::JsonHelper
|
|
10
|
+
|
|
8
11
|
attr_accessor :new_instance, :url, :attributes
|
|
9
12
|
attr_reader :changes
|
|
10
13
|
|
|
@@ -23,6 +26,7 @@ module ZammadAPI
|
|
|
23
26
|
|
|
24
27
|
def method_missing(method, *args)
|
|
25
28
|
return @attributes[method] if !method.to_s.end_with?('=')
|
|
29
|
+
|
|
26
30
|
method = method.to_s[0, method.length - 1].to_sym
|
|
27
31
|
@changes[method] = [@attributes[method], args[0]]
|
|
28
32
|
@attributes[method] = args[0]
|
|
@@ -40,9 +44,10 @@ module ZammadAPI
|
|
|
40
44
|
def destroy
|
|
41
45
|
response = @transport.delete(url: "#{@url}/#{@attributes[:id]}")
|
|
42
46
|
if response.body.to_s != '' && response.body.to_s != ' '
|
|
43
|
-
data =
|
|
47
|
+
data = safe_json_parse(response.body)
|
|
44
48
|
end
|
|
45
49
|
return true if response.status == 200
|
|
50
|
+
|
|
46
51
|
raise "Can't destroy object (#{self.class.name}): #{data['error']}"
|
|
47
52
|
end
|
|
48
53
|
|
|
@@ -74,10 +79,11 @@ module ZammadAPI
|
|
|
74
79
|
|
|
75
80
|
def self.find(transport, id)
|
|
76
81
|
response = transport.get(url: "#{@url}/#{id}?expand=true")
|
|
77
|
-
data =
|
|
82
|
+
data = safe_json_parse(response.body)
|
|
78
83
|
if response.status != 200
|
|
79
84
|
raise "Can't find object (#{self.class.name}): #{data['error']}"
|
|
80
85
|
end
|
|
86
|
+
|
|
81
87
|
item = new(transport, data)
|
|
82
88
|
item.new_instance = false
|
|
83
89
|
item
|
|
@@ -99,25 +105,28 @@ module ZammadAPI
|
|
|
99
105
|
|
|
100
106
|
def saved_attributes
|
|
101
107
|
return save_new if @new_instance
|
|
108
|
+
|
|
102
109
|
save_existing
|
|
103
110
|
end
|
|
104
111
|
|
|
105
112
|
def save_new
|
|
106
113
|
response = @transport.post(url: "#{@url}?expand=true", params: @attributes)
|
|
107
|
-
attributes =
|
|
114
|
+
attributes = safe_json_parse(response.body)
|
|
108
115
|
return attributes if response.status == 201
|
|
116
|
+
|
|
109
117
|
save_error(attributes)
|
|
110
118
|
end
|
|
111
119
|
|
|
112
120
|
def save_existing
|
|
113
121
|
attributes_to_post = {}
|
|
114
|
-
@changes.each
|
|
122
|
+
@changes.each do |name, values|
|
|
115
123
|
attributes_to_post[name] = values[1]
|
|
116
|
-
|
|
124
|
+
end
|
|
117
125
|
response = @transport.put(url: "#{@url}/#{@attributes[:id]}?expand=true", params: attributes_to_post)
|
|
118
|
-
attributes =
|
|
126
|
+
attributes = safe_json_parse(response.body)
|
|
119
127
|
|
|
120
128
|
return attributes if response.status == 200
|
|
129
|
+
|
|
121
130
|
save_error(attributes)
|
|
122
131
|
end
|
|
123
132
|
|
|
@@ -3,16 +3,16 @@ class ZammadAPI::Resources::Ticket < ZammadAPI::Resources::Base
|
|
|
3
3
|
|
|
4
4
|
def articles
|
|
5
5
|
response = @transport.get(url: "/api/v1/ticket_articles/by_ticket/#{id}?expand=true")
|
|
6
|
-
data =
|
|
6
|
+
data = safe_json_parse(response.body)
|
|
7
7
|
if response.status != 200
|
|
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
|
|
16
|
-
|
|
15
|
+
|
|
16
|
+
data = safe_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.1
|
|
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
|
|
@@ -91,6 +34,7 @@ files:
|
|
|
91
34
|
- lib/zammad_api.rb
|
|
92
35
|
- lib/zammad_api/client.rb
|
|
93
36
|
- lib/zammad_api/dispatcher.rb
|
|
37
|
+
- lib/zammad_api/json_helper.rb
|
|
94
38
|
- lib/zammad_api/list_all.rb
|
|
95
39
|
- lib/zammad_api/list_base.rb
|
|
96
40
|
- lib/zammad_api/list_search.rb
|
|
@@ -116,7 +60,7 @@ metadata:
|
|
|
116
60
|
homepage_uri: https://github.com/zammad/zammad-api-client-ruby
|
|
117
61
|
source_code_uri: https://github.com/zammad/zammad-api-client-ruby
|
|
118
62
|
changelog_uri: https://github.com/zammad/zammad-api-client-ruby/blob/master/CHANGELOG.md
|
|
119
|
-
|
|
63
|
+
rubygems_mfa_required: 'true'
|
|
120
64
|
rdoc_options: []
|
|
121
65
|
require_paths:
|
|
122
66
|
- lib
|
|
@@ -124,15 +68,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
124
68
|
requirements:
|
|
125
69
|
- - ">="
|
|
126
70
|
- !ruby/object:Gem::Version
|
|
127
|
-
version: '0'
|
|
71
|
+
version: '3.0'
|
|
128
72
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
129
73
|
requirements:
|
|
130
74
|
- - ">="
|
|
131
75
|
- !ruby/object:Gem::Version
|
|
132
76
|
version: '0'
|
|
133
77
|
requirements: []
|
|
134
|
-
rubygems_version: 3.
|
|
135
|
-
signing_key:
|
|
78
|
+
rubygems_version: 3.6.9
|
|
136
79
|
specification_version: 4
|
|
137
80
|
summary: Zammad API v1.0 client.
|
|
138
81
|
test_files: []
|