zammad_api 1.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7bd69b72c531ea884a30b28ecc8f1ef270f24c1f4e1be49a880fc64c376b93db
4
- data.tar.gz: 88ef7a8c03356274b8c3af28d5ded91e6d58fab2ccafe8085f1b9eb4915a4987
3
+ metadata.gz: 42c75fd97c167f27bec8282ccd8214f3885e051691c042ad0e8e491651814d81
4
+ data.tar.gz: 949a756e4310f53f9ca929a9e973dcb30af4a80e494e55059da6cac345a8bc28
5
5
  SHA512:
6
- metadata.gz: b09bfa14c68b10b898ebdb71d1e7a7d013c8d756d5214e07f7c913100efdc2e296bbcec1732eea99237b2873f9fb44d868e8c6acfbf7b97a4e457eaf6bbe993c
7
- data.tar.gz: 016e5665568b8cfbf970575b0750d5b6468c39eaf91a27d5a967d41ab9905a634bf53e19324a5ad3facb86e2f1fe46c8f3ab355c1ef0cc220cbeb65fb71f71c5
6
+ metadata.gz: b6625e7abed25c87ae3fe46bf543c9095cc092f61eacc23fded2af1a9807a0fc8ebf589221d6afbb57414704e3c732e9f629f89bf460791cffecd91448398a38
7
+ data.tar.gz: '0379ee29e881afe691eb7d47b0c2c3dbe01ae0a6eddd73e783d24ec8c07fc0dd635dca03148c9a539c006e5b2ad6c87173b944e5511024849727ffcff58be454'
@@ -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( method.to_s )
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 @config[:url] !~ %r{^(http|https)://}
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
- .gsub(%r{/(.?)}) { "::#{$1.upcase}" }
62
- .gsub(/(?:_+|-+)([a-z])/) { $1.upcase }
63
- .gsub(/(\A|\s)([a-z])/) { $1 + $2.upcase }
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
@@ -1,6 +1,5 @@
1
1
  module ZammadAPI
2
2
  class Dispatcher
3
-
4
3
  def initialize(transport, resource)
5
4
  @transport = transport
6
5
  @resource = resource
@@ -2,7 +2,6 @@ require 'zammad_api/list_base'
2
2
 
3
3
  module ZammadAPI
4
4
  class ListAll < ListBase
5
-
6
5
  private
7
6
 
8
7
  def perform_request(parameter)
@@ -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 { |item|
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 { |local_data|
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
 
@@ -2,7 +2,6 @@ require 'zammad_api/list_base'
2
2
 
3
3
  module ZammadAPI
4
4
  class ListSearch < ListBase
5
-
6
5
  private
7
6
 
8
7
  def perform_request(parameter)
@@ -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 { |name, values|
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 { |raw|
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 { |raw|
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
@@ -12,6 +12,6 @@ require 'zammad_api/resources/ticket_state'
12
12
  require 'zammad_api/resources/ticket_priority'
13
13
 
14
14
  module ZammadAPI
15
- class Resource
15
+ class Resource # rubocop:disable Lint/EmptyClass
16
16
  end
17
17
  end
@@ -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 # make requests with Net::HTTP
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?
@@ -20,22 +19,21 @@ module ZammadAPI
20
19
  elsif config[:oauth2_token] && !config[:oauth2_token].empty?
21
20
  @conn.request :authorization, 'Bearer', config[:oauth2_token]
22
21
  else
23
- @conn.request :basic_auth, config[:user], config[:password]
22
+ @conn.request :authorization, :basic, config[:user], config[:password]
24
23
  end
25
24
  end
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?
@@ -1,3 +1,3 @@
1
1
  module ZammadAPI
2
- VERSION = '1.1.0'.freeze
2
+ VERSION = '1.3.0'.freeze
3
3
  end
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.1.0
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: 2023-05-11 00:00:00.000000000 Z
11
+ date: 1980-01-02 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: faraday
@@ -17,70 +16,14 @@ dependencies:
17
16
  requirements:
18
17
  - - "~>"
19
18
  - !ruby/object:Gem::Version
20
- version: '1'
19
+ version: '2'
21
20
  type: :runtime
22
21
  prerelease: false
23
22
  version_requirements: !ruby/object:Gem::Requirement
24
23
  requirements:
25
24
  - - "~>"
26
25
  - !ruby/object:Gem::Version
27
- version: '1'
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: '13'
49
- type: :development
50
- prerelease: false
51
- version_requirements: !ruby/object:Gem::Requirement
52
- requirements:
53
- - - "~>"
54
- - !ruby/object:Gem::Version
55
- version: '13'
56
- - !ruby/object:Gem::Dependency
57
- name: rspec
58
- requirement: !ruby/object:Gem::Requirement
59
- requirements:
60
- - - "~>"
61
- - !ruby/object:Gem::Version
62
- version: '3.0'
63
- type: :development
64
- prerelease: false
65
- version_requirements: !ruby/object:Gem::Requirement
66
- requirements:
67
- - - "~>"
68
- - !ruby/object:Gem::Version
69
- version: '3.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'
26
+ version: '2'
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
- post_install_message:
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.3.26
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: []