files.com 1.0.62 → 1.0.67
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/_VERSION +1 -1
- data/docs/auto.md +1 -1
- data/docs/behavior.md +6 -2
- data/docs/bundle.md +24 -16
- data/docs/group_user.md +13 -9
- data/docs/notification.md +5 -1
- data/docs/site.md +8 -0
- data/docs/sso_strategy.md +8 -8
- data/docs/status.md +1 -1
- data/docs/user.md +3 -1
- data/files.com.gemspec +1 -0
- data/lib/files.com.rb +2 -0
- data/lib/files.com/api_client.rb +9 -3
- data/lib/files.com/models/auto.rb +1 -1
- data/lib/files.com/models/behavior.rb +5 -1
- data/lib/files.com/models/bundle.rb +49 -37
- data/lib/files.com/models/file.rb +1 -1
- data/lib/files.com/models/group_user.rb +29 -20
- data/lib/files.com/models/notification.rb +3 -0
- data/lib/files.com/models/site.rb +12 -0
- data/lib/files.com/models/sso_strategy.rb +11 -16
- data/lib/files.com/models/status.rb +1 -0
- data/lib/files.com/models/user.rb +3 -1
- data/lib/files.com/sizable_io.rb +32 -0
- data/spec/models/file_spec.rb +2 -1
- metadata +17 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ad3dc40bcbf022324c5002a75477568d213893b79d0f0e2538a3f48720bc6135
|
|
4
|
+
data.tar.gz: 3f4b7093d51bb6ea3da0b8cfee2266f32a0b0f3570ae481c7b28c4241a68180a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: cd13285ed3725855ed062d740e3b16b8eb073f864fd8d6f93f70a80f23c237d44d84233e3e7f6c70618b862164f9ee4eb068a76d59a4153ea1373ef0dc6d4dec
|
|
7
|
+
data.tar.gz: c6d134d8fa1c968537db4c738bae87e15c8518a8440d7a253638f9bd73782464647405c54f9b8978f7f04dfeded4f1feef0bdffc5f68a9720fb10e01f6d45014
|
data/_VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.0.
|
|
1
|
+
1.0.67
|
data/docs/auto.md
CHANGED
data/docs/behavior.md
CHANGED
|
@@ -60,7 +60,7 @@ Files::Behavior.list_for(path,
|
|
|
60
60
|
* `per_page` (int64): Number of records to show per page. (Max: 10,000, 1,000 or less is recommended).
|
|
61
61
|
* `action` (string): Deprecated: If set to `count` returns a count of matching records rather than the records themselves.
|
|
62
62
|
* `path` (string): Required - Path to operate on.
|
|
63
|
-
* `recursive` (string): Show behaviors
|
|
63
|
+
* `recursive` (string): Show behaviors above this path?
|
|
64
64
|
* `behavior` (string): If set only shows folder behaviors matching this behavior type.
|
|
65
65
|
|
|
66
66
|
|
|
@@ -105,7 +105,9 @@ Files::Behavior.create(
|
|
|
105
105
|
Files::Behavior.webhook_test(
|
|
106
106
|
url: "https://www.site.com/...",
|
|
107
107
|
method: "GET",
|
|
108
|
-
encoding: "RAW"
|
|
108
|
+
encoding: "RAW",
|
|
109
|
+
headers: "x-test-header => testvalue",
|
|
110
|
+
body: "test-param => testvalue"
|
|
109
111
|
)
|
|
110
112
|
```
|
|
111
113
|
|
|
@@ -114,6 +116,8 @@ Files::Behavior.webhook_test(
|
|
|
114
116
|
* `url` (string): Required - URL for testing the webhook.
|
|
115
117
|
* `method` (string): HTTP method(GET or POST).
|
|
116
118
|
* `encoding` (string): HTTP encoding method. Can be JSON, XML, or RAW (form data).
|
|
119
|
+
* `headers` (object): Additional request headers.
|
|
120
|
+
* `body` (object): Additional body parameters.
|
|
117
121
|
|
|
118
122
|
|
|
119
123
|
---
|
data/docs/bundle.md
CHANGED
|
@@ -4,33 +4,35 @@
|
|
|
4
4
|
|
|
5
5
|
```
|
|
6
6
|
{
|
|
7
|
-
"id": 1,
|
|
8
7
|
"code": "abc123",
|
|
9
|
-
"
|
|
8
|
+
"url": "https://subdomain.files.com/f/12345678",
|
|
10
9
|
"description": "The public description of the bundle.",
|
|
10
|
+
"password_protected": true,
|
|
11
|
+
"require_registration": true,
|
|
12
|
+
"id": 1,
|
|
13
|
+
"created_at": "2000-01-01T01:00:00Z",
|
|
11
14
|
"expires_at": "2000-01-01T01:00:00Z",
|
|
12
|
-
"paths": [
|
|
13
|
-
|
|
14
|
-
],
|
|
15
15
|
"note": "The internal note on the bundle.",
|
|
16
|
-
"password_protected": true,
|
|
17
|
-
"url": "https://subdomain.files.com/f/12345678",
|
|
18
16
|
"user_id": 1,
|
|
19
|
-
"username": "user"
|
|
17
|
+
"username": "user",
|
|
18
|
+
"paths": [
|
|
19
|
+
|
|
20
|
+
]
|
|
20
21
|
}
|
|
21
22
|
```
|
|
22
23
|
|
|
23
|
-
* `id` (int64): Bundle ID
|
|
24
24
|
* `code` (string): Bundle code. This code forms the end part of the Public URL.
|
|
25
|
-
* `
|
|
25
|
+
* `url` (string): Public URL of Share Link
|
|
26
26
|
* `description` (string): Public description
|
|
27
|
+
* `password_protected` (boolean): Is this bundle password protected?
|
|
28
|
+
* `require_registration` (boolean): Show a registration page that captures the downloader's name and email address?
|
|
29
|
+
* `id` (int64): Bundle ID
|
|
30
|
+
* `created_at` (date-time): Bundle created at date/time
|
|
27
31
|
* `expires_at` (date-time): Bundle expiration date/time
|
|
28
|
-
* `paths` (array): A list of paths in this bundle
|
|
29
32
|
* `note` (string): Bundle internal note
|
|
30
|
-
* `password_protected` (boolean): Is this bundle password protected?
|
|
31
|
-
* `url` (string): Public URL of Share Link
|
|
32
33
|
* `user_id` (int64): Bundle creator user ID
|
|
33
34
|
* `username` (string): Bundle creator username
|
|
35
|
+
* `paths` (array): A list of paths in this bundle
|
|
34
36
|
* `password` (string): Password for this bundle.
|
|
35
37
|
|
|
36
38
|
|
|
@@ -79,7 +81,8 @@ Files::Bundle.create(
|
|
|
79
81
|
expires_at: "2000-01-01T01:00:00Z",
|
|
80
82
|
description: "The public description of the bundle.",
|
|
81
83
|
note: "The internal note on the bundle.",
|
|
82
|
-
code: "abc123"
|
|
84
|
+
code: "abc123",
|
|
85
|
+
require_registration: true
|
|
83
86
|
)
|
|
84
87
|
```
|
|
85
88
|
|
|
@@ -92,6 +95,7 @@ Files::Bundle.create(
|
|
|
92
95
|
* `description` (string): Public description
|
|
93
96
|
* `note` (string): Bundle internal note
|
|
94
97
|
* `code` (string): Bundle code. This code forms the end part of the Public URL.
|
|
98
|
+
* `require_registration` (boolean): Show a registration page that captures the downloader's name and email address?
|
|
95
99
|
|
|
96
100
|
|
|
97
101
|
---
|
|
@@ -122,7 +126,8 @@ Files::Bundle.update(id,
|
|
|
122
126
|
expires_at: "2000-01-01T01:00:00Z",
|
|
123
127
|
description: "The public description of the bundle.",
|
|
124
128
|
note: "The internal note on the bundle.",
|
|
125
|
-
code: "abc123"
|
|
129
|
+
code: "abc123",
|
|
130
|
+
require_registration: true
|
|
126
131
|
)
|
|
127
132
|
```
|
|
128
133
|
|
|
@@ -134,6 +139,7 @@ Files::Bundle.update(id,
|
|
|
134
139
|
* `description` (string): Public description
|
|
135
140
|
* `note` (string): Bundle internal note
|
|
136
141
|
* `code` (string): Bundle code. This code forms the end part of the Public URL.
|
|
142
|
+
* `require_registration` (boolean): Show a registration page that captures the downloader's name and email address?
|
|
137
143
|
|
|
138
144
|
|
|
139
145
|
---
|
|
@@ -181,7 +187,8 @@ bundle.update(
|
|
|
181
187
|
expires_at: "2000-01-01T01:00:00Z",
|
|
182
188
|
description: "The public description of the bundle.",
|
|
183
189
|
note: "The internal note on the bundle.",
|
|
184
|
-
code: "abc123"
|
|
190
|
+
code: "abc123",
|
|
191
|
+
require_registration: true
|
|
185
192
|
)
|
|
186
193
|
```
|
|
187
194
|
|
|
@@ -193,6 +200,7 @@ bundle.update(
|
|
|
193
200
|
* `description` (string): Public description
|
|
194
201
|
* `note` (string): Bundle internal note
|
|
195
202
|
* `code` (string): Bundle code. This code forms the end part of the Public URL.
|
|
203
|
+
* `require_registration` (boolean): Show a registration page that captures the downloader's name and email address?
|
|
196
204
|
|
|
197
205
|
|
|
198
206
|
---
|
data/docs/group_user.md
CHANGED
|
@@ -4,21 +4,25 @@
|
|
|
4
4
|
|
|
5
5
|
```
|
|
6
6
|
{
|
|
7
|
-
"
|
|
8
|
-
"
|
|
7
|
+
"group_name": "My Group",
|
|
8
|
+
"group_id": 1,
|
|
9
|
+
"user_id": 1,
|
|
9
10
|
"admin": true,
|
|
10
11
|
"usernames": [
|
|
11
12
|
|
|
12
|
-
]
|
|
13
|
+
],
|
|
14
|
+
"name": "",
|
|
15
|
+
"id": ""
|
|
13
16
|
}
|
|
14
17
|
```
|
|
15
18
|
|
|
16
|
-
* `
|
|
17
|
-
* `
|
|
19
|
+
* `group_name` (string): Group name
|
|
20
|
+
* `group_id` (int64): Group ID
|
|
21
|
+
* `user_id` (int64): User ID
|
|
18
22
|
* `admin` (boolean): Is this user an administrator of this group?
|
|
19
23
|
* `usernames` (array): A list of usernames for users in this group
|
|
20
|
-
* `
|
|
21
|
-
* `
|
|
24
|
+
* `name` (string):
|
|
25
|
+
* `id` (string):
|
|
22
26
|
|
|
23
27
|
|
|
24
28
|
---
|
|
@@ -36,11 +40,11 @@ Files::GroupUser.list(
|
|
|
36
40
|
|
|
37
41
|
### Parameters
|
|
38
42
|
|
|
39
|
-
* `user_id` (int64): User ID. If provided, will return
|
|
43
|
+
* `user_id` (int64): User ID. If provided, will return group_users of this user.
|
|
40
44
|
* `page` (int64): Current page number.
|
|
41
45
|
* `per_page` (int64): Number of records to show per page. (Max: 10,000, 1,000 or less is recommended).
|
|
42
46
|
* `action` (string): Deprecated: If set to `count` returns a count of matching records rather than the records themselves.
|
|
43
|
-
* `group_id` (int64): Group ID. If provided, will return
|
|
47
|
+
* `group_id` (int64): Group ID. If provided, will return group_users of this group.
|
|
44
48
|
|
|
45
49
|
|
|
46
50
|
---
|
data/docs/notification.md
CHANGED
|
@@ -42,7 +42,9 @@ Files::Notification.list(
|
|
|
42
42
|
user_id: 1,
|
|
43
43
|
page: 1,
|
|
44
44
|
per_page: 1,
|
|
45
|
-
group_id: 1
|
|
45
|
+
group_id: 1,
|
|
46
|
+
path: "path",
|
|
47
|
+
include_ancestors: true
|
|
46
48
|
)
|
|
47
49
|
```
|
|
48
50
|
|
|
@@ -53,6 +55,8 @@ Files::Notification.list(
|
|
|
53
55
|
* `per_page` (int64): Number of records to show per page. (Max: 10,000, 1,000 or less is recommended).
|
|
54
56
|
* `action` (string): Deprecated: If set to `count` returns a count of matching records rather than the records themselves.
|
|
55
57
|
* `group_id` (int64): Show notifications for this Group ID.
|
|
58
|
+
* `path` (string): Show notifications for this Path.
|
|
59
|
+
* `include_ancestors` (boolean): If `include_ancestors` is `true` and `path` is specified, include notifications for any parent paths. Ignored if `path` is not specified.
|
|
56
60
|
|
|
57
61
|
|
|
58
62
|
---
|
data/docs/site.md
CHANGED
|
@@ -32,6 +32,8 @@
|
|
|
32
32
|
"disable_password_reset": true,
|
|
33
33
|
"domain": "my-custom-domain.com",
|
|
34
34
|
"email": "john.doe@files.com",
|
|
35
|
+
"non_sso_groups_allowed": true,
|
|
36
|
+
"non_sso_users_allowed": true,
|
|
35
37
|
"folder_permissions_groups_only": true,
|
|
36
38
|
"hipaa": true,
|
|
37
39
|
"icon128": "",
|
|
@@ -140,6 +142,8 @@
|
|
|
140
142
|
* `disable_password_reset` (boolean): Is password reset disabled?
|
|
141
143
|
* `domain` (string): Custom domain
|
|
142
144
|
* `email` (email): Main email for this site
|
|
145
|
+
* `non_sso_groups_allowed` (boolean): If true, groups can be manually created / modified / deleted by Site Admins. Otherwise, groups can only be managed via your SSO provider.
|
|
146
|
+
* `non_sso_users_allowed` (boolean): If true, users can be manually created / modified / deleted by Site Admins. Otherwise, users can only be managed via your SSO provider.
|
|
143
147
|
* `folder_permissions_groups_only` (boolean): If true, permissions for this site must be bound to a group (not a user). Otherwise, permissions must be bound to a user.
|
|
144
148
|
* `hipaa` (boolean): Is there a signed HIPAA BAA between Files.com and this site?
|
|
145
149
|
* `icon128`: Branded icon 128x128
|
|
@@ -289,6 +293,8 @@ Files::Site.update(
|
|
|
289
293
|
use_provided_modified_at: true,
|
|
290
294
|
custom_namespace: true,
|
|
291
295
|
disable_users_from_inactivity_period_days: 1,
|
|
296
|
+
non_sso_groups_allowed: true,
|
|
297
|
+
non_sso_users_allowed: true,
|
|
292
298
|
allowed_2fa_method_sms: true,
|
|
293
299
|
allowed_2fa_method_u2f: true,
|
|
294
300
|
allowed_2fa_method_totp: true,
|
|
@@ -377,6 +383,8 @@ Files::Site.update(
|
|
|
377
383
|
* `use_provided_modified_at` (boolean): Allow uploaders to set `provided_modified_at` for uploaded files?
|
|
378
384
|
* `custom_namespace` (boolean): Is this site using a custom namespace for users?
|
|
379
385
|
* `disable_users_from_inactivity_period_days` (int64): If greater than zero, users will unable to login if they do not show activity within this number of days.
|
|
386
|
+
* `non_sso_groups_allowed` (boolean): If true, groups can be manually created / modified / deleted by Site Admins. Otherwise, groups can only be managed via your SSO provider.
|
|
387
|
+
* `non_sso_users_allowed` (boolean): If true, users can be manually created / modified / deleted by Site Admins. Otherwise, users can only be managed via your SSO provider.
|
|
380
388
|
* `allowed_2fa_method_sms` (boolean): Is SMS two factor authentication allowed?
|
|
381
389
|
* `allowed_2fa_method_u2f` (boolean): Is U2F two factor authentication allowed?
|
|
382
390
|
* `allowed_2fa_method_totp` (boolean): Is TOTP two factor authentication allowed?
|
data/docs/sso_strategy.md
CHANGED
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
```
|
|
6
6
|
{
|
|
7
|
-
"protocol":
|
|
7
|
+
"protocol": [
|
|
8
|
+
|
|
9
|
+
],
|
|
8
10
|
"provider": "okta",
|
|
9
11
|
"label": "My Corporate SSO Provider",
|
|
10
12
|
"logo_url": "https://mysite.files.com/.../logo.png",
|
|
@@ -19,6 +21,8 @@
|
|
|
19
21
|
"subdomain": "my-site",
|
|
20
22
|
"provision_users": true,
|
|
21
23
|
"provision_groups": true,
|
|
24
|
+
"deprovision_users": true,
|
|
25
|
+
"deprovision_groups": true,
|
|
22
26
|
"provision_group_default": "Employees",
|
|
23
27
|
"provision_group_exclusion": "Employees",
|
|
24
28
|
"provision_group_inclusion": "Employees",
|
|
@@ -26,10 +30,8 @@
|
|
|
26
30
|
"provision_attachments_permission": true,
|
|
27
31
|
"provision_dav_permission": true,
|
|
28
32
|
"provision_ftp_permission": true,
|
|
29
|
-
"provision_group_action": "disabled",
|
|
30
33
|
"provision_sftp_permission": true,
|
|
31
34
|
"provision_time_zone": "Eastern Time (US & Canada)",
|
|
32
|
-
"provision_user_action": "disabled",
|
|
33
35
|
"ldap_base_dn": "",
|
|
34
36
|
"ldap_domain": "mysite.com",
|
|
35
37
|
"enabled": true,
|
|
@@ -38,13 +40,12 @@
|
|
|
38
40
|
"ldap_host_3": "ldap3.site.com",
|
|
39
41
|
"ldap_port": 1,
|
|
40
42
|
"ldap_secure": true,
|
|
41
|
-
"ldap_user_include_groups": "",
|
|
42
43
|
"ldap_username": "[ldap username]",
|
|
43
44
|
"ldap_username_field": "sAMAccountName"
|
|
44
45
|
}
|
|
45
46
|
```
|
|
46
47
|
|
|
47
|
-
* `protocol` (
|
|
48
|
+
* `protocol` (array): SSO Protocol
|
|
48
49
|
* `provider` (string): Provider name
|
|
49
50
|
* `label` (string): Custom label for the SSO provider on the login page.
|
|
50
51
|
* `logo_url` (string): URL holding a custom logo for the SSO provider on the login page.
|
|
@@ -59,6 +60,8 @@
|
|
|
59
60
|
* `subdomain` (string): Subdomain
|
|
60
61
|
* `provision_users` (boolean): Auto-provision users?
|
|
61
62
|
* `provision_groups` (boolean): Auto-provision group membership based on group memberships on the SSO side?
|
|
63
|
+
* `deprovision_users` (boolean): Auto-deprovision users?
|
|
64
|
+
* `deprovision_groups` (boolean): Auto-deprovision group membership based on group memberships on the SSO side?
|
|
62
65
|
* `provision_group_default` (string): Comma-separated list of group names for groups to automatically add all auto-provisioned users to.
|
|
63
66
|
* `provision_group_exclusion` (string): Comma-separated list of group names for groups (with optional wildcards) that will be excluded from auto-provisioning.
|
|
64
67
|
* `provision_group_inclusion` (string): Comma-separated list of group names for groups (with optional wildcards) that will be auto-provisioned.
|
|
@@ -66,10 +69,8 @@
|
|
|
66
69
|
* `provision_attachments_permission` (boolean): Auto-provisioned users get Sharing permission?
|
|
67
70
|
* `provision_dav_permission` (boolean): Auto-provisioned users get WebDAV permission?
|
|
68
71
|
* `provision_ftp_permission` (boolean): Auto-provisioned users get FTP permission?
|
|
69
|
-
* `provision_group_action` (string): Should we sync groups from this strategy?
|
|
70
72
|
* `provision_sftp_permission` (boolean): Auto-provisioned users get SFTP permission?
|
|
71
73
|
* `provision_time_zone` (string): Default time zone for auto provisioned users.
|
|
72
|
-
* `provision_user_action` (string): Should we sync users from this strategy?
|
|
73
74
|
* `ldap_base_dn` (string): Base DN for looking up users in LDAP server
|
|
74
75
|
* `ldap_domain` (string): Domain name that will be appended to LDAP usernames
|
|
75
76
|
* `enabled` (boolean): Is strategy enabled?
|
|
@@ -78,7 +79,6 @@
|
|
|
78
79
|
* `ldap_host_3` (string): LDAP backup host
|
|
79
80
|
* `ldap_port` (int64): LDAP port
|
|
80
81
|
* `ldap_secure` (boolean): Use secure LDAP?
|
|
81
|
-
* `ldap_user_include_groups` (string): Comma or newline separated list of group names (with optional wildcards) - if provided, only users in these groups will be added or synced.
|
|
82
82
|
* `ldap_username` (string): Username for signing in to LDAP server.
|
|
83
83
|
* `ldap_username_field` (string): LDAP username field
|
|
84
84
|
|
data/docs/status.md
CHANGED
data/docs/user.md
CHANGED
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
* `ssl_required` (string): SSL required setting
|
|
94
94
|
* `sso_strategy_id` (int64): SSO (Single Sign On) strategy ID for the user, if applicable.
|
|
95
95
|
* `subscribe_to_newsletter` (boolean): Is the user subscribed to the newsletter?
|
|
96
|
-
* `externally_managed` (boolean): Is this user managed by
|
|
96
|
+
* `externally_managed` (boolean): Is this user managed by a SsoStrategy?
|
|
97
97
|
* `time_zone` (string): User time zone
|
|
98
98
|
* `type_of_2fa` (string): Type(s) of 2FA methods in use. Will be either `sms`, `totp`, `u2f`, `yubi`, or multiple values sorted alphabetically and joined by an underscore.
|
|
99
99
|
* `user_root` (string): Root folder for FTP (and optionally SFTP if the appropriate site-wide setting is set.) Note that this is not used for API, Desktop, or Web interface.
|
|
@@ -132,6 +132,8 @@ Files::User.list(
|
|
|
132
132
|
* `q[password_validity_days]` (string): If set, list only users with overridden password validity days setting.
|
|
133
133
|
* `q[ssl_required]` (string): If set, list only users with overridden SSL required setting.
|
|
134
134
|
* `search` (string): Searches for partial matches of name, username, or email.
|
|
135
|
+
* `sort_by[last_login_at]` (string): If set, sort users by 'last_login_at' in either 'asc' or 'desc' direction
|
|
136
|
+
* `sort_by[authenticate_until]` (string): If set, sort users by 'authenticate_until' in either 'asc' or 'desc' direction
|
|
135
137
|
|
|
136
138
|
|
|
137
139
|
---
|
data/files.com.gemspec
CHANGED
|
@@ -14,6 +14,7 @@ Gem::Specification.new do |s|
|
|
|
14
14
|
s.add_dependency 'faraday', ">= 1.0.1"
|
|
15
15
|
s.add_dependency 'net-http-persistent'
|
|
16
16
|
s.add_dependency 'addressable', ">= 2.7.0"
|
|
17
|
+
s.add_dependency 'concurrent-ruby', ">= 1.1.6"
|
|
17
18
|
|
|
18
19
|
s.files = `find *`.split("\n").uniq.sort.reject(&:empty?)
|
|
19
20
|
s.executables = [ "files", "files-console" ]
|
data/lib/files.com.rb
CHANGED
|
@@ -11,11 +11,13 @@ require "set"
|
|
|
11
11
|
require "socket"
|
|
12
12
|
require "uri"
|
|
13
13
|
require "addressable/uri"
|
|
14
|
+
require "concurrent/promise"
|
|
14
15
|
|
|
15
16
|
$LOAD_PATH.push __dir__
|
|
16
17
|
|
|
17
18
|
require "files.com/version"
|
|
18
19
|
|
|
20
|
+
require "files.com/sizable_io"
|
|
19
21
|
require "files.com/api"
|
|
20
22
|
require "files.com/api_client"
|
|
21
23
|
require "files.com/errors"
|
data/lib/files.com/api_client.rb
CHANGED
|
@@ -146,13 +146,19 @@ module Files
|
|
|
146
146
|
|
|
147
147
|
def stream_download(uri, io)
|
|
148
148
|
if conn.adapter == Faraday::Adapter::NetHttp
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
149
|
+
uri = URI(uri)
|
|
150
|
+
Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http|
|
|
151
|
+
request = Net::HTTP::Get.new uri
|
|
152
|
+
http.request request do |response|
|
|
153
|
+
io.fulfill_content_length(response.content_length) if io.respond_to?(:fulfill_content_length)
|
|
154
|
+
response.read_body do |chunk|
|
|
155
|
+
io << chunk.encode!
|
|
156
|
+
end
|
|
152
157
|
end
|
|
153
158
|
end
|
|
154
159
|
else
|
|
155
160
|
response = remote_request(:get, uri)
|
|
161
|
+
io.fulfill_content_length(response.content_length) if io.respond_to?(:fulfill_content_length)
|
|
156
162
|
io.write(response.body)
|
|
157
163
|
end
|
|
158
164
|
end
|
|
@@ -123,7 +123,7 @@ module Files
|
|
|
123
123
|
# per_page - int64 - Number of records to show per page. (Max: 10,000, 1,000 or less is recommended).
|
|
124
124
|
# action - string - Deprecated: If set to `count` returns a count of matching records rather than the records themselves.
|
|
125
125
|
# path (required) - string - Path to operate on.
|
|
126
|
-
# recursive - string - Show behaviors
|
|
126
|
+
# recursive - string - Show behaviors above this path?
|
|
127
127
|
# behavior - string - If set only shows folder behaviors matching this behavior type.
|
|
128
128
|
def self.list_for(path, params = {}, options = {})
|
|
129
129
|
params ||= {}
|
|
@@ -175,10 +175,14 @@ module Files
|
|
|
175
175
|
# url (required) - string - URL for testing the webhook.
|
|
176
176
|
# method - string - HTTP method(GET or POST).
|
|
177
177
|
# encoding - string - HTTP encoding method. Can be JSON, XML, or RAW (form data).
|
|
178
|
+
# headers - object - Additional request headers.
|
|
179
|
+
# body - object - Additional body parameters.
|
|
178
180
|
def self.webhook_test(params = {}, options = {})
|
|
179
181
|
raise InvalidParameterError.new("Bad parameter: url must be an String") if params.dig(:url) and !params.dig(:url).is_a?(String)
|
|
180
182
|
raise InvalidParameterError.new("Bad parameter: method must be an String") if params.dig(:method) and !params.dig(:method).is_a?(String)
|
|
181
183
|
raise InvalidParameterError.new("Bad parameter: encoding must be an String") if params.dig(:encoding) and !params.dig(:encoding).is_a?(String)
|
|
184
|
+
raise InvalidParameterError.new("Bad parameter: headers must be an Hash") if params.dig(:headers) and !params.dig(:headers).is_a?(Hash)
|
|
185
|
+
raise InvalidParameterError.new("Bad parameter: body must be an Hash") if params.dig(:body) and !params.dig(:body).is_a?(Hash)
|
|
182
186
|
raise MissingParameterError.new("Parameter missing: url") unless params.dig(:url)
|
|
183
187
|
|
|
184
188
|
response, _options = Api.send_request("/behaviors/webhook/test", :post, params, options)
|
|
@@ -9,15 +9,6 @@ module Files
|
|
|
9
9
|
@options = options || {}
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
-
# int64 - Bundle ID
|
|
13
|
-
def id
|
|
14
|
-
@attributes[:id]
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def id=(value)
|
|
18
|
-
@attributes[:id] = value
|
|
19
|
-
end
|
|
20
|
-
|
|
21
12
|
# string - Bundle code. This code forms the end part of the Public URL.
|
|
22
13
|
def code
|
|
23
14
|
@attributes[:code]
|
|
@@ -27,9 +18,13 @@ module Files
|
|
|
27
18
|
@attributes[:code] = value
|
|
28
19
|
end
|
|
29
20
|
|
|
30
|
-
#
|
|
31
|
-
def
|
|
32
|
-
@attributes[:
|
|
21
|
+
# string - Public URL of Share Link
|
|
22
|
+
def url
|
|
23
|
+
@attributes[:url]
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def url=(value)
|
|
27
|
+
@attributes[:url] = value
|
|
33
28
|
end
|
|
34
29
|
|
|
35
30
|
# string - Public description
|
|
@@ -41,49 +36,54 @@ module Files
|
|
|
41
36
|
@attributes[:description] = value
|
|
42
37
|
end
|
|
43
38
|
|
|
44
|
-
#
|
|
45
|
-
def
|
|
46
|
-
@attributes[:
|
|
39
|
+
# boolean - Is this bundle password protected?
|
|
40
|
+
def password_protected
|
|
41
|
+
@attributes[:password_protected]
|
|
47
42
|
end
|
|
48
43
|
|
|
49
|
-
def
|
|
50
|
-
@attributes[:
|
|
44
|
+
def password_protected=(value)
|
|
45
|
+
@attributes[:password_protected] = value
|
|
51
46
|
end
|
|
52
47
|
|
|
53
|
-
#
|
|
54
|
-
def
|
|
55
|
-
@attributes[:
|
|
48
|
+
# boolean - Show a registration page that captures the downloader's name and email address?
|
|
49
|
+
def require_registration
|
|
50
|
+
@attributes[:require_registration]
|
|
56
51
|
end
|
|
57
52
|
|
|
58
|
-
def
|
|
59
|
-
@attributes[:
|
|
53
|
+
def require_registration=(value)
|
|
54
|
+
@attributes[:require_registration] = value
|
|
60
55
|
end
|
|
61
56
|
|
|
62
|
-
#
|
|
63
|
-
def
|
|
64
|
-
@attributes[:
|
|
57
|
+
# int64 - Bundle ID
|
|
58
|
+
def id
|
|
59
|
+
@attributes[:id]
|
|
65
60
|
end
|
|
66
61
|
|
|
67
|
-
def
|
|
68
|
-
@attributes[:
|
|
62
|
+
def id=(value)
|
|
63
|
+
@attributes[:id] = value
|
|
69
64
|
end
|
|
70
65
|
|
|
71
|
-
#
|
|
72
|
-
def
|
|
73
|
-
@attributes[:
|
|
66
|
+
# date-time - Bundle created at date/time
|
|
67
|
+
def created_at
|
|
68
|
+
@attributes[:created_at]
|
|
74
69
|
end
|
|
75
70
|
|
|
76
|
-
|
|
77
|
-
|
|
71
|
+
# date-time - Bundle expiration date/time
|
|
72
|
+
def expires_at
|
|
73
|
+
@attributes[:expires_at]
|
|
78
74
|
end
|
|
79
75
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
@attributes[:url]
|
|
76
|
+
def expires_at=(value)
|
|
77
|
+
@attributes[:expires_at] = value
|
|
83
78
|
end
|
|
84
79
|
|
|
85
|
-
|
|
86
|
-
|
|
80
|
+
# string - Bundle internal note
|
|
81
|
+
def note
|
|
82
|
+
@attributes[:note]
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def note=(value)
|
|
86
|
+
@attributes[:note] = value
|
|
87
87
|
end
|
|
88
88
|
|
|
89
89
|
# int64 - Bundle creator user ID
|
|
@@ -104,6 +104,15 @@ module Files
|
|
|
104
104
|
@attributes[:username] = value
|
|
105
105
|
end
|
|
106
106
|
|
|
107
|
+
# array - A list of paths in this bundle
|
|
108
|
+
def paths
|
|
109
|
+
@attributes[:paths]
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def paths=(value)
|
|
113
|
+
@attributes[:paths] = value
|
|
114
|
+
end
|
|
115
|
+
|
|
107
116
|
# string - Password for this bundle.
|
|
108
117
|
def password
|
|
109
118
|
@attributes[:password]
|
|
@@ -137,6 +146,7 @@ module Files
|
|
|
137
146
|
# description - string - Public description
|
|
138
147
|
# note - string - Bundle internal note
|
|
139
148
|
# code - string - Bundle code. This code forms the end part of the Public URL.
|
|
149
|
+
# require_registration - boolean - Show a registration page that captures the downloader's name and email address?
|
|
140
150
|
def update(params = {})
|
|
141
151
|
params ||= {}
|
|
142
152
|
params[:id] = @attributes[:id]
|
|
@@ -217,6 +227,7 @@ module Files
|
|
|
217
227
|
# description - string - Public description
|
|
218
228
|
# note - string - Bundle internal note
|
|
219
229
|
# code - string - Bundle code. This code forms the end part of the Public URL.
|
|
230
|
+
# require_registration - boolean - Show a registration page that captures the downloader's name and email address?
|
|
220
231
|
def self.create(params = {}, options = {})
|
|
221
232
|
raise InvalidParameterError.new("Bad parameter: user_id must be an Integer") if params.dig(:user_id) and !params.dig(:user_id).is_a?(Integer)
|
|
222
233
|
raise InvalidParameterError.new("Bad parameter: paths must be an Array") if params.dig(:paths) and !params.dig(:paths).is_a?(Array)
|
|
@@ -255,6 +266,7 @@ module Files
|
|
|
255
266
|
# description - string - Public description
|
|
256
267
|
# note - string - Bundle internal note
|
|
257
268
|
# code - string - Bundle code. This code forms the end part of the Public URL.
|
|
269
|
+
# require_registration - boolean - Show a registration page that captures the downloader's name and email address?
|
|
258
270
|
def self.update(id, params = {}, options = {})
|
|
259
271
|
params ||= {}
|
|
260
272
|
params[:id] = id
|
|
@@ -10,21 +10,30 @@ module Files
|
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
# string - Group name
|
|
13
|
-
def
|
|
14
|
-
@attributes[:
|
|
13
|
+
def group_name
|
|
14
|
+
@attributes[:group_name]
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
def
|
|
18
|
-
@attributes[:
|
|
17
|
+
def group_name=(value)
|
|
18
|
+
@attributes[:group_name] = value
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
# int64 - Group ID
|
|
22
|
-
def
|
|
23
|
-
@attributes[:
|
|
22
|
+
def group_id
|
|
23
|
+
@attributes[:group_id]
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
-
def
|
|
27
|
-
@attributes[:
|
|
26
|
+
def group_id=(value)
|
|
27
|
+
@attributes[:group_id] = value
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# int64 - User ID
|
|
31
|
+
def user_id
|
|
32
|
+
@attributes[:user_id]
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def user_id=(value)
|
|
36
|
+
@attributes[:user_id] = value
|
|
28
37
|
end
|
|
29
38
|
|
|
30
39
|
# boolean - Is this user an administrator of this group?
|
|
@@ -45,22 +54,22 @@ module Files
|
|
|
45
54
|
@attributes[:usernames] = value
|
|
46
55
|
end
|
|
47
56
|
|
|
48
|
-
#
|
|
49
|
-
def
|
|
50
|
-
@attributes[:
|
|
57
|
+
# string
|
|
58
|
+
def name
|
|
59
|
+
@attributes[:name]
|
|
51
60
|
end
|
|
52
61
|
|
|
53
|
-
def
|
|
54
|
-
@attributes[:
|
|
62
|
+
def name=(value)
|
|
63
|
+
@attributes[:name] = value
|
|
55
64
|
end
|
|
56
65
|
|
|
57
|
-
#
|
|
58
|
-
def
|
|
59
|
-
@attributes[:
|
|
66
|
+
# string
|
|
67
|
+
def id
|
|
68
|
+
@attributes[:id]
|
|
60
69
|
end
|
|
61
70
|
|
|
62
|
-
def
|
|
63
|
-
@attributes[:
|
|
71
|
+
def id=(value)
|
|
72
|
+
@attributes[:id] = value
|
|
64
73
|
end
|
|
65
74
|
|
|
66
75
|
# Parameters:
|
|
@@ -100,11 +109,11 @@ module Files
|
|
|
100
109
|
end
|
|
101
110
|
|
|
102
111
|
# Parameters:
|
|
103
|
-
# user_id - int64 - User ID. If provided, will return
|
|
112
|
+
# user_id - int64 - User ID. If provided, will return group_users of this user.
|
|
104
113
|
# page - int64 - Current page number.
|
|
105
114
|
# per_page - int64 - Number of records to show per page. (Max: 10,000, 1,000 or less is recommended).
|
|
106
115
|
# action - string - Deprecated: If set to `count` returns a count of matching records rather than the records themselves.
|
|
107
|
-
# group_id - int64 - Group ID. If provided, will return
|
|
116
|
+
# group_id - int64 - Group ID. If provided, will return group_users of this group.
|
|
108
117
|
def self.list(params = {}, options = {})
|
|
109
118
|
raise InvalidParameterError.new("Bad parameter: user_id must be an Integer") if params.dig(:user_id) and !params.dig(:user_id).is_a?(Integer)
|
|
110
119
|
raise InvalidParameterError.new("Bad parameter: page must be an Integer") if params.dig(:page) and !params.dig(:page).is_a?(Integer)
|
|
@@ -161,12 +161,15 @@ module Files
|
|
|
161
161
|
# per_page - int64 - Number of records to show per page. (Max: 10,000, 1,000 or less is recommended).
|
|
162
162
|
# action - string - Deprecated: If set to `count` returns a count of matching records rather than the records themselves.
|
|
163
163
|
# group_id - int64 - Show notifications for this Group ID.
|
|
164
|
+
# path - string - Show notifications for this Path.
|
|
165
|
+
# include_ancestors - boolean - If `include_ancestors` is `true` and `path` is specified, include notifications for any parent paths. Ignored if `path` is not specified.
|
|
164
166
|
def self.list(params = {}, options = {})
|
|
165
167
|
raise InvalidParameterError.new("Bad parameter: user_id must be an Integer") if params.dig(:user_id) and !params.dig(:user_id).is_a?(Integer)
|
|
166
168
|
raise InvalidParameterError.new("Bad parameter: page must be an Integer") if params.dig(:page) and !params.dig(:page).is_a?(Integer)
|
|
167
169
|
raise InvalidParameterError.new("Bad parameter: per_page must be an Integer") if params.dig(:per_page) and !params.dig(:per_page).is_a?(Integer)
|
|
168
170
|
raise InvalidParameterError.new("Bad parameter: action must be an String") if params.dig(:action) and !params.dig(:action).is_a?(String)
|
|
169
171
|
raise InvalidParameterError.new("Bad parameter: group_id must be an Integer") if params.dig(:group_id) and !params.dig(:group_id).is_a?(Integer)
|
|
172
|
+
raise InvalidParameterError.new("Bad parameter: path must be an String") if params.dig(:path) and !params.dig(:path).is_a?(String)
|
|
170
173
|
|
|
171
174
|
response, options = Api.send_request("/notifications", :get, params, options)
|
|
172
175
|
end
|
|
@@ -149,6 +149,16 @@ module Files
|
|
|
149
149
|
@attributes[:email]
|
|
150
150
|
end
|
|
151
151
|
|
|
152
|
+
# boolean - If true, groups can be manually created / modified / deleted by Site Admins. Otherwise, groups can only be managed via your SSO provider.
|
|
153
|
+
def non_sso_groups_allowed
|
|
154
|
+
@attributes[:non_sso_groups_allowed]
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
# boolean - If true, users can be manually created / modified / deleted by Site Admins. Otherwise, users can only be managed via your SSO provider.
|
|
158
|
+
def non_sso_users_allowed
|
|
159
|
+
@attributes[:non_sso_users_allowed]
|
|
160
|
+
end
|
|
161
|
+
|
|
152
162
|
# boolean - If true, permissions for this site must be bound to a group (not a user). Otherwise, permissions must be bound to a user.
|
|
153
163
|
def folder_permissions_groups_only
|
|
154
164
|
@attributes[:folder_permissions_groups_only]
|
|
@@ -593,6 +603,8 @@ module Files
|
|
|
593
603
|
# use_provided_modified_at - boolean - Allow uploaders to set `provided_modified_at` for uploaded files?
|
|
594
604
|
# custom_namespace - boolean - Is this site using a custom namespace for users?
|
|
595
605
|
# disable_users_from_inactivity_period_days - int64 - If greater than zero, users will unable to login if they do not show activity within this number of days.
|
|
606
|
+
# non_sso_groups_allowed - boolean - If true, groups can be manually created / modified / deleted by Site Admins. Otherwise, groups can only be managed via your SSO provider.
|
|
607
|
+
# non_sso_users_allowed - boolean - If true, users can be manually created / modified / deleted by Site Admins. Otherwise, users can only be managed via your SSO provider.
|
|
596
608
|
# allowed_2fa_method_sms - boolean - Is SMS two factor authentication allowed?
|
|
597
609
|
# allowed_2fa_method_u2f - boolean - Is U2F two factor authentication allowed?
|
|
598
610
|
# allowed_2fa_method_totp - boolean - Is TOTP two factor authentication allowed?
|
|
@@ -9,7 +9,7 @@ module Files
|
|
|
9
9
|
@options = options || {}
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
-
#
|
|
12
|
+
# array - SSO Protocol
|
|
13
13
|
def protocol
|
|
14
14
|
@attributes[:protocol]
|
|
15
15
|
end
|
|
@@ -84,6 +84,16 @@ module Files
|
|
|
84
84
|
@attributes[:provision_groups]
|
|
85
85
|
end
|
|
86
86
|
|
|
87
|
+
# boolean - Auto-deprovision users?
|
|
88
|
+
def deprovision_users
|
|
89
|
+
@attributes[:deprovision_users]
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
# boolean - Auto-deprovision group membership based on group memberships on the SSO side?
|
|
93
|
+
def deprovision_groups
|
|
94
|
+
@attributes[:deprovision_groups]
|
|
95
|
+
end
|
|
96
|
+
|
|
87
97
|
# string - Comma-separated list of group names for groups to automatically add all auto-provisioned users to.
|
|
88
98
|
def provision_group_default
|
|
89
99
|
@attributes[:provision_group_default]
|
|
@@ -119,11 +129,6 @@ module Files
|
|
|
119
129
|
@attributes[:provision_ftp_permission]
|
|
120
130
|
end
|
|
121
131
|
|
|
122
|
-
# string - Should we sync groups from this strategy?
|
|
123
|
-
def provision_group_action
|
|
124
|
-
@attributes[:provision_group_action]
|
|
125
|
-
end
|
|
126
|
-
|
|
127
132
|
# boolean - Auto-provisioned users get SFTP permission?
|
|
128
133
|
def provision_sftp_permission
|
|
129
134
|
@attributes[:provision_sftp_permission]
|
|
@@ -134,11 +139,6 @@ module Files
|
|
|
134
139
|
@attributes[:provision_time_zone]
|
|
135
140
|
end
|
|
136
141
|
|
|
137
|
-
# string - Should we sync users from this strategy?
|
|
138
|
-
def provision_user_action
|
|
139
|
-
@attributes[:provision_user_action]
|
|
140
|
-
end
|
|
141
|
-
|
|
142
142
|
# string - Base DN for looking up users in LDAP server
|
|
143
143
|
def ldap_base_dn
|
|
144
144
|
@attributes[:ldap_base_dn]
|
|
@@ -179,11 +179,6 @@ module Files
|
|
|
179
179
|
@attributes[:ldap_secure]
|
|
180
180
|
end
|
|
181
181
|
|
|
182
|
-
# string - Comma or newline separated list of group names (with optional wildcards) - if provided, only users in these groups will be added or synced.
|
|
183
|
-
def ldap_user_include_groups
|
|
184
|
-
@attributes[:ldap_user_include_groups]
|
|
185
|
-
end
|
|
186
|
-
|
|
187
182
|
# string - Username for signing in to LDAP server.
|
|
188
183
|
def ldap_username
|
|
189
184
|
@attributes[:ldap_username]
|
|
@@ -356,7 +356,7 @@ module Files
|
|
|
356
356
|
@attributes[:subscribe_to_newsletter] = value
|
|
357
357
|
end
|
|
358
358
|
|
|
359
|
-
# boolean - Is this user managed by
|
|
359
|
+
# boolean - Is this user managed by a SsoStrategy?
|
|
360
360
|
def externally_managed
|
|
361
361
|
@attributes[:externally_managed]
|
|
362
362
|
end
|
|
@@ -612,6 +612,8 @@ module Files
|
|
|
612
612
|
# q[password_validity_days] - string - If set, list only users with overridden password validity days setting.
|
|
613
613
|
# q[ssl_required] - string - If set, list only users with overridden SSL required setting.
|
|
614
614
|
# search - string - Searches for partial matches of name, username, or email.
|
|
615
|
+
# sort_by[last_login_at] - string - If set, sort users by 'last_login_at' in either 'asc' or 'desc' direction
|
|
616
|
+
# sort_by[authenticate_until] - string - If set, sort users by 'authenticate_until' in either 'asc' or 'desc' direction
|
|
615
617
|
def self.list(params = {}, options = {})
|
|
616
618
|
raise InvalidParameterError.new("Bad parameter: page must be an Integer") if params.dig(:page) and !params.dig(:page).is_a?(Integer)
|
|
617
619
|
raise InvalidParameterError.new("Bad parameter: per_page must be an Integer") if params.dig(:per_page) and !params.dig(:per_page).is_a?(Integer)
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module Files
|
|
2
|
+
class SizableIO < IO
|
|
3
|
+
def self.pipe
|
|
4
|
+
r, w = super
|
|
5
|
+
|
|
6
|
+
w.instance_variable_set(:@read_io, r)
|
|
7
|
+
|
|
8
|
+
[r, w]
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def size
|
|
12
|
+
read_io.content_length_promise.wait.value
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def fulfill_content_length(length)
|
|
16
|
+
read_io.content_length = length
|
|
17
|
+
read_io.content_length_promise.execute
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
protected
|
|
21
|
+
|
|
22
|
+
attr_accessor :content_length
|
|
23
|
+
|
|
24
|
+
def content_length_promise
|
|
25
|
+
@content_length_promise ||= Concurrent::Promise.new { content_length }
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def read_io
|
|
29
|
+
@read_io || self
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
data/spec/models/file_spec.rb
CHANGED
|
@@ -24,8 +24,9 @@ RSpec.describe Files::File, :with_test_folder do
|
|
|
24
24
|
|
|
25
25
|
it "returns an IO Object" do
|
|
26
26
|
file = Files::File.find(test_folder.join("read.txt").to_s, {}, options)
|
|
27
|
-
expect(file.read_io
|
|
27
|
+
expect(file.read_io).to be_a_kind_of(IO)
|
|
28
28
|
expect(file.read_io.read).to eq("contents")
|
|
29
|
+
expect(file.read_io.size).to eq("contents".length)
|
|
29
30
|
end
|
|
30
31
|
end
|
|
31
32
|
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: files.com
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.0.67
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- files.com
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-06-
|
|
11
|
+
date: 2020-06-16 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: faraday
|
|
@@ -52,6 +52,20 @@ dependencies:
|
|
|
52
52
|
- - ">="
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
54
|
version: 2.7.0
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: concurrent-ruby
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - ">="
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: 1.1.6
|
|
62
|
+
type: :runtime
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - ">="
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: 1.1.6
|
|
55
69
|
description: The Files.com Ruby client.
|
|
56
70
|
email:
|
|
57
71
|
- support@files.com
|
|
@@ -173,6 +187,7 @@ files:
|
|
|
173
187
|
- lib/files.com/models/user.rb
|
|
174
188
|
- lib/files.com/models/user_cipher_use.rb
|
|
175
189
|
- lib/files.com/response.rb
|
|
190
|
+
- lib/files.com/sizable_io.rb
|
|
176
191
|
- lib/files.com/system_profiler.rb
|
|
177
192
|
- lib/files.com/util.rb
|
|
178
193
|
- lib/files.com/version.rb
|