cloudapp_api 0.1.1 → 0.2.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.
- data/README.md +85 -45
- data/VERSION +1 -1
- data/cloudapp_api.gemspec +21 -11
- data/lib/cloudapp/account.rb +65 -31
- data/lib/cloudapp/base.rb +3 -3
- data/lib/cloudapp/client.rb +85 -47
- data/lib/cloudapp/core_ext.rb +16 -0
- data/lib/cloudapp/drop.rb +197 -0
- data/lib/cloudapp/gift_card.rb +64 -0
- data/lib/cloudapp_api.rb +5 -5
- data/spec/cloudapp_account_spec.rb +27 -2
- data/spec/cloudapp_client_spec.rb +55 -28
- data/spec/cloudapp_drop_spec.rb +258 -0
- data/spec/cloudapp_gift_card_spec.rb +67 -0
- data/spec/cloudapp_item_spec.rb +73 -7
- data/spec/fakeweb_helper.rb +15 -10
- data/spec/stubs/account/stats +8 -0
- data/spec/stubs/{item → drop}/create +0 -0
- data/spec/stubs/{item → drop}/delete +0 -0
- data/spec/stubs/{item → drop}/index +0 -0
- data/spec/stubs/{item → drop}/new +3 -1
- data/spec/stubs/drop/new-private +17 -0
- data/spec/stubs/{item → drop}/show +0 -0
- data/spec/stubs/drop/show-private +19 -0
- data/spec/stubs/{item → drop}/update +0 -0
- data/spec/stubs/gift_card/redeem +16 -0
- data/spec/stubs/gift_card/show +16 -0
- metadata +64 -55
- data/lib/cloudapp/item.rb +0 -154
data/README.md
CHANGED
@@ -18,73 +18,97 @@ Authentication is necessary for most actions, the only exceptions being when cre
|
|
18
18
|
|
19
19
|
CloudApp.authenticate "email@address.com", "password"
|
20
20
|
|
21
|
-
##
|
21
|
+
## Drops
|
22
22
|
|
23
|
-
* Documentation - {CloudApp::
|
23
|
+
* Documentation - {CloudApp::Drop}
|
24
24
|
|
25
25
|
---
|
26
26
|
|
27
|
-
### Usage via the
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
27
|
+
### Usage via the Drop class
|
28
|
+
|
29
|
+
# Find a single drop by it's slug
|
30
|
+
@drop = CloudApp::Drop.find "2wr4"
|
31
|
+
|
32
|
+
# Get a list of all drops
|
33
|
+
@drops = CloudApp::Drop.all
|
34
|
+
|
34
35
|
# Create a new bookmark
|
35
|
-
|
36
|
-
|
36
|
+
@drop = CloudApp::Drop.create :bookmark, :name => "CloudApp", :redirect_url => "http://getcloudapp.com"
|
37
|
+
|
38
|
+
# Create multiple bookmarks
|
39
|
+
bookmarks = [
|
40
|
+
{ :name => "Authur Dent", :redirect_url => "http://en.wikipedia.org/wiki/Arthur_Dent" },
|
41
|
+
{ :name => "Zaphod Beeblebrox", :redirect_url => "http://en.wikipedia.org/wiki/Zaphod_Beeblebrox" }
|
42
|
+
]
|
43
|
+
@drops = CloudApp::Drop.create :bookmarks, bookmarks
|
44
|
+
|
37
45
|
# Upload a file
|
38
|
-
|
39
|
-
|
46
|
+
@drop = CloudApp::Drop.create :upload, :file => "/path/to/image.png"
|
47
|
+
@drop = CloudApp::Drop.create :upload, :file => "/path/to/image.png", :private => true
|
48
|
+
|
40
49
|
# Rename a file
|
41
|
-
CloudApp::
|
42
|
-
|
43
|
-
# Set
|
44
|
-
CloudApp::
|
45
|
-
|
46
|
-
# Delete
|
47
|
-
CloudApp::
|
48
|
-
|
49
|
-
|
50
|
+
CloudApp::Drop.update "http://my.cl.ly/items/1912565", :name => "Big Screenshot"
|
51
|
+
|
52
|
+
# Set a drop's privacy
|
53
|
+
CloudApp::Drop.update "http://my.cl.ly/items/1912565", :private => true
|
54
|
+
|
55
|
+
# Delete a drop
|
56
|
+
CloudApp::Drop.delete "http://my.cl.ly/items/1912565"
|
57
|
+
|
58
|
+
# Recover a deleted drop
|
59
|
+
CloudApp::Drop.recover "http://my.cl.ly/items/1912565"
|
60
|
+
|
61
|
+
### Usage via the class instance
|
62
|
+
|
50
63
|
# Rename a file
|
51
|
-
@
|
52
|
-
|
53
|
-
# Set
|
54
|
-
@
|
55
|
-
|
56
|
-
# Delete
|
57
|
-
@
|
64
|
+
@drop.update :name => "Big Screenshot"
|
65
|
+
|
66
|
+
# Set the drop's privacy
|
67
|
+
@drop.update :private => true
|
68
|
+
|
69
|
+
# Delete a drop
|
70
|
+
@drop.delete
|
71
|
+
|
72
|
+
# Recover a deleted drop
|
73
|
+
@drop.recover
|
58
74
|
|
59
|
-
##
|
75
|
+
## Drops via a Client instance
|
60
76
|
|
61
77
|
* Documentation - {CloudApp::Client}
|
62
78
|
|
63
79
|
---
|
64
80
|
|
65
|
-
#
|
66
|
-
|
81
|
+
# Find a single drop by it's slug
|
82
|
+
drop = @client.drop "2wr4"
|
67
83
|
|
68
|
-
#
|
69
|
-
|
70
|
-
|
71
|
-
# Get a list of all items
|
72
|
-
items = @client.all
|
84
|
+
# Get a list of all drops
|
85
|
+
drops = @client.all
|
73
86
|
|
74
87
|
# Create a new bookmark
|
75
|
-
|
88
|
+
drop = @client.bookmark "http://getcloudapp.com", "CloudApp"
|
89
|
+
|
90
|
+
# Create multiple new bookmarks
|
91
|
+
bookmarks = [
|
92
|
+
{ :name => "Authur Dent", :redirect_url => "http://en.wikipedia.org/wiki/Arthur_Dent" },
|
93
|
+
{ :name => "Zaphod Beeblebrox", :redirect_url => "http://en.wikipedia.org/wiki/Zaphod_Beeblebrox" }
|
94
|
+
]
|
95
|
+
drops = @client.bookmark bookmarks
|
76
96
|
|
77
97
|
# Upload a file
|
78
|
-
|
98
|
+
drop = @client.upload "/path/to/image.png"
|
99
|
+
drop = @client.upload "/path/to/image.png", :private => true
|
79
100
|
|
80
101
|
# Rename a file
|
81
102
|
@client.rename "2wr4", "Big Screenshot"
|
82
103
|
|
83
|
-
# Set
|
104
|
+
# Set a drop's privacy
|
84
105
|
@client.privacy "2wr4", true
|
85
106
|
|
86
|
-
# Delete an
|
107
|
+
# Delete an drop
|
87
108
|
@client.delete "2wr4"
|
109
|
+
|
110
|
+
# Recover a deleted drop
|
111
|
+
@client.recover "2wr4"
|
88
112
|
|
89
113
|
## Account examples
|
90
114
|
|
@@ -95,12 +119,12 @@ Authentication is necessary for most actions, the only exceptions being when cre
|
|
95
119
|
# Create a CloudApp account
|
96
120
|
@account = CloudApp::Account.create :email => "arthur@dent.com", :password => "towel"
|
97
121
|
|
98
|
-
#
|
99
|
-
CloudApp::Account.reset :email => "arthur@dent.com"
|
100
|
-
|
101
|
-
# View details of authenticated account
|
122
|
+
# View account details
|
102
123
|
@account = CloudApp::Account.find
|
103
124
|
|
125
|
+
# Forgot password
|
126
|
+
CloudApp::Account.reset :email => "arthur@dent.com"
|
127
|
+
|
104
128
|
# Change default security
|
105
129
|
@account.update :private_items => false
|
106
130
|
|
@@ -113,6 +137,22 @@ Authentication is necessary for most actions, the only exceptions being when cre
|
|
113
137
|
# Set custom domain
|
114
138
|
@account.update :domain => "dent.com", :domain_home_page => "http://hhgproject.org"
|
115
139
|
|
140
|
+
# View account stats
|
141
|
+
@account.stats
|
142
|
+
|
143
|
+
## Gift cards
|
144
|
+
|
145
|
+
* Documentation - {CloudApp::GiftCard}
|
146
|
+
|
147
|
+
---
|
148
|
+
|
149
|
+
# View gift card details
|
150
|
+
@gift = CloudApp::GiftCard.find "ABC123"
|
151
|
+
|
152
|
+
# Apply the gift card
|
153
|
+
CloudApp::GiftCard.redeem "ABC123"
|
154
|
+
# or
|
155
|
+
@gift.redeem
|
116
156
|
|
117
157
|
## Note on Patches/Pull Requests
|
118
158
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/cloudapp_api.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{cloudapp_api}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Aaron Russell"]
|
12
|
-
s.date = %q{2011-01
|
12
|
+
s.date = %q{2011-05-01}
|
13
13
|
s.description = %q{A simple Ruby wrapper for the CloudApp API. Uses HTTParty with a simple ActiveResource-like interface.}
|
14
14
|
s.email = %q{aaron@gc4.co.uk}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -28,41 +28,51 @@ Gem::Specification.new do |s|
|
|
28
28
|
"lib/cloudapp/account.rb",
|
29
29
|
"lib/cloudapp/base.rb",
|
30
30
|
"lib/cloudapp/client.rb",
|
31
|
+
"lib/cloudapp/core_ext.rb",
|
32
|
+
"lib/cloudapp/drop.rb",
|
33
|
+
"lib/cloudapp/gift_card.rb",
|
31
34
|
"lib/cloudapp/httparty.rb",
|
32
|
-
"lib/cloudapp/item.rb",
|
33
35
|
"lib/cloudapp/multipart.rb",
|
34
36
|
"lib/cloudapp_api.rb",
|
35
37
|
"spec/cloudapp_account_spec.rb",
|
36
38
|
"spec/cloudapp_api_spec.rb",
|
37
39
|
"spec/cloudapp_client_spec.rb",
|
40
|
+
"spec/cloudapp_drop_spec.rb",
|
41
|
+
"spec/cloudapp_gift_card_spec.rb",
|
38
42
|
"spec/cloudapp_item_spec.rb",
|
39
43
|
"spec/fakeweb_helper.rb",
|
40
44
|
"spec/spec_helper.rb",
|
41
45
|
"spec/stubs/account/create",
|
42
46
|
"spec/stubs/account/show",
|
47
|
+
"spec/stubs/account/stats",
|
43
48
|
"spec/stubs/account/update",
|
44
|
-
"spec/stubs/
|
45
|
-
"spec/stubs/
|
46
|
-
"spec/stubs/
|
47
|
-
"spec/stubs/
|
48
|
-
"spec/stubs/
|
49
|
-
"spec/stubs/
|
49
|
+
"spec/stubs/drop/create",
|
50
|
+
"spec/stubs/drop/delete",
|
51
|
+
"spec/stubs/drop/index",
|
52
|
+
"spec/stubs/drop/new",
|
53
|
+
"spec/stubs/drop/new-private",
|
54
|
+
"spec/stubs/drop/show",
|
55
|
+
"spec/stubs/drop/show-private",
|
56
|
+
"spec/stubs/drop/update",
|
57
|
+
"spec/stubs/gift_card/redeem",
|
58
|
+
"spec/stubs/gift_card/show"
|
50
59
|
]
|
51
60
|
s.homepage = %q{http://github.com/aaronrussell/cloud_app}
|
52
61
|
s.require_paths = ["lib"]
|
53
|
-
s.rubygems_version = %q{1.
|
62
|
+
s.rubygems_version = %q{1.7.2}
|
54
63
|
s.summary = %q{A simple Ruby wrapper for the CloudApp API. Uses HTTParty with a simple ActiveResource-like interface.}
|
55
64
|
s.test_files = [
|
56
65
|
"spec/cloudapp_account_spec.rb",
|
57
66
|
"spec/cloudapp_api_spec.rb",
|
58
67
|
"spec/cloudapp_client_spec.rb",
|
68
|
+
"spec/cloudapp_drop_spec.rb",
|
69
|
+
"spec/cloudapp_gift_card_spec.rb",
|
59
70
|
"spec/cloudapp_item_spec.rb",
|
60
71
|
"spec/fakeweb_helper.rb",
|
61
72
|
"spec/spec_helper.rb"
|
62
73
|
]
|
63
74
|
|
64
75
|
if s.respond_to? :specification_version then
|
65
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
66
76
|
s.specification_version = 3
|
67
77
|
|
68
78
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
data/lib/cloudapp/account.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module CloudApp
|
2
2
|
|
3
|
-
# An ActiveResource-like interface through which to interract with
|
3
|
+
# An ActiveResource-like interface through which to interract with CloudApp accounts.
|
4
4
|
#
|
5
5
|
# @example Create a CloudApp account
|
6
6
|
# CloudApp::Account.create :email => "arthur@dent.com", :password => "towel"
|
@@ -26,6 +26,9 @@ module CloudApp
|
|
26
26
|
#
|
27
27
|
# # Forgot password
|
28
28
|
# CloudApp::Account.reset :email => "arthur@dent.com"
|
29
|
+
#
|
30
|
+
# # View account stats
|
31
|
+
# CloudApp::Account.stats
|
29
32
|
#
|
30
33
|
# @example Usage via the class instance
|
31
34
|
# # Change default security
|
@@ -42,11 +45,16 @@ module CloudApp
|
|
42
45
|
#
|
43
46
|
# # Forgot password
|
44
47
|
# @account.reset
|
48
|
+
#
|
49
|
+
# # View account stats
|
50
|
+
# @account.stats
|
45
51
|
#
|
46
52
|
class Account < Base
|
47
53
|
|
48
54
|
# Get the basic details of the authenticated account.
|
55
|
+
#
|
49
56
|
# Requires authentication.
|
57
|
+
#
|
50
58
|
# @return [CloudApp::Account]
|
51
59
|
def self.find
|
52
60
|
res = get "/account", :digest_auth => @@auth
|
@@ -54,9 +62,11 @@ module CloudApp
|
|
54
62
|
end
|
55
63
|
|
56
64
|
# Create a CloudApp account.
|
57
|
-
#
|
58
|
-
#
|
59
|
-
# @
|
65
|
+
#
|
66
|
+
# @param [Hash] opts options parameters
|
67
|
+
# @option opts [String] :email Account email address
|
68
|
+
# @option opts [String] :password Account password
|
69
|
+
# @option opts [Boolean] :accept_tos Accept CloudApp terms of service
|
60
70
|
# @return [CloudApp::Account]
|
61
71
|
def self.create(opts = {})
|
62
72
|
res = post "/register", :body => {:user => opts}
|
@@ -64,18 +74,20 @@ module CloudApp
|
|
64
74
|
end
|
65
75
|
|
66
76
|
# Modify the authenticated accounts details. Can change the default security of newly
|
67
|
-
# created
|
68
|
-
#
|
69
|
-
#
|
70
|
-
#
|
71
|
-
#
|
72
|
-
#
|
73
|
-
#
|
74
|
-
# @
|
75
|
-
#
|
76
|
-
#
|
77
|
-
#
|
78
|
-
# @
|
77
|
+
# created drops, the accounts email address, password, and custom domain details.
|
78
|
+
#
|
79
|
+
# Note that when changing email address or password, the current password is required.
|
80
|
+
# Also note that to change custom domains requires an account with a Pro subscription.
|
81
|
+
#
|
82
|
+
# Requires authentication
|
83
|
+
#
|
84
|
+
# @param [Hash] opts options parameters
|
85
|
+
# @option opts [Boolean] :private_items Change default security of new drops
|
86
|
+
# @option opts [String] :email Change email address
|
87
|
+
# @option opts [String] :password Change password
|
88
|
+
# @option opts [String] :current_password Current account password
|
89
|
+
# @option opts [String] :domain Set custom domain
|
90
|
+
# @option opts [String] :domain_home_page URL to redirect visitors to custom domain's root
|
79
91
|
# @return [CloudApp::Account]
|
80
92
|
def self.update(opts = {})
|
81
93
|
res = put "/account", {:body => {:user => opts}, :digest_auth => @@auth}
|
@@ -83,20 +95,32 @@ module CloudApp
|
|
83
95
|
end
|
84
96
|
|
85
97
|
# Dispatch an email containing a link to reset the account's password.
|
86
|
-
#
|
87
|
-
#
|
88
|
-
# @
|
98
|
+
#
|
99
|
+
# @param [Hash] opts options parameters
|
100
|
+
# @option opts [String] :email Account email address
|
89
101
|
# @return [Boolean]
|
90
102
|
def self.reset(opts = {})
|
91
103
|
res = post "/reset", :body => {:user => opts}
|
92
104
|
res.ok? ? true : res
|
93
105
|
end
|
106
|
+
|
107
|
+
# Get the total number of drops created and total views for all drops.
|
108
|
+
#
|
109
|
+
# Requires authentication.
|
110
|
+
#
|
111
|
+
# @return [Hash]
|
112
|
+
def self.stats
|
113
|
+
res = get "/account/stats", :digest_auth => @@auth
|
114
|
+
res.ok? ? res.symbolize_keys! : res
|
115
|
+
end
|
94
116
|
|
95
117
|
attr_reader :id, :email, :domain, :domain_home_page, :private_items,
|
96
118
|
:subscribed, :alpha, :created_at, :updated_at, :activated_at
|
97
119
|
|
98
120
|
# Create a new CloudApp::Account object.
|
121
|
+
#
|
99
122
|
# Only used internally
|
123
|
+
#
|
100
124
|
# @param [Hash] attributes
|
101
125
|
# @param [CloudApp::Account]
|
102
126
|
def initialize(attributes = {})
|
@@ -104,29 +128,39 @@ module CloudApp
|
|
104
128
|
end
|
105
129
|
|
106
130
|
# Modify the authenticated accounts details. Can change the default security of newly
|
107
|
-
# created
|
108
|
-
#
|
109
|
-
#
|
110
|
-
#
|
111
|
-
#
|
112
|
-
# @
|
113
|
-
#
|
114
|
-
# @
|
115
|
-
#
|
116
|
-
#
|
117
|
-
#
|
118
|
-
# @
|
131
|
+
# created drops, the accounts email address, password, and custom domain details.
|
132
|
+
#
|
133
|
+
# Note that when changing email address or password, the current password is required.
|
134
|
+
# Also note that to change custom domains requires an account with a Pro subscription.
|
135
|
+
#
|
136
|
+
# @param [Hash] opts options parameters
|
137
|
+
# @option opts [Boolean] :private_items Change default security of new drops
|
138
|
+
# @option opts [String] :email Change email address
|
139
|
+
# @option opts [String] :password Change password
|
140
|
+
# @option opts [String] :current_password Current account password
|
141
|
+
# @option opts [String] :domain Set custom domain
|
142
|
+
# @option opts [String] :domain_home_page URL to redirect visitors to custom domain's root
|
119
143
|
# @return [CloudApp::Account]
|
120
144
|
def update(opts = {})
|
121
145
|
self.class.update opts
|
122
146
|
end
|
123
147
|
|
124
148
|
# Dispatch an email containing a link to reset the account's password.
|
149
|
+
#
|
150
|
+
# @param [Hash] opts options parameters
|
151
|
+
# @option opts [String] :email Account email address
|
125
152
|
# @return [Boolean]
|
126
153
|
def reset
|
127
154
|
self.class.reset :email => self.email
|
128
155
|
end
|
129
156
|
|
157
|
+
# Get the total number of drops created and total views for all drops.
|
158
|
+
#
|
159
|
+
# @return [Hash]
|
160
|
+
def stats
|
161
|
+
self.class.stats
|
162
|
+
end
|
163
|
+
|
130
164
|
end
|
131
165
|
|
132
166
|
end
|
data/lib/cloudapp/base.rb
CHANGED
@@ -19,11 +19,11 @@ module CloudApp
|
|
19
19
|
|
20
20
|
# Sets the authentication credentials in a class variable.
|
21
21
|
#
|
22
|
-
# @param [String]
|
22
|
+
# @param [String] email cl.ly email
|
23
23
|
# @param [String] password cl.ly password
|
24
24
|
# @return [Hash] authentication credentials
|
25
|
-
def self.authenticate(
|
26
|
-
@@auth = {:username =>
|
25
|
+
def self.authenticate(email, password)
|
26
|
+
@@auth = {:username => email, :password => password}
|
27
27
|
end
|
28
28
|
|
29
29
|
private
|
data/lib/cloudapp/client.rb
CHANGED
@@ -6,27 +6,38 @@ module CloudApp
|
|
6
6
|
# @client = CloudApp::Client.new
|
7
7
|
# @client.authenticate "username", "password"
|
8
8
|
#
|
9
|
-
# @example Creating editing and deleting
|
10
|
-
# # Find a single
|
11
|
-
#
|
9
|
+
# @example Creating editing and deleting drops
|
10
|
+
# # Find a single drop by it's slug
|
11
|
+
# drop = @client.drop "2wr4"
|
12
12
|
#
|
13
|
-
# # Get a list of all
|
14
|
-
#
|
13
|
+
# # Get a list of all drops
|
14
|
+
# drops = @client.all
|
15
15
|
#
|
16
16
|
# # Create a new bookmark
|
17
|
-
#
|
17
|
+
# drop = @client.bookmark "http://getcloudapp.com", "CloudApp"
|
18
|
+
#
|
19
|
+
# # Create multiple new bookmarks
|
20
|
+
# bookmarks = [
|
21
|
+
# { :name => "Authur Dent", :redirect_url => "http://en.wikipedia.org/wiki/Arthur_Dent" },
|
22
|
+
# { :name => "Zaphod Beeblebrox", :redirect_url => "http://en.wikipedia.org/wiki/Zaphod_Beeblebrox" }
|
23
|
+
# ]
|
24
|
+
# drops = @client.bookmark bookmarks
|
18
25
|
#
|
19
26
|
# # Upload a file
|
20
|
-
#
|
27
|
+
# drop = @client.upload "/path/to/image.png"
|
28
|
+
# drop = @client.upload "/path/to/image.png", :private => true
|
21
29
|
#
|
22
30
|
# # Rename a file
|
23
31
|
# @client.rename "2wr4", "Big Screenshot"
|
24
32
|
#
|
25
|
-
# # Set
|
33
|
+
# # Set a drop's privacy
|
26
34
|
# @client.privacy "2wr4", true
|
27
35
|
#
|
28
|
-
# # Delete an
|
36
|
+
# # Delete an drop
|
29
37
|
# @client.delete "2wr4"
|
38
|
+
#
|
39
|
+
# # Recover a deleted drop
|
40
|
+
# @client.recover "2wr4"
|
30
41
|
#
|
31
42
|
class Client
|
32
43
|
|
@@ -55,15 +66,17 @@ module CloudApp
|
|
55
66
|
|
56
67
|
# Get metadata about a cl.ly URL like name, type, or view count.
|
57
68
|
#
|
58
|
-
# Finds the
|
69
|
+
# Finds the drop by it's slug id, for example "2wr4".
|
59
70
|
#
|
60
71
|
# @param [String] id cl.ly slug id
|
61
|
-
# @return [CloudApp::
|
62
|
-
def
|
63
|
-
|
72
|
+
# @return [CloudApp::Drop]
|
73
|
+
def drop(id)
|
74
|
+
Drop.find(id)
|
64
75
|
end
|
65
76
|
|
66
|
-
|
77
|
+
alias_method :item, :drop
|
78
|
+
|
79
|
+
# Page through your drops.
|
67
80
|
#
|
68
81
|
# Requires authentication.
|
69
82
|
#
|
@@ -71,72 +84,97 @@ module CloudApp
|
|
71
84
|
# @option opts [Integer] :page (1) Page number starting at 1
|
72
85
|
# @option opts [Integer] :per_page (5) Number of items per page
|
73
86
|
# @option opts [String] :type ('image') Filter items by type (image, bookmark, text, archive, audio, video, or unknown)
|
74
|
-
# @option opts [Boolean] :deleted (true) Show trashed
|
75
|
-
# @return [Array[CloudApp::
|
76
|
-
def
|
77
|
-
|
87
|
+
# @option opts [Boolean] :deleted (true) Show trashed drops
|
88
|
+
# @return [Array[CloudApp::Drop]]
|
89
|
+
def drops(opts = {})
|
90
|
+
Drop.all(opts)
|
78
91
|
end
|
79
92
|
|
80
|
-
|
93
|
+
alias_method :items, :drops
|
94
|
+
|
95
|
+
# Create one or more new bookmark drops.
|
81
96
|
#
|
82
97
|
# Requires authentication.
|
83
98
|
#
|
84
|
-
# @
|
85
|
-
#
|
86
|
-
#
|
87
|
-
|
88
|
-
|
99
|
+
# @overload bookmark(url, name = "")
|
100
|
+
# @param [String] url url to bookmark
|
101
|
+
# @param [String] name name of bookmark
|
102
|
+
# @overload bookmark(opts)
|
103
|
+
# @param [Array] opts array of bookmark option parameters (containing +:name+ and +:redirect_url+)
|
104
|
+
# @return [CloudApp::Drop]
|
105
|
+
def bookmark(*args)
|
106
|
+
if args[0].is_a? Array
|
107
|
+
Drop.create(:bookmarks, args)
|
108
|
+
else
|
109
|
+
name, url = args[0], (args[1] || "")
|
110
|
+
Drop.create(:bookmark, {:name => name, :redirect_url => url})
|
111
|
+
end
|
89
112
|
end
|
90
113
|
|
91
|
-
# Create a new
|
114
|
+
# Create a new drop by uploading a file.
|
92
115
|
#
|
93
116
|
# Requires authentication.
|
94
117
|
#
|
95
118
|
# @param [String] file local path to file
|
96
|
-
# @
|
97
|
-
|
98
|
-
|
119
|
+
# @param [optional, Hash] opts options paramaters
|
120
|
+
# @option opts [Boolean] :private override the account default privacy setting
|
121
|
+
# @return [CloudApp::Drop]
|
122
|
+
def upload(file, opts = {})
|
123
|
+
Drop.create(:upload, opts.merge(:file => file))
|
99
124
|
end
|
100
125
|
|
101
|
-
# Change the name of
|
126
|
+
# Change the name of the drop.
|
102
127
|
#
|
103
|
-
# Finds the
|
128
|
+
# Finds the drop by it's slug id, for example "2wr4".
|
104
129
|
#
|
105
130
|
# Requires authentication.
|
106
131
|
#
|
107
|
-
# @param [String] id
|
108
|
-
# @param [String] name new
|
109
|
-
# @return [CloudApp::
|
132
|
+
# @param [String] id drop id
|
133
|
+
# @param [String] name new drop name
|
134
|
+
# @return [CloudApp::Drop]
|
110
135
|
def rename(id, name = "")
|
111
|
-
|
112
|
-
|
136
|
+
drop = Drop.find(id)
|
137
|
+
drop.class == Drop ? drop.update(:name => name) : drop
|
113
138
|
end
|
114
139
|
|
115
|
-
# Modify
|
140
|
+
# Modify a drop with a private URL to have a public URL or vice versa.
|
116
141
|
#
|
117
|
-
# Finds the
|
142
|
+
# Finds the drop by it's slug id, for example "2wr4".
|
118
143
|
#
|
119
144
|
# Requires authentication.
|
120
145
|
#
|
121
|
-
# @param [String] id
|
146
|
+
# @param [String] id drop id
|
122
147
|
# @param [Boolean] privacy privacy setting
|
123
|
-
# @return [CloudApp::
|
148
|
+
# @return [CloudApp::Drop]
|
124
149
|
def privacy(id, privacy = false)
|
125
|
-
|
126
|
-
|
150
|
+
drop = Drop.find(id)
|
151
|
+
drop.class == Drop ? drop.update(:private => privacy) : drop
|
127
152
|
end
|
128
153
|
|
129
|
-
# Send
|
154
|
+
# Send the drop to the trash.
|
130
155
|
#
|
131
|
-
# Finds the
|
156
|
+
# Finds the drop by it's slug id, for example "2wr4".
|
132
157
|
#
|
133
158
|
# Requires authentication.
|
134
159
|
#
|
135
|
-
# @param [String] id
|
136
|
-
# @return [CloudApp::
|
160
|
+
# @param [String] id drop id
|
161
|
+
# @return [CloudApp::Drop]
|
137
162
|
def delete(id)
|
138
|
-
|
139
|
-
|
163
|
+
drop = Drop.find(id)
|
164
|
+
drop.class == Drop ? drop.delete : drop
|
165
|
+
end
|
166
|
+
|
167
|
+
# Recover a deleted drop from the trash.
|
168
|
+
#
|
169
|
+
# Finds the drop by it's slug id, for example "2wr4".
|
170
|
+
#
|
171
|
+
# Requires authentication.
|
172
|
+
#
|
173
|
+
# @param [String] id drop id
|
174
|
+
# @return [CloudApp::Drop]
|
175
|
+
def recover(id)
|
176
|
+
drop = Drop.find(id)
|
177
|
+
drop.class == Drop ? drop.recover : drop
|
140
178
|
end
|
141
179
|
|
142
180
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class Hash #:nodoc:
|
2
|
+
|
3
|
+
# Return a new hash with all keys converted to symbols.
|
4
|
+
def symbolize_keys
|
5
|
+
inject({}) do |options, (key, value)|
|
6
|
+
options[(key.to_sym rescue key) || key] = value
|
7
|
+
options
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
# Destructively convert all keys to symbols.
|
12
|
+
def symbolize_keys!
|
13
|
+
self.replace(self.symbolize_keys)
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|