skydrive 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -16,9 +16,54 @@ Or install it yourself as:
16
16
 
17
17
  $ gem install skydrive
18
18
 
19
+ ## Initial steps
20
+
21
+ ### OAuth2 Authentication
22
+
23
+ Skydrive uses OAuth2 authentication. First you will have to initialize a Skydrive::Oauth::Client object with the client id, client secret, callback url and scopes [(explained here)](http://msdn.microsoft.com/en-us/library/live/hh243646.aspx)
24
+
25
+ oauth_client = Skydrive::Oauth::Client.new("your_client_id", "your_client_secret", "http://yourcallbackurl", "wl.skydrive_update,wl.offline_access")
26
+
27
+ Obtain the authentication url
28
+
29
+ auth_url = oauth_client.authorize_url
30
+
31
+ Redirect the user to the above obtained auth_url. After user gives access to your app, they will be redirected to the callback url with a 'code' parameter. Extract this code and get the access token by invoking the following method
32
+
33
+ access_token = oauth_client.get_access_token("the_extracted_code")
34
+
35
+ If you have already stored the access_token details somewhere, you can instantiate the access token without having to authorize again. But this might require you to store the refresh token(if scope 'wl.offline_access' has been requested) as well.
36
+
37
+ access_token = oauth_client..get_access_token_from_hash("access_token", {:refresh_token => "refresh_token", :expires_at => 1234567})
38
+
39
+
40
+ ### Instantiate a client
41
+
42
+ After getting the access token instantiate the Skydrive client
43
+
44
+ client = Skydrive::Client.new(:access_token => access_token)
45
+
19
46
  ## Usage
20
47
 
21
- TODO: Write usage instructions here
48
+ ### Get the user's home folder
49
+
50
+ To get the details about the acting user's home folder
51
+ folder = client.my_skydrive
52
+
53
+ This returns a Skydrive::Folder object.
54
+
55
+ Please refer to the documentation for full details about the operations
56
+
57
+ ## Features
58
+
59
+ 1. Every thing is an object. For eg: Skydrive::Folder, Skydrive::File
60
+ 2. I have introduced a new object Skydrive::Collection when the result contains multiple type objects
61
+ 3. Downloading files have been enabled
62
+
63
+ ## Todo
64
+
65
+ 1. File upload
66
+ 2. More specs
22
67
 
23
68
  ## Contributing
24
69
 
@@ -7,9 +7,15 @@ module Skydrive
7
7
  object["message"]
8
8
  end
9
9
 
10
+ # Always return 'comment'
11
+ # @return [String]
10
12
  def type
11
13
  "comment"
12
14
  end
13
15
 
16
+ # Delete the comment
17
+ def delete
18
+ client.delete("/#{id}")
19
+ end
14
20
  end
15
21
  end
@@ -1,7 +1,7 @@
1
1
  module Skydrive
2
2
  # The folder object
3
3
  class Folder < Skydrive::Object
4
-
4
+
5
5
  # Items in the folder
6
6
  # @param [Hash] options Additional parameters
7
7
  # @option options [Integer] :limit the maximum number of results to return
@@ -96,5 +96,17 @@ module Skydrive
96
96
  object["is_embeddable"]
97
97
  end
98
98
 
99
+ # Comments associated with the object
100
+ # @return [Skydrive::Collection]
101
+ def comments
102
+ client.get("/#{id}/comments")
103
+ end
104
+
105
+ # Make a comment about the object
106
+ # @params [Hash] options
107
+ # @option options [String] :message The comment
108
+ def comment options={}
109
+ client.post("/#{id}/comments", options)
110
+ end
99
111
  end
100
112
  end
@@ -120,6 +120,7 @@ module Skydrive
120
120
  response = put("/#{object_id}", options)
121
121
  end
122
122
 
123
+
123
124
  alias :update_folder :update_skydrive_object
124
125
  alias :update_album :update_skydrive_object
125
126
  alias :update_file :update_skydrive_object
@@ -152,5 +153,26 @@ module Skydrive
152
153
  response = post("/me/albums", options)
153
154
  end
154
155
 
156
+ # Get comments associated with an object
157
+ # @param [String] object_id The ID of the object
158
+ # @return [Skydrive::Collection]
159
+ def object_comments object_id
160
+ response = get("/#{object_id}/comments")
161
+ end
162
+
163
+ # Delete a comment
164
+ # @param [String] comment_id TD od the comment
165
+ def delete_comment comment_id
166
+ response = delete("/#{comment_id}")
167
+ end
168
+
169
+ # Comment about an object
170
+ # @param [String] object_id ID of the object
171
+ # @param [Hash] options
172
+ # @options options [String] :message The comment message
173
+ def create_comment object_id, options={}
174
+ response = post("/#{object_id}/comments", options)
175
+ end
176
+
155
177
  end
156
178
  end
@@ -0,0 +1,17 @@
1
+ module Skydrive
2
+ # Contains info about tags that are associated with a photo or a video on SkyDrive
3
+ class Tag < Skydrive::Object
4
+
5
+ # The center of the tag's horizontal position, measured as a floating-point percentage from 0 to 100, from the left edge of the photo
6
+ # @return [Integer]
7
+ def x
8
+ object["x"]
9
+ end
10
+
11
+ # The center of the tag's vertical position, measured as a floating-point percentage from 0 to 100, from the top edge of the photo
12
+ def y
13
+ object["y"]
14
+ end
15
+
16
+ end
17
+ end
@@ -1,5 +1,5 @@
1
1
  # Skydrive base module
2
2
  module Skydrive
3
3
  # The gem version
4
- VERSION = "0.0.2"
4
+ VERSION = "0.1.0"
5
5
  end
@@ -7,7 +7,7 @@ describe Skydrive::Oauth::Client do
7
7
  @uri = URI.parse(subject.authorize_url)
8
8
  @uri_params = CGI.parse(@uri.query)
9
9
  end
10
-
10
+
11
11
  it "should have the correct request token path" do
12
12
  @uri.path.should == "/oauth20_authorize.srf"
13
13
  end
@@ -31,15 +31,15 @@ describe Skydrive::Oauth::Client do
31
31
  "code" => "code",
32
32
  "grant_type" => "authorization_code",
33
33
  "redirect_uri" => "http://callback_demo"
34
- },
34
+ },
35
35
  :headers => {
36
36
  'Accept' => '*/*',
37
37
  'Content-Type' => 'application/x-www-form-urlencoded',
38
- 'User-Agent' => 'Ruby'
38
+ 'User-Agent' => 'Faraday v0.8.7'
39
39
  }
40
40
  ).to_return(
41
41
  :status => 200, :body => {
42
- "token_type" => "bearer",
42
+ "token_type" => "bearer",
43
43
  "expires_in" => 3600,
44
44
  "scope" => "wl.skydrive_update,wl.offline_access",
45
45
  "access_token" => "access_token",
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: skydrive
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-02 00:00:00.000000000 Z
12
+ date: 2013-05-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httparty
@@ -311,6 +311,7 @@ files:
311
311
  - lib/skydrive/object.rb
312
312
  - lib/skydrive/operations.rb
313
313
  - lib/skydrive/photo.rb
314
+ - lib/skydrive/tag.rb
314
315
  - lib/skydrive/user.rb
315
316
  - lib/skydrive/version.rb
316
317
  - lib/skydrive/video.rb