microslop_one_drive 2.2.0 → 3.1.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 +4 -4
- data/README.md +72 -6
- data/lib/microslop_one_drive/batch/batch_response.rb +15 -0
- data/lib/microslop_one_drive/batch/response.rb +18 -0
- data/lib/microslop_one_drive/client.rb +14 -154
- data/lib/microslop_one_drive/deserializers/drive_deserializer.rb +57 -0
- data/lib/microslop_one_drive/deserializers/drive_item_deserializer.rb +67 -0
- data/lib/microslop_one_drive/deserializers/parent_reference_deserializer.rb +20 -0
- data/lib/microslop_one_drive/deserializers/quota_deserializer.rb +24 -0
- data/lib/microslop_one_drive/deserializers/shared_with_me_item_deserializer.rb +48 -0
- data/lib/microslop_one_drive/deserializers/user_deserializer.rb +29 -0
- data/lib/microslop_one_drive/drive.rb +40 -10
- data/lib/microslop_one_drive/drive_item.rb +61 -63
- data/lib/microslop_one_drive/endpoints/all_drives.rb +17 -0
- data/lib/microslop_one_drive/endpoints/batch.rb +37 -0
- data/lib/microslop_one_drive/endpoints/batch_permissions.rb +42 -0
- data/lib/microslop_one_drive/endpoints/delta.rb +19 -0
- data/lib/microslop_one_drive/endpoints/drive.rb +27 -0
- data/lib/microslop_one_drive/endpoints/drive_exists.rb +15 -0
- data/lib/microslop_one_drive/endpoints/drive_item.rb +20 -0
- data/lib/microslop_one_drive/endpoints/drive_item_exists.rb +22 -0
- data/lib/microslop_one_drive/endpoints/me.rb +14 -0
- data/lib/microslop_one_drive/endpoints/permissions.rb +36 -0
- data/lib/microslop_one_drive/endpoints/shared_with_me.rb +14 -0
- data/lib/microslop_one_drive/endpoints/supports_sites.rb +27 -0
- data/lib/microslop_one_drive/file.rb +13 -0
- data/lib/microslop_one_drive/folder.rb +13 -0
- data/lib/microslop_one_drive/list_responses/drive_item_list.rb +21 -0
- data/lib/microslop_one_drive/list_responses/drive_list.rb +15 -0
- data/lib/microslop_one_drive/list_responses/list_response.rb +21 -0
- data/lib/microslop_one_drive/list_responses/permission_list.rb +27 -0
- data/lib/microslop_one_drive/list_responses/shared_with_me_list.rb +15 -0
- data/lib/microslop_one_drive/parent_reference.rb +14 -0
- data/lib/microslop_one_drive/permission_set.rb +13 -15
- data/lib/microslop_one_drive/quota.rb +14 -0
- data/lib/microslop_one_drive/root_folder.rb +13 -0
- data/lib/microslop_one_drive/shared_with_me_item.rb +44 -0
- data/lib/microslop_one_drive/user.rb +33 -5
- data/lib/microslop_one_drive/utils.rb +10 -0
- data/lib/microslop_one_drive/version.rb +1 -1
- data/lib/microslop_one_drive.rb +47 -8
- metadata +37 -67
- data/lib/microslop_one_drive/batch_response.rb +0 -13
- data/lib/microslop_one_drive/drive_item_list.rb +0 -32
- data/lib/microslop_one_drive/drive_list.rb +0 -13
- data/lib/microslop_one_drive/list_response.rb +0 -21
- data/lib/microslop_one_drive/permission_list.rb +0 -29
- data/lib/microslop_one_drive/response.rb +0 -16
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
module MicroslopOneDrive
|
|
2
|
+
class Quota
|
|
3
|
+
attr_reader :deleted, :remaining, :state, :total, :used, :upgrade_available
|
|
4
|
+
|
|
5
|
+
def initialize(deleted:, remaining:, state:, total:, used:, upgrade_available:)
|
|
6
|
+
@deleted = deleted
|
|
7
|
+
@remaining = remaining
|
|
8
|
+
@state = state
|
|
9
|
+
@total = total
|
|
10
|
+
@used = used
|
|
11
|
+
@upgrade_available = upgrade_available
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
module MicroslopOneDrive
|
|
2
|
+
class SharedWithMeItem
|
|
3
|
+
attr_reader :id, :name, :web_url, :size, :last_modified_date_time, :created_date_time, :created_by,
|
|
4
|
+
:last_modified_by, :remote_item
|
|
5
|
+
|
|
6
|
+
def initialize(
|
|
7
|
+
id:,
|
|
8
|
+
name:,
|
|
9
|
+
web_url:,
|
|
10
|
+
size:,
|
|
11
|
+
last_modified_date_time:,
|
|
12
|
+
created_date_time:,
|
|
13
|
+
created_by:,
|
|
14
|
+
last_modified_by:,
|
|
15
|
+
remote_item:
|
|
16
|
+
)
|
|
17
|
+
@id = id
|
|
18
|
+
@name = name
|
|
19
|
+
@web_url = web_url
|
|
20
|
+
@size = size
|
|
21
|
+
@last_modified_date_time = last_modified_date_time
|
|
22
|
+
@created_date_time = created_date_time
|
|
23
|
+
@created_by = created_by
|
|
24
|
+
@last_modified_by = last_modified_by
|
|
25
|
+
@remote_item = remote_item
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def created_at
|
|
29
|
+
@created_date_time
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def updated_at
|
|
33
|
+
@last_modified_date_time
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def url
|
|
37
|
+
@web_url
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def updated_by
|
|
41
|
+
@last_modified_by
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -1,12 +1,40 @@
|
|
|
1
1
|
module MicroslopOneDrive
|
|
2
2
|
class User
|
|
3
|
-
attr_reader :
|
|
3
|
+
attr_reader :principal_name, :id, :display_name, :surname, :given_name, :preferred_language, :mail, :mobile_phone,
|
|
4
|
+
:job_title, :office_location, :business_phones
|
|
4
5
|
|
|
5
|
-
def initialize(
|
|
6
|
-
|
|
6
|
+
def initialize(
|
|
7
|
+
principal_name: nil,
|
|
8
|
+
id: nil,
|
|
9
|
+
display_name: nil,
|
|
10
|
+
surname: nil,
|
|
11
|
+
given_name: nil,
|
|
12
|
+
preferred_language: nil,
|
|
13
|
+
mail: nil,
|
|
14
|
+
mobile_phone: nil,
|
|
15
|
+
job_title: nil,
|
|
16
|
+
office_location: nil,
|
|
17
|
+
business_phones: []
|
|
18
|
+
)
|
|
19
|
+
@principal_name = principal_name
|
|
20
|
+
@id = id
|
|
21
|
+
@display_name = display_name
|
|
22
|
+
@surname = surname
|
|
23
|
+
@given_name = given_name
|
|
24
|
+
@preferred_language = preferred_language
|
|
25
|
+
@mail = mail
|
|
26
|
+
@mobile_phone = mobile_phone
|
|
27
|
+
@job_title = job_title
|
|
28
|
+
@office_location = office_location
|
|
29
|
+
@business_phones = business_phones
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def email_address
|
|
33
|
+
mail
|
|
34
|
+
end
|
|
7
35
|
|
|
8
|
-
|
|
9
|
-
|
|
36
|
+
def last_name
|
|
37
|
+
surname
|
|
10
38
|
end
|
|
11
39
|
end
|
|
12
40
|
end
|
|
@@ -2,6 +2,16 @@ require "time"
|
|
|
2
2
|
|
|
3
3
|
module MicroslopOneDrive
|
|
4
4
|
module Utils
|
|
5
|
+
def self.deep_symbolize_keys(hash)
|
|
6
|
+
hash.transform_keys(&:to_sym).transform_values do
|
|
7
|
+
case it
|
|
8
|
+
when Hash then deep_symbolize_keys(it)
|
|
9
|
+
when Array then it.map { it.is_a?(Hash) ? deep_symbolize_keys(it) : it }
|
|
10
|
+
else it
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
5
15
|
def self.safe_parse_time(value)
|
|
6
16
|
return nil if value.nil? || value.to_s.strip.empty?
|
|
7
17
|
|
data/lib/microslop_one_drive.rb
CHANGED
|
@@ -3,17 +3,56 @@ require "json"
|
|
|
3
3
|
|
|
4
4
|
require_relative "microslop_one_drive/version"
|
|
5
5
|
require_relative "microslop_one_drive/utils"
|
|
6
|
-
|
|
6
|
+
|
|
7
|
+
# Deserializers
|
|
8
|
+
require_relative "microslop_one_drive/deserializers/user_deserializer"
|
|
9
|
+
require_relative "microslop_one_drive/deserializers/drive_deserializer"
|
|
10
|
+
require_relative "microslop_one_drive/deserializers/quota_deserializer"
|
|
11
|
+
require_relative "microslop_one_drive/deserializers/drive_item_deserializer"
|
|
12
|
+
require_relative "microslop_one_drive/deserializers/parent_reference_deserializer"
|
|
13
|
+
require_relative "microslop_one_drive/deserializers/shared_with_me_item_deserializer"
|
|
14
|
+
|
|
15
|
+
# Drive items
|
|
16
|
+
require_relative "microslop_one_drive/file"
|
|
17
|
+
require_relative "microslop_one_drive/folder"
|
|
18
|
+
require_relative "microslop_one_drive/root_folder"
|
|
19
|
+
require_relative "microslop_one_drive/drive_item"
|
|
20
|
+
|
|
21
|
+
# List Responses
|
|
22
|
+
require_relative "microslop_one_drive/list_responses/list_response"
|
|
23
|
+
require_relative "microslop_one_drive/list_responses/drive_list"
|
|
24
|
+
require_relative "microslop_one_drive/list_responses/drive_item_list"
|
|
25
|
+
require_relative "microslop_one_drive/list_responses/permission_list"
|
|
26
|
+
require_relative "microslop_one_drive/list_responses/shared_with_me_list"
|
|
27
|
+
|
|
28
|
+
# Batch
|
|
29
|
+
require_relative "microslop_one_drive/batch/batch_response"
|
|
30
|
+
require_relative "microslop_one_drive/batch/response"
|
|
31
|
+
|
|
32
|
+
# Other models
|
|
7
33
|
require_relative "microslop_one_drive/user"
|
|
8
|
-
require_relative "microslop_one_drive/
|
|
9
|
-
require_relative "microslop_one_drive/drive_list"
|
|
34
|
+
require_relative "microslop_one_drive/parent_reference"
|
|
10
35
|
require_relative "microslop_one_drive/drive"
|
|
11
|
-
require_relative "microslop_one_drive/drive_item"
|
|
12
|
-
require_relative "microslop_one_drive/drive_item_list"
|
|
13
|
-
require_relative "microslop_one_drive/permission_list"
|
|
14
36
|
require_relative "microslop_one_drive/permission_set"
|
|
15
37
|
require_relative "microslop_one_drive/permission"
|
|
16
38
|
require_relative "microslop_one_drive/audience"
|
|
17
|
-
require_relative "microslop_one_drive/
|
|
18
|
-
require_relative "microslop_one_drive/
|
|
39
|
+
require_relative "microslop_one_drive/quota"
|
|
40
|
+
require_relative "microslop_one_drive/shared_with_me_item"
|
|
41
|
+
|
|
42
|
+
# Endpoints
|
|
43
|
+
require_relative "microslop_one_drive/endpoints/me"
|
|
44
|
+
require_relative "microslop_one_drive/endpoints/drive"
|
|
45
|
+
require_relative "microslop_one_drive/endpoints/all_drives"
|
|
46
|
+
require_relative "microslop_one_drive/endpoints/drive_exists"
|
|
47
|
+
require_relative "microslop_one_drive/endpoints/drive_item"
|
|
48
|
+
require_relative "microslop_one_drive/endpoints/drive_item_exists"
|
|
49
|
+
require_relative "microslop_one_drive/endpoints/delta"
|
|
50
|
+
require_relative "microslop_one_drive/endpoints/shared_with_me"
|
|
51
|
+
require_relative "microslop_one_drive/endpoints/permissions"
|
|
52
|
+
require_relative "microslop_one_drive/endpoints/batch"
|
|
53
|
+
require_relative "microslop_one_drive/endpoints/batch_permissions"
|
|
54
|
+
require_relative "microslop_one_drive/endpoints/supports_sites"
|
|
55
|
+
|
|
56
|
+
# Client
|
|
57
|
+
require_relative "microslop_one_drive/errors/client_error"
|
|
19
58
|
require_relative "microslop_one_drive/client"
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: microslop_one_drive
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 3.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Bradley Marques
|
|
@@ -23,64 +23,8 @@ dependencies:
|
|
|
23
23
|
- - "~>"
|
|
24
24
|
- !ruby/object:Gem::Version
|
|
25
25
|
version: '0.24'
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
requirement: !ruby/object:Gem::Requirement
|
|
29
|
-
requirements:
|
|
30
|
-
- - "~>"
|
|
31
|
-
- !ruby/object:Gem::Version
|
|
32
|
-
version: '5'
|
|
33
|
-
type: :development
|
|
34
|
-
prerelease: false
|
|
35
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
36
|
-
requirements:
|
|
37
|
-
- - "~>"
|
|
38
|
-
- !ruby/object:Gem::Version
|
|
39
|
-
version: '5'
|
|
40
|
-
- !ruby/object:Gem::Dependency
|
|
41
|
-
name: mocha
|
|
42
|
-
requirement: !ruby/object:Gem::Requirement
|
|
43
|
-
requirements:
|
|
44
|
-
- - "~>"
|
|
45
|
-
- !ruby/object:Gem::Version
|
|
46
|
-
version: '2'
|
|
47
|
-
type: :development
|
|
48
|
-
prerelease: false
|
|
49
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
-
requirements:
|
|
51
|
-
- - "~>"
|
|
52
|
-
- !ruby/object:Gem::Version
|
|
53
|
-
version: '2'
|
|
54
|
-
- !ruby/object:Gem::Dependency
|
|
55
|
-
name: rake
|
|
56
|
-
requirement: !ruby/object:Gem::Requirement
|
|
57
|
-
requirements:
|
|
58
|
-
- - "~>"
|
|
59
|
-
- !ruby/object:Gem::Version
|
|
60
|
-
version: '13'
|
|
61
|
-
type: :development
|
|
62
|
-
prerelease: false
|
|
63
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
64
|
-
requirements:
|
|
65
|
-
- - "~>"
|
|
66
|
-
- !ruby/object:Gem::Version
|
|
67
|
-
version: '13'
|
|
68
|
-
- !ruby/object:Gem::Dependency
|
|
69
|
-
name: rubocop
|
|
70
|
-
requirement: !ruby/object:Gem::Requirement
|
|
71
|
-
requirements:
|
|
72
|
-
- - "~>"
|
|
73
|
-
- !ruby/object:Gem::Version
|
|
74
|
-
version: '1'
|
|
75
|
-
type: :development
|
|
76
|
-
prerelease: false
|
|
77
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
78
|
-
requirements:
|
|
79
|
-
- - "~>"
|
|
80
|
-
- !ruby/object:Gem::Version
|
|
81
|
-
version: '1'
|
|
82
|
-
description: Lightweight value objects and HTTP client for OneDrive delta sync, item
|
|
83
|
-
metadata, and sharing permissions.
|
|
26
|
+
description: Simple and lightweight Ruby client for Microsoft Graph OneDrive/SharePoint
|
|
27
|
+
API.
|
|
84
28
|
email:
|
|
85
29
|
- ''
|
|
86
30
|
executables: []
|
|
@@ -90,18 +34,43 @@ files:
|
|
|
90
34
|
- README.md
|
|
91
35
|
- lib/microslop_one_drive.rb
|
|
92
36
|
- lib/microslop_one_drive/audience.rb
|
|
93
|
-
- lib/microslop_one_drive/batch_response.rb
|
|
37
|
+
- lib/microslop_one_drive/batch/batch_response.rb
|
|
38
|
+
- lib/microslop_one_drive/batch/response.rb
|
|
94
39
|
- lib/microslop_one_drive/client.rb
|
|
40
|
+
- lib/microslop_one_drive/deserializers/drive_deserializer.rb
|
|
41
|
+
- lib/microslop_one_drive/deserializers/drive_item_deserializer.rb
|
|
42
|
+
- lib/microslop_one_drive/deserializers/parent_reference_deserializer.rb
|
|
43
|
+
- lib/microslop_one_drive/deserializers/quota_deserializer.rb
|
|
44
|
+
- lib/microslop_one_drive/deserializers/shared_with_me_item_deserializer.rb
|
|
45
|
+
- lib/microslop_one_drive/deserializers/user_deserializer.rb
|
|
95
46
|
- lib/microslop_one_drive/drive.rb
|
|
96
47
|
- lib/microslop_one_drive/drive_item.rb
|
|
97
|
-
- lib/microslop_one_drive/
|
|
98
|
-
- lib/microslop_one_drive/
|
|
48
|
+
- lib/microslop_one_drive/endpoints/all_drives.rb
|
|
49
|
+
- lib/microslop_one_drive/endpoints/batch.rb
|
|
50
|
+
- lib/microslop_one_drive/endpoints/batch_permissions.rb
|
|
51
|
+
- lib/microslop_one_drive/endpoints/delta.rb
|
|
52
|
+
- lib/microslop_one_drive/endpoints/drive.rb
|
|
53
|
+
- lib/microslop_one_drive/endpoints/drive_exists.rb
|
|
54
|
+
- lib/microslop_one_drive/endpoints/drive_item.rb
|
|
55
|
+
- lib/microslop_one_drive/endpoints/drive_item_exists.rb
|
|
56
|
+
- lib/microslop_one_drive/endpoints/me.rb
|
|
57
|
+
- lib/microslop_one_drive/endpoints/permissions.rb
|
|
58
|
+
- lib/microslop_one_drive/endpoints/shared_with_me.rb
|
|
59
|
+
- lib/microslop_one_drive/endpoints/supports_sites.rb
|
|
99
60
|
- lib/microslop_one_drive/errors/client_error.rb
|
|
100
|
-
- lib/microslop_one_drive/
|
|
61
|
+
- lib/microslop_one_drive/file.rb
|
|
62
|
+
- lib/microslop_one_drive/folder.rb
|
|
63
|
+
- lib/microslop_one_drive/list_responses/drive_item_list.rb
|
|
64
|
+
- lib/microslop_one_drive/list_responses/drive_list.rb
|
|
65
|
+
- lib/microslop_one_drive/list_responses/list_response.rb
|
|
66
|
+
- lib/microslop_one_drive/list_responses/permission_list.rb
|
|
67
|
+
- lib/microslop_one_drive/list_responses/shared_with_me_list.rb
|
|
68
|
+
- lib/microslop_one_drive/parent_reference.rb
|
|
101
69
|
- lib/microslop_one_drive/permission.rb
|
|
102
|
-
- lib/microslop_one_drive/permission_list.rb
|
|
103
70
|
- lib/microslop_one_drive/permission_set.rb
|
|
104
|
-
- lib/microslop_one_drive/
|
|
71
|
+
- lib/microslop_one_drive/quota.rb
|
|
72
|
+
- lib/microslop_one_drive/root_folder.rb
|
|
73
|
+
- lib/microslop_one_drive/shared_with_me_item.rb
|
|
105
74
|
- lib/microslop_one_drive/user.rb
|
|
106
75
|
- lib/microslop_one_drive/utils.rb
|
|
107
76
|
- lib/microslop_one_drive/version.rb
|
|
@@ -111,6 +80,7 @@ licenses:
|
|
|
111
80
|
metadata:
|
|
112
81
|
homepage_uri: https://github.com/bradleymarques/microslop_one_drive
|
|
113
82
|
source_code_uri: https://github.com/bradleymarques/microslop_one_drive
|
|
83
|
+
rubygems_mfa_required: 'true'
|
|
114
84
|
rdoc_options: []
|
|
115
85
|
require_paths:
|
|
116
86
|
- lib
|
|
@@ -127,6 +97,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
127
97
|
requirements: []
|
|
128
98
|
rubygems_version: 3.7.2
|
|
129
99
|
specification_version: 4
|
|
130
|
-
summary: Ruby client
|
|
131
|
-
|
|
100
|
+
summary: Simple and lightweight Ruby client for Microsoft Graph OneDrive/SharePoint
|
|
101
|
+
API.
|
|
132
102
|
test_files: []
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
module MicroslopOneDrive
|
|
2
|
-
class DriveItemList < ListResponse
|
|
3
|
-
attr_reader :items
|
|
4
|
-
|
|
5
|
-
def initialize(parsed_response)
|
|
6
|
-
super(parsed_response)
|
|
7
|
-
|
|
8
|
-
@parsed_response = parsed_response
|
|
9
|
-
@items = build_items
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
private
|
|
13
|
-
|
|
14
|
-
def build_items
|
|
15
|
-
items = @parsed_response.fetch("value", []).map do
|
|
16
|
-
MicroslopOneDrive::DriveItem.new(it)
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
set_parent_and_child_relationships(items)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def set_parent_and_child_relationships(items)
|
|
23
|
-
items.each do |item|
|
|
24
|
-
next if item.parent_id.nil?
|
|
25
|
-
parent = items.find { it.id == item.parent_id }
|
|
26
|
-
next if parent.nil?
|
|
27
|
-
|
|
28
|
-
item.set_parent(parent)
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
module MicroslopOneDrive
|
|
2
|
-
class ListResponse
|
|
3
|
-
attr_reader :next_link, :next_token, :delta_link, :delta_token, :context
|
|
4
|
-
|
|
5
|
-
def initialize(response_hash)
|
|
6
|
-
@response_hash = response_hash
|
|
7
|
-
|
|
8
|
-
@context = response_hash.fetch("@odata.context", nil)
|
|
9
|
-
|
|
10
|
-
@next_link = response_hash.fetch("@odata.nextLink", nil)
|
|
11
|
-
@next_token = @next_link.split("?token=").last if @next_link && !@next_link.empty?
|
|
12
|
-
|
|
13
|
-
@delta_link = response_hash.fetch("@odata.deltaLink", nil)
|
|
14
|
-
@delta_token = @delta_link.split("?token=").last if @delta_link && !@delta_link.empty?
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def next_page?
|
|
18
|
-
!next_link.nil?
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
module MicroslopOneDrive
|
|
2
|
-
class PermissionList < ListResponse
|
|
3
|
-
attr_reader :permissions
|
|
4
|
-
|
|
5
|
-
def initialize(drive_item_id:, parsed_response: )
|
|
6
|
-
super(parsed_response)
|
|
7
|
-
|
|
8
|
-
@drive_item_id = drive_item_id
|
|
9
|
-
@parsed_response = parsed_response
|
|
10
|
-
@permissions = build_permissions(@drive_item_id, @parsed_response)
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
private
|
|
14
|
-
|
|
15
|
-
def build_permissions(drive_item_id, parsed_response)
|
|
16
|
-
value_list = parsed_response.is_a?(Array) ? parsed_response : parsed_response.fetch("value", [])
|
|
17
|
-
|
|
18
|
-
permission_sets = value_list.map do
|
|
19
|
-
MicroslopOneDrive::PermissionSet.new(drive_item_id: drive_item_id, parsed_response: it)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
# At this stage, the permissions could contain multiple Audiences for the same Permission.
|
|
23
|
-
# This is because OneDrive can return multiple permissions for the same thing.
|
|
24
|
-
# For example, a file shared with one person and a public link will return in a single permission object.
|
|
25
|
-
# We therefore need to "explode" the permission sets into multiple permissions, one for each Audience.
|
|
26
|
-
permission_sets.flat_map(&:to_permissions)
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
module MicroslopOneDrive
|
|
2
|
-
class Response
|
|
3
|
-
attr_reader :id, :status, :headers, :body
|
|
4
|
-
|
|
5
|
-
def initialize(response_hash)
|
|
6
|
-
@id = response_hash.fetch("id")
|
|
7
|
-
@status = response_hash.fetch("status")
|
|
8
|
-
@headers = response_hash.fetch("headers")
|
|
9
|
-
@body = response_hash.fetch("body")
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def success?
|
|
13
|
-
@status.between?(200, 299)
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|