zm-ruby-client 0.18.3 → 0.18.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/zm/client/account/account.rb +5 -16
- data/lib/zm/client/connector/rest_account.rb +37 -14
- data/lib/zm/client/connector/soap_base.rb +19 -8
- data/lib/zm/client/domain/domain.rb +5 -12
- data/lib/zm/client/mountpoint/mountpoint.rb +1 -2
- data/lib/zm/client/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b9fad2347a2f7fa88c1da39a1e3dfdc85598e3dac8e7a060866b58da8fb1aa39
|
4
|
+
data.tar.gz: 30b9161ed034e763748918c47675bd4440eea099bfab0a70d4089691020b7860
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e6cd34015b3ebda5f628f27722d894ef30dc1b7e7cc9500fd91cbb63cf5d138f4aa1197b5681638945cf9c8b63bec5c7e4dbb426b7f3cee2cc11921581693a6f
|
7
|
+
data.tar.gz: 2da81cb383c52918038f3e586e781b6d917ecd356a8414ca0e5aa5616b6d9023689c7dc294fd9194471c474b117cd8f016aef293b1e8ff5433a4d0469bbc9b91
|
@@ -25,10 +25,7 @@ module Zm
|
|
25
25
|
module Client
|
26
26
|
# objectClass: zimbraAccount
|
27
27
|
class Account < Base::AdminObject
|
28
|
-
|
29
|
-
# attr_writer :home_url
|
30
|
-
# attr_accessor :password, :domainkey, :company, :zimbraCOSId, :zimbraMailHost, :zimbraMailTransport, :carLicense
|
31
|
-
attr_accessor :name, :id, :token, :home_url, :password, :domainkey, :carLicense
|
28
|
+
attr_accessor :name, :id, :token, :home_url, :public_url, :password, :domainkey, :carLicense
|
32
29
|
|
33
30
|
def initialize(parent)
|
34
31
|
extend(AccountCommon)
|
@@ -36,18 +33,6 @@ module Zm
|
|
36
33
|
@grantee_type = 'usr'.freeze
|
37
34
|
end
|
38
35
|
|
39
|
-
# def init_by_hash(attrs)
|
40
|
-
# attrs.each do |k, v|
|
41
|
-
# self.instance_variable_set(arrow_name(k), v)
|
42
|
-
# end
|
43
|
-
# end
|
44
|
-
|
45
|
-
# def to_h
|
46
|
-
# hashmap = Hash[all_instance_variable_keys.map { |key| [key, instance_variable_get(arrow_name(key))] }]
|
47
|
-
# hashmap.delete_if { |_, v| v.nil? }
|
48
|
-
# hashmap
|
49
|
-
# end
|
50
|
-
|
51
36
|
def all_instance_variable_keys
|
52
37
|
AccountCommon::ZM_ACCOUNT_ATTRS
|
53
38
|
end
|
@@ -107,6 +92,10 @@ module Zm
|
|
107
92
|
@domainkey ||= @parent.domain_key(domain_name)
|
108
93
|
end
|
109
94
|
|
95
|
+
def domain_key=(key)
|
96
|
+
@domainkey = key
|
97
|
+
end
|
98
|
+
|
110
99
|
def infos
|
111
100
|
@infos || read_infos
|
112
101
|
end
|
@@ -7,49 +7,70 @@ module Zm
|
|
7
7
|
|
8
8
|
def initialize
|
9
9
|
@verbose = false
|
10
|
+
@cookies = nil
|
10
11
|
@follow_location = true
|
11
|
-
@curl = easy_curl
|
12
12
|
end
|
13
13
|
|
14
14
|
def verbose!
|
15
15
|
@verbose = true
|
16
|
-
@curl.verbose = @verbose
|
17
16
|
end
|
18
17
|
|
19
|
-
def
|
20
|
-
@
|
18
|
+
def cookies(cookies)
|
19
|
+
@cookies = cookies
|
21
20
|
end
|
22
21
|
|
23
22
|
def download(url, dest_file_path)
|
24
|
-
|
23
|
+
curl = init_curl_client(url)
|
24
|
+
|
25
25
|
File.open(dest_file_path, 'wb') do |f|
|
26
|
-
|
26
|
+
curl.on_body do |data|
|
27
27
|
f << data
|
28
28
|
data.size
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
|
+
curl.perform
|
32
|
+
end
|
33
|
+
|
34
|
+
if curl.status.to_i >= 400
|
35
|
+
File.unlink(dest_file_path) if File.exist?(dest_file_path)
|
36
|
+
|
37
|
+
message = "Download failure: #{curl.body_str} (status=#{curl.status})"
|
38
|
+
close_curl(curl)
|
39
|
+
raise RestError, message
|
31
40
|
end
|
41
|
+
|
42
|
+
dest_file_path
|
32
43
|
end
|
33
44
|
|
34
45
|
def upload(url, src_file_path)
|
35
|
-
|
36
|
-
|
46
|
+
curl = init_curl_client(url)
|
47
|
+
|
48
|
+
curl.http_post(Curl::PostField.file('file', src_file_path))
|
37
49
|
|
38
|
-
if
|
50
|
+
if curl.status.to_i >= 400
|
39
51
|
messages = [
|
40
52
|
"Upload failure ! #{src_file_path}",
|
41
|
-
extract_title(
|
53
|
+
extract_title(curl.body_str)
|
42
54
|
].compact
|
55
|
+
close_curl(curl)
|
43
56
|
raise RestError, messages.join("\n")
|
44
57
|
end
|
45
58
|
|
46
|
-
|
59
|
+
str = curl.body_str
|
60
|
+
close_curl(curl)
|
61
|
+
str
|
47
62
|
end
|
48
63
|
|
49
64
|
private
|
50
65
|
|
51
|
-
def
|
52
|
-
|
66
|
+
def close_curl(curl)
|
67
|
+
curl.close
|
68
|
+
# force process to kill socket
|
69
|
+
GC.start
|
70
|
+
end
|
71
|
+
|
72
|
+
def init_curl_client(url)
|
73
|
+
::Curl::Easy.new(url) do |curl|
|
53
74
|
curl.timeout = 300
|
54
75
|
curl.enable_cookies = false
|
55
76
|
curl.encoding = ''
|
@@ -58,6 +79,8 @@ module Zm
|
|
58
79
|
curl.multipart_form_post = true
|
59
80
|
curl.verbose = verbose
|
60
81
|
curl.follow_location = follow_location
|
82
|
+
curl.verbose = @verbose
|
83
|
+
curl.cookies = @cookies
|
61
84
|
end
|
62
85
|
end
|
63
86
|
|
@@ -20,40 +20,51 @@ module Zm
|
|
20
20
|
extend(ZmLogger)
|
21
21
|
@verbose = false
|
22
22
|
@uri = URI::HTTP.new(scheme, nil, host, port, nil, soap_path, nil, nil, nil)
|
23
|
-
init_curl_client
|
24
23
|
end
|
25
24
|
|
26
25
|
def verbose!
|
27
26
|
@verbose = true
|
28
|
-
@curl.verbose = @verbose
|
29
27
|
end
|
30
28
|
|
31
29
|
private
|
32
30
|
|
33
31
|
def init_curl_client
|
34
|
-
|
32
|
+
::Curl::Easy.new(@uri.to_s) do |curl|
|
35
33
|
curl.timeout = 300
|
36
34
|
curl.enable_cookies = false
|
37
35
|
curl.encoding = ''
|
38
36
|
curl.headers = HTTP_HEADERS
|
39
37
|
curl.ssl_verify_peer = false
|
40
38
|
curl.ssl_verify_host = 0
|
41
|
-
|
39
|
+
curl.verbose = @verbose
|
42
40
|
end
|
43
41
|
end
|
44
42
|
|
45
43
|
def curl_request(body, error_handler = SoapError)
|
44
|
+
curl = init_curl_client
|
46
45
|
logger.debug body.to_json
|
47
|
-
|
46
|
+
curl.http_post(body.to_json)
|
48
47
|
|
49
|
-
logger.debug
|
48
|
+
logger.debug curl.body_str
|
50
49
|
|
51
|
-
soapbody = JSON.parse(
|
52
|
-
|
50
|
+
soapbody = JSON.parse(curl.body_str, symbolize_names: true)
|
51
|
+
|
52
|
+
if curl.status.to_i >= 400
|
53
|
+
close_curl(curl)
|
54
|
+
raise(error_handler, soapbody)
|
55
|
+
end
|
56
|
+
|
57
|
+
close_curl(curl)
|
53
58
|
|
54
59
|
soapbody
|
55
60
|
end
|
56
61
|
|
62
|
+
def close_curl(curl)
|
63
|
+
curl.close
|
64
|
+
# force process to kill socket
|
65
|
+
GC.start
|
66
|
+
end
|
67
|
+
|
57
68
|
def hash_header(token, target_server = nil)
|
58
69
|
context = { authToken: token, userAgent: { name: :zmsoap }, targetServer: target_server }.delete_if do |_, v|
|
59
70
|
v.nil?
|
@@ -7,7 +7,7 @@ module Zm
|
|
7
7
|
INSTANCE_VARIABLE_KEYS = %i[name description zimbraDomainName zimbraDomainStatus zimbraId zimbraDomainType
|
8
8
|
zimbraDomainDefaultCOSId zimbraGalAccountId zimbraPreAuthKey zimbraGalLdapBindDn zimbraGalLdapBindPassword
|
9
9
|
zimbraGalLdapFilter zimbraGalLdapSearchBase zimbraGalLdapURL zimbraGalMode zimbraMailTransport
|
10
|
-
zimbraPublicServiceHostname zimbraPublicServiceProtocol]
|
10
|
+
zimbraPublicServiceHostname zimbraPublicServiceProtocol zimbraVirtualHostname]
|
11
11
|
|
12
12
|
attr_accessor *INSTANCE_VARIABLE_KEYS
|
13
13
|
|
@@ -16,12 +16,6 @@ module Zm
|
|
16
16
|
@grantee_type = 'dom'.freeze
|
17
17
|
end
|
18
18
|
|
19
|
-
# def to_h
|
20
|
-
# hashmap = Hash[all_instance_variable_keys.map { |key| [key, instance_variable_get(arrow_name(key))] }]
|
21
|
-
# hashmap.delete_if { |_, v| v.nil? }
|
22
|
-
# hashmap
|
23
|
-
# end
|
24
|
-
|
25
19
|
def all_instance_variable_keys
|
26
20
|
INSTANCE_VARIABLE_KEYS
|
27
21
|
end
|
@@ -51,6 +45,10 @@ module Zm
|
|
51
45
|
end
|
52
46
|
end
|
53
47
|
|
48
|
+
def modify!
|
49
|
+
false
|
50
|
+
end
|
51
|
+
|
54
52
|
def accounts
|
55
53
|
@accounts ||= DomainAccountsCollection.new(self)
|
56
54
|
end
|
@@ -59,11 +57,6 @@ module Zm
|
|
59
57
|
sac.generic_delete(:DeleteDomainRequest, id)
|
60
58
|
end
|
61
59
|
|
62
|
-
# def account_quotas(server_id)
|
63
|
-
# rep = sac.get_quota_usage(name, nil, nil, nil, nil, nil, nil, server_id)
|
64
|
-
# AccountsBuilder.new(@parent, rep).make
|
65
|
-
# end
|
66
|
-
|
67
60
|
def init_from_json(json)
|
68
61
|
super(json)
|
69
62
|
return unless json[:a].is_a? Array
|
@@ -12,8 +12,7 @@ module Zm
|
|
12
12
|
webOfflineSyncDays color rgb
|
13
13
|
].freeze
|
14
14
|
|
15
|
-
|
16
|
-
attr_writer :view, :zid, :rid
|
15
|
+
attr_accessor :owner, :rev, :reminder, :ms, :deletable, :rid, :uuid, :url, :f, :broken, :luuid, :ruuid, :activesyncdisabled, :absFolderPath, :zid, :id, :webOfflineSyncDays, :view, :zid, :rid
|
17
16
|
|
18
17
|
define_changed_attributes :name, :color, :rgb, :l
|
19
18
|
|
data/lib/zm/client/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zm-ruby-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.18.
|
4
|
+
version: 0.18.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maxime Désécot
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-01-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -264,7 +264,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
264
264
|
- !ruby/object:Gem::Version
|
265
265
|
version: '0'
|
266
266
|
requirements: []
|
267
|
-
rubygems_version: 3.
|
267
|
+
rubygems_version: 3.4.19
|
268
268
|
signing_key:
|
269
269
|
specification_version: 4
|
270
270
|
summary: zm-ruby-client
|