microslop_one_drive 2.2.0 → 3.0.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 +67 -7
- 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 +98 -42
- 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/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 +33 -8
- metadata +25 -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
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.0.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,31 @@ 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/drive_item_list.rb
|
|
98
|
-
- lib/microslop_one_drive/drive_list.rb
|
|
99
48
|
- lib/microslop_one_drive/errors/client_error.rb
|
|
100
|
-
- lib/microslop_one_drive/
|
|
49
|
+
- lib/microslop_one_drive/file.rb
|
|
50
|
+
- lib/microslop_one_drive/folder.rb
|
|
51
|
+
- lib/microslop_one_drive/list_responses/drive_item_list.rb
|
|
52
|
+
- lib/microslop_one_drive/list_responses/drive_list.rb
|
|
53
|
+
- lib/microslop_one_drive/list_responses/list_response.rb
|
|
54
|
+
- lib/microslop_one_drive/list_responses/permission_list.rb
|
|
55
|
+
- lib/microslop_one_drive/list_responses/shared_with_me_list.rb
|
|
56
|
+
- lib/microslop_one_drive/parent_reference.rb
|
|
101
57
|
- lib/microslop_one_drive/permission.rb
|
|
102
|
-
- lib/microslop_one_drive/permission_list.rb
|
|
103
58
|
- lib/microslop_one_drive/permission_set.rb
|
|
104
|
-
- lib/microslop_one_drive/
|
|
59
|
+
- lib/microslop_one_drive/quota.rb
|
|
60
|
+
- lib/microslop_one_drive/root_folder.rb
|
|
61
|
+
- lib/microslop_one_drive/shared_with_me_item.rb
|
|
105
62
|
- lib/microslop_one_drive/user.rb
|
|
106
63
|
- lib/microslop_one_drive/utils.rb
|
|
107
64
|
- lib/microslop_one_drive/version.rb
|
|
@@ -111,6 +68,7 @@ licenses:
|
|
|
111
68
|
metadata:
|
|
112
69
|
homepage_uri: https://github.com/bradleymarques/microslop_one_drive
|
|
113
70
|
source_code_uri: https://github.com/bradleymarques/microslop_one_drive
|
|
71
|
+
rubygems_mfa_required: 'true'
|
|
114
72
|
rdoc_options: []
|
|
115
73
|
require_paths:
|
|
116
74
|
- lib
|
|
@@ -127,6 +85,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
127
85
|
requirements: []
|
|
128
86
|
rubygems_version: 3.7.2
|
|
129
87
|
specification_version: 4
|
|
130
|
-
summary: Ruby client
|
|
131
|
-
|
|
88
|
+
summary: Simple and lightweight Ruby client for Microsoft Graph OneDrive/SharePoint
|
|
89
|
+
API.
|
|
132
90
|
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
|