kloudless 0.1.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 +7 -0
- data/.gitignore +22 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +62 -0
- data/Rakefile +10 -0
- data/TODO.md +26 -0
- data/kloudless.gemspec +25 -0
- data/lib/kloudless.rb +50 -0
- data/lib/kloudless/account.rb +33 -0
- data/lib/kloudless/account_key.rb +26 -0
- data/lib/kloudless/collection.rb +32 -0
- data/lib/kloudless/error.rb +172 -0
- data/lib/kloudless/event.rb +16 -0
- data/lib/kloudless/file.rb +50 -0
- data/lib/kloudless/folder.rb +41 -0
- data/lib/kloudless/http.rb +114 -0
- data/lib/kloudless/link.rb +34 -0
- data/lib/kloudless/model.rb +20 -0
- data/lib/kloudless/multipart_upload.rb +37 -0
- data/lib/kloudless/team.rb +9 -0
- data/lib/kloudless/version.rb +3 -0
- data/script/changelog +29 -0
- data/script/package +7 -0
- data/script/release +16 -0
- data/test/kloudless/account_key_test.rb +26 -0
- data/test/kloudless/account_test.rb +78 -0
- data/test/kloudless/collection_test.rb +49 -0
- data/test/kloudless/error_test.rb +23 -0
- data/test/kloudless/event_test.rb +20 -0
- data/test/kloudless/file_test.rb +63 -0
- data/test/kloudless/folder_test.rb +47 -0
- data/test/kloudless/http_test.rb +58 -0
- data/test/kloudless/link_test.rb +40 -0
- data/test/kloudless/multipart_upload_test.rb +38 -0
- data/test/kloudless/team_test.rb +11 -0
- data/test/kloudless_test.rb +25 -0
- data/test/test_helper.rb +17 -0
- metadata +150 -0
@@ -0,0 +1,49 @@
|
|
1
|
+
require_relative "../test_helper"
|
2
|
+
|
3
|
+
class Kloudless::CollectionTest < Minitest::Test
|
4
|
+
Model = Struct.new(:id)
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@raw = <<-JSON
|
8
|
+
{
|
9
|
+
"total": 2,
|
10
|
+
"count": 2,
|
11
|
+
"page": 1,
|
12
|
+
"objects": [
|
13
|
+
{
|
14
|
+
"id": 1
|
15
|
+
},
|
16
|
+
{
|
17
|
+
"id": 2
|
18
|
+
}
|
19
|
+
]
|
20
|
+
}
|
21
|
+
JSON
|
22
|
+
@json = JSON.parse(@raw)
|
23
|
+
@collection = Kloudless::Collection.new(Model, @json)
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_total
|
27
|
+
assert_equal 2, @collection.total
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_count
|
31
|
+
assert_equal 2, @collection.count
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_page
|
35
|
+
assert_equal 1, @collection.page
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_objects
|
39
|
+
assert_equal 2, @collection.objects.size
|
40
|
+
assert_equal 1, @collection.objects[0]["id"]
|
41
|
+
assert_equal 2, @collection.objects[1]["id"]
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_each
|
45
|
+
@collection.each do |record|
|
46
|
+
assert_kind_of Model, record
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require_relative "../test_helper"
|
2
|
+
|
3
|
+
class Kloudless::ErrorTest < Minitest::Test
|
4
|
+
Response = Struct.new(:code, :body)
|
5
|
+
|
6
|
+
def test_from_json
|
7
|
+
json = {
|
8
|
+
"error_code" => "naming_conflict",
|
9
|
+
"message" => "boom town",
|
10
|
+
"id" => "request-id",
|
11
|
+
"status_code" => "409",
|
12
|
+
"conflicting_resource_id" => "conflicting-resource-id"
|
13
|
+
}
|
14
|
+
|
15
|
+
error = Kloudless::Error.from_json(json)
|
16
|
+
assert_kind_of Kloudless::NamingConflictError, error
|
17
|
+
assert_equal "409", error.status_code
|
18
|
+
assert_equal "naming_conflict", error.error_code
|
19
|
+
assert_equal "request-id", error.id
|
20
|
+
assert_equal "conflicting-resource-id", error.conflicting_resource_id
|
21
|
+
assert_equal "boom town", error.message
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require_relative "../test_helper"
|
2
|
+
|
3
|
+
class Kloudless::EventTest < Minitest::Test
|
4
|
+
def test_list_events
|
5
|
+
response = {"objects" => [{"id" => 1, "cursor" => 330}]}
|
6
|
+
Kloudless.http.expect(:get, returns: response, args: ["/accounts/1/events", params: {}]) do
|
7
|
+
events = Kloudless::Event.list(account_id: 1)
|
8
|
+
assert_kind_of Kloudless::Collection, events
|
9
|
+
assert_kind_of Kloudless::Event, events.first
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_cursor_events
|
14
|
+
response = {"cursor" => 330}
|
15
|
+
Kloudless.http.expect(:get, returns: response, args: ["/accounts/1/events/latest"]) do
|
16
|
+
event = Kloudless::Event.cursor(account_id: 1)
|
17
|
+
assert_kind_of Kloudless::Event, event
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require_relative "../test_helper"
|
2
|
+
|
3
|
+
class Kloudless::FileTest < Minitest::Test
|
4
|
+
def test_upload_file
|
5
|
+
Kloudless.http.expect(:post, returns: {"id" => "foo"}, args: ["/accounts/1/files", params: {}]) do
|
6
|
+
file = Kloudless::File.upload(account_id: 1)
|
7
|
+
assert_kind_of Kloudless::File, file
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_retrieve_file_metadata
|
12
|
+
Kloudless.http.expect(:get, returns: {"id" => "foo"}, args:["/accounts/1/files/2"]) do
|
13
|
+
metadata = Kloudless::File.metadata(account_id: 1, file_id: 2)
|
14
|
+
assert_kind_of Kloudless::File, metadata # TODO: not really a type
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_rename_file
|
19
|
+
Kloudless.http.expect(:patch, returns: {"id" => "foo"}, args:["/accounts/1/files/2", params: {name: "new-name.txt"}]) do
|
20
|
+
file = Kloudless::File.rename(account_id: 1, file_id: 2, name: "new-name.txt")
|
21
|
+
assert_kind_of Kloudless::File, file
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_download
|
26
|
+
Kloudless.http.expect(:get_raw, returns: "FILE CONTENTS", args:["/accounts/1/files/2/contents"]) do
|
27
|
+
contents = Kloudless::File.download(account_id: 1, file_id: 2)
|
28
|
+
assert_equal "FILE CONTENTS", contents
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_copy
|
33
|
+
Kloudless.http.expect(:post, returns: {"id" => "foo"}, args:["/accounts/1/files/2/copy", params: {parent_id: "parent-id"}]) do
|
34
|
+
file = Kloudless::File.copy(account_id: 1, file_id: 2, parent_id: "parent-id")
|
35
|
+
assert_kind_of Kloudless::File, file
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_delete
|
40
|
+
Kloudless.http.expect(:delete, returns: {"id" => "foo"}, args:["/accounts/1/files/2", params: {permanent: true}]) do
|
41
|
+
file = Kloudless::File.delete(account_id: 1, file_id: 2, permanent: true)
|
42
|
+
assert_kind_of Kloudless::File, file
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_recent
|
47
|
+
response = {"objects" => [{"id" => "foo"}]}
|
48
|
+
Kloudless.http.expect(:get, returns: response, args:["/accounts/1,2/recent", params: {}]) do
|
49
|
+
files = Kloudless::File.recent(account_ids: [1,2])
|
50
|
+
assert_kind_of Kloudless::Collection, files
|
51
|
+
assert_kind_of Kloudless::File, files.first
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_search
|
56
|
+
response = {"objects" => [{"id" => "foo"}]}
|
57
|
+
Kloudless.http.expect(:get, returns: response, args:["/accounts/1,2/search", params: {dropbox: "foo"}]) do
|
58
|
+
files = Kloudless::File.search(account_ids: [1,2], dropbox: "foo")
|
59
|
+
assert_kind_of Kloudless::Collection, files
|
60
|
+
assert_kind_of Kloudless::File, files.first
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require_relative "../test_helper"
|
2
|
+
|
3
|
+
class Kloudless::FolderTest < Minitest::Test
|
4
|
+
def test_create
|
5
|
+
Kloudless.http.expect(:post, args: ["/accounts/1/folders", params: {}]) do
|
6
|
+
folder = Kloudless::Folder.create(account_id: 1)
|
7
|
+
assert_kind_of Kloudless::Folder, folder
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_metadata
|
12
|
+
Kloudless.http.expect(:get, args: ["/accounts/1/folders/2"]) do
|
13
|
+
folder = Kloudless::Folder.metadata(account_id: 1, folder_id: 2)
|
14
|
+
assert_kind_of Kloudless::Folder, folder
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_retrieve
|
19
|
+
response = {"objects" => [{"id" => "1"}]}
|
20
|
+
Kloudless.http.expect(:get, returns: response, args: ["/accounts/1/folders/2/contents", params: {page_number: 1, page_size: 1}]) do
|
21
|
+
folders = Kloudless::Folder.retrieve(account_id: 1, folder_id: 2, page_number: 1, page_size: 1)
|
22
|
+
assert_kind_of Kloudless::Collection, folders
|
23
|
+
assert_kind_of Kloudless::Folder, folders.first
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_rename
|
28
|
+
Kloudless.http.expect(:patch, args: ["/accounts/1/folders/2", params: {name: "foo.md"}]) do
|
29
|
+
folder = Kloudless::Folder.rename(account_id: 1, folder_id: 2, name: "foo.md")
|
30
|
+
assert_kind_of Kloudless::Folder, folder
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_copy
|
35
|
+
Kloudless.http.expect(:post, args: ["/accounts/1/folders/2/copy", params: {parent_id: "parent-id"}]) do
|
36
|
+
folder = Kloudless::Folder.copy(account_id: 1, folder_id: 2, parent_id: "parent-id")
|
37
|
+
assert_kind_of Kloudless::Folder, folder
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_delete
|
42
|
+
Kloudless.http.expect(:delete, args: ["/accounts/1/folders/2", params: {recursive: true, permanent: true}]) do
|
43
|
+
folder = Kloudless::Folder.delete(account_id: 1, folder_id: 2, recursive: true, permanent: true)
|
44
|
+
assert_kind_of Kloudless::Folder, folder
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require_relative "../test_helper"
|
2
|
+
|
3
|
+
class Kloudless::HTTPTest < Minitest::Test
|
4
|
+
def http
|
5
|
+
Kloudless::HTTP
|
6
|
+
end
|
7
|
+
|
8
|
+
def last_request
|
9
|
+
Kloudless::HTTP.last_request
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_get
|
13
|
+
http.mock_response(Struct.new(:body).new('{"foo": "bar"}')) do
|
14
|
+
json = http.get("/foo")
|
15
|
+
|
16
|
+
assert_equal URI.parse("https://api.kloudless.com/v0/foo"), last_request.uri
|
17
|
+
assert_kind_of Net::HTTP::Get, last_request
|
18
|
+
|
19
|
+
expected = {"foo" => "bar"}
|
20
|
+
assert_equal expected, json
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_delete
|
25
|
+
http.mock_response(Struct.new(:body).new('{}')) do
|
26
|
+
json = http.delete("/foo/1")
|
27
|
+
|
28
|
+
assert_equal URI.parse("https://api.kloudless.com/v0/foo/1"), last_request.uri
|
29
|
+
assert_kind_of Net::HTTP::Delete, last_request
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_params
|
34
|
+
http.mock_response(Struct.new(:body).new('{"foo": "bar"}')) do
|
35
|
+
http.get("/foo", params: {page: 2})
|
36
|
+
assert_equal URI.parse("https://api.kloudless.com/v0/foo?page=2"), last_request.uri
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_headers
|
41
|
+
http.mock_response(Struct.new(:body).new('{"foo": "bar"}')) do
|
42
|
+
http.post("/foo", headers: {"X-CUSTOM" => "header-value"})
|
43
|
+
assert_equal "header-value", last_request["X-CUSTOM"]
|
44
|
+
assert_equal "application/json", last_request["Content-Type"]
|
45
|
+
|
46
|
+
http.patch("/foo")
|
47
|
+
assert_equal "application/json", last_request["Content-Type"]
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_error
|
52
|
+
http.mock_response(Struct.new(:body).new('{"error_code": "bad_request"}')) do
|
53
|
+
assert_raises Kloudless::BadRequestError do
|
54
|
+
http.get("/foo")
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require_relative "../test_helper"
|
2
|
+
|
3
|
+
class Kloudless::LinkTest < Minitest::Test
|
4
|
+
def test_list_links
|
5
|
+
response = {"objects" => [{"id" => 1}]}
|
6
|
+
Kloudless.http.expect(:get, returns: response, args: ["/accounts/1,2/links", params: {active: false}]) do
|
7
|
+
links = Kloudless::Link.list(account_ids: [1,2], active: false)
|
8
|
+
assert_kind_of Kloudless::Collection, links
|
9
|
+
assert_kind_of Kloudless::Link, links.first
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_create_link
|
14
|
+
Kloudless.http.expect(:post, args: ["/accounts/1/links", params: {file_id: "file-id"}]) do
|
15
|
+
link = Kloudless::Link.create(account_id: 1, file_id: "file-id")
|
16
|
+
assert_kind_of Kloudless::Link, link
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_retrieve_link
|
21
|
+
Kloudless.http.expect(:get, args: ["/accounts/1/links/2", params: {active: true}]) do
|
22
|
+
link = Kloudless::Link.retrieve(account_id: 1, link_id: 2, active: true)
|
23
|
+
assert_kind_of Kloudless::Link, link
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_update_link
|
28
|
+
Kloudless.http.expect(:patch, args: ["/accounts/1/links/2", params: {password: "foo"}]) do
|
29
|
+
link = Kloudless::Link.update(account_id: 1, link_id: 2, password: "foo")
|
30
|
+
assert_kind_of Kloudless::Link, link
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_delete_link
|
35
|
+
Kloudless.http.expect(:delete, args: ["/accounts/1/links/2"]) do
|
36
|
+
link = Kloudless::Link.delete(account_id: 1, link_id: 2)
|
37
|
+
assert_kind_of Kloudless::Link, link
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require_relative "../test_helper"
|
2
|
+
|
3
|
+
class Kloudless::MultipartUploadTest < Minitest::Test
|
4
|
+
def test_init_multipart_upload
|
5
|
+
Kloudless.http.expect(:post, returns: {"id" => "foo"}, args:["/accounts/1/multipart", params: {overwrite: true}]) do
|
6
|
+
upload = Kloudless::MultipartUpload.init(account_id: 1, overwrite: true)
|
7
|
+
assert_kind_of Kloudless::MultipartUpload, upload
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_retrieve_multipart_upload
|
12
|
+
Kloudless.http.expect(:get, returns: {"id" => "foo"}, args:["/accounts/1/multipart/2"]) do
|
13
|
+
upload = Kloudless::MultipartUpload.retrieve(account_id: 1, multipart_id: 2)
|
14
|
+
assert_kind_of Kloudless::MultipartUpload, upload
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_upload_multipart_upload
|
19
|
+
Kloudless.http.expect(:put, args: ["/accounts/1/multipart/2", params: {part_number: 1}]) do
|
20
|
+
upload = Kloudless::MultipartUpload.upload(account_id: 1, multipart_id: 2, part_number: 1)
|
21
|
+
assert_kind_of Kloudless::MultipartUpload, upload
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_finalize_multipart_upload
|
26
|
+
Kloudless.http.expect(:post, args: ["/accounts/1/multipart/2/complete"]) do
|
27
|
+
upload = Kloudless::MultipartUpload.finalize(account_id: 1, multipart_id: 2)
|
28
|
+
assert_kind_of Kloudless::MultipartUpload, upload
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_abort_multipart_upload
|
33
|
+
Kloudless.http.expect(:delete, args: ["/accounts/1/multipart/2"]) do
|
34
|
+
upload = Kloudless::MultipartUpload.abort(account_id: 1, multipart_id: 2)
|
35
|
+
assert_kind_of Kloudless::MultipartUpload, upload
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require_relative "../test_helper"
|
2
|
+
|
3
|
+
class Kloudless::TeamTest < Minitest::Test
|
4
|
+
def test_list_teams
|
5
|
+
Kloudless.http.expect(:get, returns: {"objects" => [{}]}, args: ["/accounts/1/team", params: {}]) do
|
6
|
+
teams = Kloudless::Team.list(account_id: 1)
|
7
|
+
assert_kind_of Kloudless::Collection, teams
|
8
|
+
assert_kind_of Kloudless::Team, teams.first
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require_relative "test_helper"
|
2
|
+
|
3
|
+
class KloudlessTest < Minitest::Test
|
4
|
+
def test_unauthorized
|
5
|
+
assert_raises Kloudless::ForbiddenError do
|
6
|
+
Kloudless::Account.list
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_authorize_api_key
|
11
|
+
Kloudless.authorize(api_key: "API_KEY")
|
12
|
+
Kloudless.http.mock_response(Struct.new(:body).new('{}')) do
|
13
|
+
Kloudless::Account.list
|
14
|
+
assert_equal "ApiKey API_KEY", Kloudless::HTTP.last_request["Authorization"]
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_authorize_account_key
|
19
|
+
Kloudless.authorize(account_key: "ACCOUNT_KEY")
|
20
|
+
Kloudless.http.mock_response(Struct.new(:body).new('{}')) do
|
21
|
+
Kloudless::Account.list
|
22
|
+
assert_equal "AccountKey ACCOUNT_KEY", Kloudless::HTTP.last_request["Authorization"]
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require_relative "../lib/kloudless"
|
2
|
+
require "minitest/autorun"
|
3
|
+
require "minitest/mock"
|
4
|
+
require "byebug"
|
5
|
+
|
6
|
+
module Kloudless
|
7
|
+
class Test
|
8
|
+
def teardown
|
9
|
+
unmock
|
10
|
+
end
|
11
|
+
|
12
|
+
def unmock
|
13
|
+
Kloudless.http = Kloudless::HTTP
|
14
|
+
Kloudless.http.mock_response = nil
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
metadata
ADDED
@@ -0,0 +1,150 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: kloudless
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jerry Cheung
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-02-13 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.6'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.6'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: byebug
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: minitest
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description:
|
70
|
+
email:
|
71
|
+
- jollyjerry@gmail.com
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- ".gitignore"
|
77
|
+
- Gemfile
|
78
|
+
- LICENSE.txt
|
79
|
+
- README.md
|
80
|
+
- Rakefile
|
81
|
+
- TODO.md
|
82
|
+
- kloudless.gemspec
|
83
|
+
- lib/kloudless.rb
|
84
|
+
- lib/kloudless/account.rb
|
85
|
+
- lib/kloudless/account_key.rb
|
86
|
+
- lib/kloudless/collection.rb
|
87
|
+
- lib/kloudless/error.rb
|
88
|
+
- lib/kloudless/event.rb
|
89
|
+
- lib/kloudless/file.rb
|
90
|
+
- lib/kloudless/folder.rb
|
91
|
+
- lib/kloudless/http.rb
|
92
|
+
- lib/kloudless/link.rb
|
93
|
+
- lib/kloudless/model.rb
|
94
|
+
- lib/kloudless/multipart_upload.rb
|
95
|
+
- lib/kloudless/team.rb
|
96
|
+
- lib/kloudless/version.rb
|
97
|
+
- script/changelog
|
98
|
+
- script/package
|
99
|
+
- script/release
|
100
|
+
- test/kloudless/account_key_test.rb
|
101
|
+
- test/kloudless/account_test.rb
|
102
|
+
- test/kloudless/collection_test.rb
|
103
|
+
- test/kloudless/error_test.rb
|
104
|
+
- test/kloudless/event_test.rb
|
105
|
+
- test/kloudless/file_test.rb
|
106
|
+
- test/kloudless/folder_test.rb
|
107
|
+
- test/kloudless/http_test.rb
|
108
|
+
- test/kloudless/link_test.rb
|
109
|
+
- test/kloudless/multipart_upload_test.rb
|
110
|
+
- test/kloudless/team_test.rb
|
111
|
+
- test/kloudless_test.rb
|
112
|
+
- test/test_helper.rb
|
113
|
+
homepage: https://github.com/jch/kloudless
|
114
|
+
licenses:
|
115
|
+
- MIT
|
116
|
+
metadata: {}
|
117
|
+
post_install_message:
|
118
|
+
rdoc_options: []
|
119
|
+
require_paths:
|
120
|
+
- lib
|
121
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '2.1'
|
126
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - ">="
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '0'
|
131
|
+
requirements: []
|
132
|
+
rubyforge_project:
|
133
|
+
rubygems_version: 2.2.2
|
134
|
+
signing_key:
|
135
|
+
specification_version: 4
|
136
|
+
summary: Kloudless API client
|
137
|
+
test_files:
|
138
|
+
- test/kloudless/account_key_test.rb
|
139
|
+
- test/kloudless/account_test.rb
|
140
|
+
- test/kloudless/collection_test.rb
|
141
|
+
- test/kloudless/error_test.rb
|
142
|
+
- test/kloudless/event_test.rb
|
143
|
+
- test/kloudless/file_test.rb
|
144
|
+
- test/kloudless/folder_test.rb
|
145
|
+
- test/kloudless/http_test.rb
|
146
|
+
- test/kloudless/link_test.rb
|
147
|
+
- test/kloudless/multipart_upload_test.rb
|
148
|
+
- test/kloudless/team_test.rb
|
149
|
+
- test/kloudless_test.rb
|
150
|
+
- test/test_helper.rb
|