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.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +67 -7
  3. data/lib/microslop_one_drive/batch/batch_response.rb +15 -0
  4. data/lib/microslop_one_drive/batch/response.rb +18 -0
  5. data/lib/microslop_one_drive/client.rb +98 -42
  6. data/lib/microslop_one_drive/deserializers/drive_deserializer.rb +57 -0
  7. data/lib/microslop_one_drive/deserializers/drive_item_deserializer.rb +67 -0
  8. data/lib/microslop_one_drive/deserializers/parent_reference_deserializer.rb +20 -0
  9. data/lib/microslop_one_drive/deserializers/quota_deserializer.rb +24 -0
  10. data/lib/microslop_one_drive/deserializers/shared_with_me_item_deserializer.rb +48 -0
  11. data/lib/microslop_one_drive/deserializers/user_deserializer.rb +29 -0
  12. data/lib/microslop_one_drive/drive.rb +40 -10
  13. data/lib/microslop_one_drive/drive_item.rb +61 -63
  14. data/lib/microslop_one_drive/file.rb +13 -0
  15. data/lib/microslop_one_drive/folder.rb +13 -0
  16. data/lib/microslop_one_drive/list_responses/drive_item_list.rb +21 -0
  17. data/lib/microslop_one_drive/list_responses/drive_list.rb +15 -0
  18. data/lib/microslop_one_drive/list_responses/list_response.rb +21 -0
  19. data/lib/microslop_one_drive/list_responses/permission_list.rb +27 -0
  20. data/lib/microslop_one_drive/list_responses/shared_with_me_list.rb +15 -0
  21. data/lib/microslop_one_drive/parent_reference.rb +14 -0
  22. data/lib/microslop_one_drive/permission_set.rb +13 -15
  23. data/lib/microslop_one_drive/quota.rb +14 -0
  24. data/lib/microslop_one_drive/root_folder.rb +13 -0
  25. data/lib/microslop_one_drive/shared_with_me_item.rb +44 -0
  26. data/lib/microslop_one_drive/user.rb +33 -5
  27. data/lib/microslop_one_drive/utils.rb +10 -0
  28. data/lib/microslop_one_drive/version.rb +1 -1
  29. data/lib/microslop_one_drive.rb +33 -8
  30. metadata +25 -67
  31. data/lib/microslop_one_drive/batch_response.rb +0 -13
  32. data/lib/microslop_one_drive/drive_item_list.rb +0 -32
  33. data/lib/microslop_one_drive/drive_list.rb +0 -13
  34. data/lib/microslop_one_drive/list_response.rb +0 -21
  35. data/lib/microslop_one_drive/permission_list.rb +0 -29
  36. 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: 2.2.0
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
- - !ruby/object:Gem::Dependency
27
- name: minitest
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/list_response.rb
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/response.rb
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 helpers for Microsoft Graph OneDrive/SharePoint API (drive items,
131
- delta, permissions).
88
+ summary: Simple and lightweight Ruby client for Microsoft Graph OneDrive/SharePoint
89
+ API.
132
90
  test_files: []
@@ -1,13 +0,0 @@
1
- module MicroslopOneDrive
2
- class BatchResponse
3
- attr_reader :responses
4
-
5
- def initialize
6
- @responses = []
7
- end
8
-
9
- def add_response(response)
10
- @responses << response
11
- end
12
- end
13
- end
@@ -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,13 +0,0 @@
1
- module MicroslopOneDrive
2
- class DriveList < ListResponse
3
- attr_reader :drives
4
-
5
- def initialize(response_hash)
6
- super(response_hash)
7
-
8
- @drives = response_hash.fetch("value", []).map do
9
- MicroslopOneDrive::Drive.new(it)
10
- end
11
- end
12
- end
13
- 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