one_drive 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +39 -3
- data/lib/one_drive.rb +141 -4
- data/lib/one_drive/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bfde019139370bb07e616302ea584b75d42aa336
|
4
|
+
data.tar.gz: d265a39c310a3d5849ec2a9b5ae5571f4953f461
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b4d2c291f46763c5b6420886f3898c969143dd3469c94ec15692b238082facbd979000078de1ac994c0ffd434407fda89e1b0279f1efa7aa5781c49b496dc1c3
|
7
|
+
data.tar.gz: ec1d0e9ef5d319345a158235814ec9d3972e0d1b90b13baa30ba867538c9c36769bba76f28218a5092ec41e15a13865699d716a78d227caab9fd3613e5bbf6d9
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
# OneDrive
|
2
2
|
|
3
|
-
Welcome to your new gem
|
3
|
+
Welcome to your new gem one_drive!
|
4
|
+
You can use this gem to list your Microsoft OneDrive drives and read and write them.
|
5
|
+
To experiment with that code, run `bin/console` for an interactive prompt.
|
4
6
|
|
5
|
-
TODO: Delete this and the text above, and describe your gem
|
6
7
|
|
7
8
|
## Installation
|
8
9
|
|
@@ -22,7 +23,42 @@ Or install it yourself as:
|
|
22
23
|
|
23
24
|
## Usage
|
24
25
|
|
25
|
-
|
26
|
+
1. Initialize
|
27
|
+
|
28
|
+
` @one_drive = OneDrive::V1.new(client_id, redirect_uri, scope) `
|
29
|
+
|
30
|
+
2. Generate code url to get refresh_token
|
31
|
+
|
32
|
+
` @one_drive.code_url `
|
33
|
+
|
34
|
+
Or Directly generate token url
|
35
|
+
|
36
|
+
` @one_drive.token_url `
|
37
|
+
|
38
|
+
Visit the url to generate the token
|
39
|
+
|
40
|
+
3. Set your token which you get on visiting the above url
|
41
|
+
|
42
|
+
` @one_drive.set_token token `
|
43
|
+
Note: only token is required you can leave expires_in and token_type as blank for expires_in=3600 and token_type='bearer'
|
44
|
+
|
45
|
+
4. List out all your drives
|
46
|
+
|
47
|
+
` @drives = @one_drive.get_drives `
|
48
|
+
|
49
|
+
After calling the last function you can fetch last drive list which you fetched by calling
|
50
|
+
|
51
|
+
` @one_drive.drives `
|
52
|
+
5. Search
|
53
|
+
|
54
|
+
6. Download Item
|
55
|
+
|
56
|
+
7. Recent Drive
|
57
|
+
|
58
|
+
8. Special Folder
|
59
|
+
|
60
|
+
9. My Drive
|
61
|
+
|
26
62
|
|
27
63
|
## Development
|
28
64
|
|
data/lib/one_drive.rb
CHANGED
@@ -1,13 +1,26 @@
|
|
1
1
|
require "one_drive/version"
|
2
2
|
require "httparty"
|
3
3
|
module OneDrive
|
4
|
+
class OneDriveExceptions < StandardError
|
5
|
+
attr_reader :detail
|
6
|
+
def initialize(message="OneDriveExceptions", detail="")
|
7
|
+
@detail = detail
|
8
|
+
super(message)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
4
12
|
class V1
|
5
|
-
attr_accessor :client_id,:scope,:redirect_uri,:code,:token,:drives,:items,:current_drive
|
13
|
+
attr_accessor :client_id,:scope,:redirect_uri,:code,:token,:drives,:items,:current_drive,
|
14
|
+
:current_item,:expires_in,:token_type,:my_drive,:recent_drive,:special_drive,:special_items,
|
15
|
+
:item
|
6
16
|
def initialize(client_id,redirect_uri,scope='files.read')
|
7
17
|
@client_id = client_id
|
8
18
|
@scope = scope
|
9
19
|
@redirect_uri = redirect_uri
|
10
20
|
end
|
21
|
+
def base_api_url
|
22
|
+
"https://graph.microsoft.com/v1.0"
|
23
|
+
end
|
11
24
|
def token_url
|
12
25
|
# OAuth URI token
|
13
26
|
# GET https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id={client_id}&scope={scope}
|
@@ -27,6 +40,47 @@ module OneDrive
|
|
27
40
|
# client_id={client_id}&redirect_uri={redirect_uri}&client_secret={client_secret}
|
28
41
|
# &refresh_token={refresh_token}&grant_type=refresh_token
|
29
42
|
end
|
43
|
+
# Get a drive by ID
|
44
|
+
def get_drive drive_id
|
45
|
+
url = base_api_url + "/drives/#{drive_id}"
|
46
|
+
@drives = JSON.parse(HTTParty.get(url,headers: set_headers).body)
|
47
|
+
end
|
48
|
+
# Get a user's OneDrive
|
49
|
+
def get_users_drive id_or_user_principal_name
|
50
|
+
url = base_api_url + "/users/#{id_or_user_principal_name}/drive"
|
51
|
+
@drives = JSON.parse(HTTParty.get(url,headers: set_headers).body)
|
52
|
+
end
|
53
|
+
# Get a current user's OneDrive
|
54
|
+
def get_my_drive
|
55
|
+
url = base_api_url + "/me/drive"
|
56
|
+
@my_drive = JSON.parse(HTTParty.get(url,headers: set_headers).body)
|
57
|
+
end
|
58
|
+
# Get the document library for a site
|
59
|
+
def get_library_for_site site_id
|
60
|
+
url = base_api_url + "/sites/#{site_id}/drive"
|
61
|
+
@drives = JSON.parse(HTTParty.get(url,headers: set_headers).body)
|
62
|
+
end
|
63
|
+
# Get a special folder by name
|
64
|
+
def get_special_folder_by_name name
|
65
|
+
url = base_api_url + "/me/drive/special/#{name}"
|
66
|
+
@special_drive = JSON.parse(HTTParty.get(url,headers: set_headers).body)
|
67
|
+
end
|
68
|
+
# Get children of a special folder
|
69
|
+
def get_children_of_special_folder name
|
70
|
+
url = base_api_url + "/me/drive/special/#{name}/children"
|
71
|
+
@special_items = JSON.parse(HTTParty.get(url,headers: set_headers).body)
|
72
|
+
end
|
73
|
+
# List items shared with the signed-in user
|
74
|
+
def items_shared_with_me
|
75
|
+
url = base_api_url + "/me/drive/sharedWithMe"
|
76
|
+
@shared_items = JSON.parse(HTTParty.get(url,headers: set_headers).body)
|
77
|
+
end
|
78
|
+
# GET /drives/{remoteItem-driveId}/items/{remoteItem-id}
|
79
|
+
|
80
|
+
def recent
|
81
|
+
url = base_api_url + '/me/drive/recent'
|
82
|
+
@recent_drive = JSON.parse(HTTParty.get(url,headers: set_headers).body)
|
83
|
+
end
|
30
84
|
def get_drives type = nil,id=nil
|
31
85
|
# GET /me/drives
|
32
86
|
# GET /users/{userId}/drives
|
@@ -54,7 +108,8 @@ module OneDrive
|
|
54
108
|
def set_code code
|
55
109
|
@code = code
|
56
110
|
end
|
57
|
-
def get_item
|
111
|
+
def get_item options={}
|
112
|
+
url = "https://graph.microsoft.com/v1.0"
|
58
113
|
# Get item
|
59
114
|
# GET /drives/{drive-id}/items/{item-id}
|
60
115
|
# GET /drives/{drive-id}/root:/{item-path}
|
@@ -66,8 +121,46 @@ module OneDrive
|
|
66
121
|
# GET /sites/{siteId}/drive/root:/{item-path}
|
67
122
|
# GET /users/{userId}/drive/items/{itemId}
|
68
123
|
# GET /users/{userId}/drive/root:/{item-path}
|
124
|
+
if options.include? :drive_id
|
125
|
+
url = "/drives/#{options[:drive_id]}/"
|
126
|
+
elsif options.include? :group_id
|
127
|
+
url = "/groups/#{options[:group_id]}/"
|
128
|
+
elsif options.include? :site_id
|
129
|
+
url = "/sites/#{options[:site_id]}/"
|
130
|
+
elsif options.include? :user_id
|
131
|
+
url = "/users/#{options[:user_id]}/"
|
132
|
+
else
|
133
|
+
url = "/me/drive/"
|
134
|
+
end
|
135
|
+
if options.include? :item_id
|
136
|
+
url = url + "items/#{options[:item_id]}"
|
137
|
+
elsif options.include? :item_path
|
138
|
+
url = url + "root:/#{options[:item_path]}"
|
139
|
+
else
|
140
|
+
return "OneDrive URL is not valid"
|
141
|
+
end
|
142
|
+
@items = JSON.parse(HTTParty.get(url,headers: set_headers).body)
|
143
|
+
end
|
144
|
+
def search options ={}
|
145
|
+
if options.include? :drive_id
|
146
|
+
# GET /drives/{drive-id}/root/search(q='{search-text}')
|
147
|
+
url = base_api_url + "/drives/#{options[:drive_id]}/root/search(q='#{options[:search_text]}')"
|
148
|
+
elsif options.include? :group_id
|
149
|
+
# GET /groups/{group-id}/drive/root/search(q='{search-text}')
|
150
|
+
url = base_api_url + "/groups/#{options[:group_id]}/drive/root/search(q='#{options[:search_text]}')"
|
151
|
+
elsif options.include? :site_id
|
152
|
+
# GET /sites/{site-id}/drive/root/search(q='{search-text}')
|
153
|
+
url = base_api_url + "/sites/#{options[:site_id]}/drive/root/search(q='#{options[:search_text]}')"
|
154
|
+
elsif options.include? :user_id
|
155
|
+
# GET /users/{user-id}/drive/root/search(q='{search-text}')
|
156
|
+
url = base_api_url + "/users/#{options[:user_id]}/drive/root/search(q='#{options[:search_text]}')"
|
157
|
+
else
|
158
|
+
# GET /me/drive/root/search(q='{search-text}')
|
159
|
+
url = base_api_url + "/me/drive/root/search(q='#{options[:search_text]}')"
|
160
|
+
end
|
161
|
+
@items = JSON.parse(HTTParty.get(url,headers: set_headers).body)
|
69
162
|
end
|
70
|
-
def download
|
163
|
+
def download options ={}
|
71
164
|
# Download
|
72
165
|
# GET /drives/{drive-id}/items/{item-id}/content
|
73
166
|
# GET /groups/{group-id}/drive/items/{item-id}/content
|
@@ -77,17 +170,61 @@ module OneDrive
|
|
77
170
|
# GET /users/{userId}/drive/items/{item-id}/content
|
78
171
|
# GET /drive/items/{item-id}/content?format={format}
|
79
172
|
# GET /drive/root:/{path and filename}:/content?format={format}
|
173
|
+
url = "https://graph.microsoft.com/v1.0"
|
174
|
+
if options.include? :drive_id
|
175
|
+
url = url + "/drives/#{options[:drive_id]}/"
|
176
|
+
elsif options.include? :group_id
|
177
|
+
url = url + "/groups/#{options[:group_id]}/drive/"
|
178
|
+
elsif options.include? :site_id
|
179
|
+
url = url + "/sites/#{options[:site_id]}/drive/"
|
180
|
+
elsif options.include? :user_id
|
181
|
+
url = url + "/users/#{options[:user_id]}/drive/"
|
182
|
+
else
|
183
|
+
url = url + "/me/drive/"
|
184
|
+
end
|
185
|
+
if options.include? :item_id
|
186
|
+
url = url + "items/#{options[:item_id]}/content"
|
187
|
+
elsif options.include? :item_path
|
188
|
+
url = url + "root:/#{options[:item_path]}:/content"
|
189
|
+
else
|
190
|
+
return "OneDrive URL : Item id is not valid"
|
191
|
+
end
|
192
|
+
if options.include? :format
|
193
|
+
url = url + "?format=#{options[:format]}"
|
194
|
+
end
|
195
|
+
@item = (HTTParty.get(url,headers: set_headers).body)
|
80
196
|
end
|
81
|
-
def get_list
|
197
|
+
def get_list options={}
|
198
|
+
url = "https://graph.microsoft.com/v1.0"
|
199
|
+
p '------------------------'
|
82
200
|
# Find Children
|
83
201
|
# GET /drives/{drive-id}/items/{item-id}/children
|
84
202
|
# GET /groups/{group-id}/drive/items/{item-id}/children
|
85
203
|
# GET /me/drive/items/{item-id}/children
|
86
204
|
# GET /sites/{site-id}/drive/items/{item-id}/children
|
87
205
|
# GET /users/{user-id}/drive/items/{item-id}/children
|
206
|
+
if options.include? :drive_id
|
207
|
+
url = url + "/drives/#{options[:drive_id]}/"
|
208
|
+
elsif options.include? :group_id
|
209
|
+
url = url + "/groups/#{options[:group_id]}/"
|
210
|
+
elsif options.include? :site_id
|
211
|
+
url = url + "/sites/#{options[:site_id]}/"
|
212
|
+
elsif options.include? :user_id
|
213
|
+
url = url + "/users/#{options[:user_id]}/"
|
214
|
+
else
|
215
|
+
url = url + "/me/drive/"
|
216
|
+
end
|
217
|
+
if options.include? :item_id
|
218
|
+
url = url + "items/#{options[:item_id]}/children"
|
219
|
+
else
|
220
|
+
return "OneDrive URL : Item id is not valid"
|
221
|
+
end
|
222
|
+
p url
|
223
|
+
@items = JSON.parse(HTTParty.get(url,headers: set_headers).body)
|
88
224
|
end
|
89
225
|
def set_headers
|
90
226
|
{"Content-Type"=> 'application/json',"Authorization"=>"bearer #{@token}"}
|
91
227
|
end
|
228
|
+
|
92
229
|
end
|
93
230
|
end
|
data/lib/one_drive/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: one_drive
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mohit
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-06-
|
11
|
+
date: 2018-06-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|