ocman 1.3.1 → 1.4.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: b9b6c5a93e1ce80f30eec7cc7ebd3c11c8be2c0512ea324a9484ad5ac666c3ac
4
- data.tar.gz: e7ca5f0a864fa059ff03bb8f5f5c98ebe7268ace7d9bd5a8e84cad7422559110
3
+ metadata.gz: 01adcff61e626c6b19883ece249e25d7b7df6f5a1223aeb35b8ac117dc5eb1ab
4
+ data.tar.gz: f0231c022308483bdc19b490632d653e17c7692aa8680036423e8495bd49b7ea
5
5
  SHA512:
6
- metadata.gz: da5099014ba64acfb2c616f4fd8fbdb18b0959c5955d2982c049f7e21ed14f83d67be08cb8e29f0b202b0e7acab261e72f2264ebb88ef99f19a24265525dae05
7
- data.tar.gz: 6b877d329b726ecbc741dcc503ccab5de9afdeba6df45917520b5e99ff5b25fa8429cd7269368e2167e3beb45e887090ec7594bee6aa2e7faeddbbb1909561a8
6
+ metadata.gz: a1623d11c9a31c730a3169dbae68e2454c7f03873b14254b31c4296d9cbd55bbbdd4fb64b6c00a71969795e9864087ad44d960f16966779c77c8dabbed3d8f53
7
+ data.tar.gz: 5a8fa49d48f2d1a3e66fcf7af8dddcef628567b70c835966276312c48aeb981fa43d0877adcbd728f3aea3c745069ad33050ef06a53e4cbe9f02e0523bf0693e
@@ -35,8 +35,12 @@ module Ocman
35
35
  Ocman::Folder.list(path, options)
36
36
  end
37
37
 
38
- def self.create_folder(path)
39
- Ocman::Folder.create(path)
38
+ def self.create_folder(path, recursive: false)
39
+ if recursive
40
+ Ocman::Folder.create_recursive(path)
41
+ else
42
+ Ocman::Folder.create(path)
43
+ end
40
44
  end
41
45
 
42
46
  ### files
@@ -11,10 +11,8 @@ module Ocman
11
11
  connection.mkdir(uri(path))
12
12
  end
13
13
 
14
- def ls(path, options = {})
15
- connection.find(uri(path), options) do |item|
16
- yield(item)
17
- end
14
+ def ls(path, options = {}, &block)
15
+ connection.find(uri(path), options, &block)
18
16
  end
19
17
 
20
18
  def put(file_path, path, options = {})
@@ -7,8 +7,17 @@ require 'erb'
7
7
  module Ocman
8
8
  class Folder
9
9
  class << self
10
+ def create_recursive(path)
11
+ path_list(path).each do |path_part|
12
+ next if ignore404 { list(path_part) }
13
+
14
+ create(path_part)
15
+ end
16
+ end
17
+
10
18
  def create(path)
11
19
  Ocman::Dav.new.mkdir(escape_path(path))
20
+ wait_for_folder(path)
12
21
  end
13
22
 
14
23
  def list(path, options = {})
@@ -30,6 +39,33 @@ module Ocman
30
39
  def escape_path(path)
31
40
  path.split('/').map { |segment| ERB::Util.url_encode(segment) }.join('/')
32
41
  end
42
+
43
+ def wait_for_folder(path)
44
+ wait_time = 1
45
+ retries = 0
46
+ loop do
47
+ raise TimeoutError if retries >= 3
48
+ break if Ocman.list(path)
49
+
50
+ sleep wait_time
51
+ wait_time *= 2
52
+ retries += 1
53
+ end
54
+ end
55
+
56
+ def ignore404
57
+ yield
58
+ rescue Net::HTTPServerException => e
59
+ raise unless e.to_s.match?(/404.*Not found/i)
60
+
61
+ nil
62
+ end
63
+
64
+ def path_list(path)
65
+ path.split('/').reduce([]) do |acc, segment|
66
+ acc << [acc.last, segment].compact.join('/')
67
+ end
68
+ end
33
69
  end
34
70
  end
35
71
  end
@@ -65,12 +65,12 @@ module Ocman
65
65
  params: {
66
66
  path: attributes[:path],
67
67
  format: 'json'
68
- }.reject { |_key, value| value.nil? }
68
+ }.compact
69
69
  }
70
70
  end
71
71
 
72
72
  def share_url(id = nil)
73
- Ocman.configuration.base_url + '/ocs/v1.php/apps/files_sharing/api/v1/shares' + ('/' + id.to_s if id).to_s
73
+ "#{Ocman.configuration.base_url}/ocs/v1.php/apps/files_sharing/api/v1/shares#{"/#{id}" if id}"
74
74
  end
75
75
  end
76
76
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ocman
4
- VERSION = '1.3.1'
4
+ VERSION = '1.4.0'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ocman
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Waldemar Gribele
@@ -129,28 +129,42 @@ dependencies:
129
129
  requirements:
130
130
  - - "~>"
131
131
  - !ruby/object:Gem::Version
132
- version: 0.79.0
132
+ version: 1.6.1
133
133
  type: :development
134
134
  prerelease: false
135
135
  version_requirements: !ruby/object:Gem::Requirement
136
136
  requirements:
137
137
  - - "~>"
138
138
  - !ruby/object:Gem::Version
139
- version: 0.79.0
139
+ version: 1.6.1
140
+ - !ruby/object:Gem::Dependency
141
+ name: rubocop-rake
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - "~>"
145
+ - !ruby/object:Gem::Version
146
+ version: '0.5'
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - "~>"
152
+ - !ruby/object:Gem::Version
153
+ version: '0.5'
140
154
  - !ruby/object:Gem::Dependency
141
155
  name: rubocop-rspec
142
156
  requirement: !ruby/object:Gem::Requirement
143
157
  requirements:
144
158
  - - "~>"
145
159
  - !ruby/object:Gem::Version
146
- version: 1.37.1
160
+ version: 2.1.0
147
161
  type: :development
148
162
  prerelease: false
149
163
  version_requirements: !ruby/object:Gem::Requirement
150
164
  requirements:
151
165
  - - "~>"
152
166
  - !ruby/object:Gem::Version
153
- version: 1.37.1
167
+ version: 2.1.0
154
168
  description: Ruby gem for file managment and sharing in nextcloud/owncloud
155
169
  email: laboratories@toptranslation.com
156
170
  executables: []
@@ -177,14 +191,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
177
191
  requirements:
178
192
  - - ">="
179
193
  - !ruby/object:Gem::Version
180
- version: '0'
194
+ version: '2.4'
181
195
  required_rubygems_version: !ruby/object:Gem::Requirement
182
196
  requirements:
183
197
  - - ">="
184
198
  - !ruby/object:Gem::Version
185
199
  version: '0'
186
200
  requirements: []
187
- rubygems_version: 3.1.2
201
+ rubygems_version: 3.1.4
188
202
  signing_key:
189
203
  specification_version: 4
190
204
  summary: Ocman - Manages files and shares in nextcloud/owncloud