code42 0.2.6 → 0.2.7
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 +4 -4
- data/.rspec +1 -0
- data/code42.gemspec +3 -0
- data/lib/code42.rb +66 -27
- data/lib/code42/api/destination.rb +18 -0
- data/lib/code42/api/diagnostic.rb +9 -0
- data/lib/code42/api/org.rb +5 -2
- data/lib/code42/api/product_license.rb +21 -0
- data/lib/code42/api/server.rb +21 -0
- data/lib/code42/api/server_connection_string.rb +9 -0
- data/lib/code42/api/server_settings.rb +13 -0
- data/lib/code42/api/store_point.rb +22 -0
- data/lib/code42/api/token.rb +7 -0
- data/lib/code42/client.rb +23 -31
- data/lib/code42/computer.rb +0 -2
- data/lib/code42/connection.rb +14 -26
- data/lib/code42/destination.rb +52 -0
- data/lib/code42/product_license.rb +12 -0
- data/lib/code42/server.rb +54 -0
- data/lib/code42/server_connection_string.rb +10 -0
- data/lib/code42/server_settings.rb +4 -0
- data/lib/code42/settings.rb +1 -1
- data/lib/code42/store_point.rb +63 -0
- data/lib/code42/version.rb +1 -1
- data/spec/cassettes/Code42_Client/_add_product_license/adds_a_product_license.yml +39 -0
- data/spec/cassettes/Code42_Client/_apply_mlk/applies_the_mlk.yml +77 -0
- data/spec/cassettes/Code42_Client/_create_destination/creates_a_destination.yml +40 -0
- data/spec/cassettes/Code42_Client/_create_server/creates_a_server.yml +38 -0
- data/spec/cassettes/Code42_Client/_destination/returns_a_destination.yml +37 -0
- data/spec/cassettes/Code42_Client/_destinations/returns_an_array_of_desinations.yml +37 -0
- data/spec/cassettes/Code42_Client/_org_share_destinations/returns_a_provider_key.yml +36 -0
- data/spec/cassettes/Code42_Client/_product_licenses/returns_an_array_of_product_licenses.yml +81 -0
- data/spec/cassettes/Code42_Client/_remove_product_license/removes_a_product_license.yml +104 -0
- data/spec/cassettes/Code42_Client/_server/returns_a_server.yml +37 -0
- data/spec/cassettes/Code42_Client/_server_connection_string/returns_a_connection_string.yml +36 -0
- data/spec/cassettes/Code42_Client/_server_settings/returns_a_server_settings_object.yml +37 -0
- data/spec/cassettes/Code42_Client/_servers/returns_an_array_of_servers.yml +37 -0
- data/spec/cassettes/Code42_Client/_update_product_license/updates_a_product_license.yml +76 -0
- data/spec/cassettes/Code42_Client/_update_server_settings/updates_server_settings.yml +70 -0
- data/spec/cassettes/Code42_StorePoint/_accept_new_devices/should_return_store_point_with_accept_new_devices_enabled.yml +75 -0
- data/spec/cassettes/Code42_StorePoint/_disable_balancing/should_return_store_point_with_balancing_enabled.yml +75 -0
- data/spec/cassettes/Code42_StorePoint/_disable_inbound_backup/should_return_store_point_with_inbound_backup_disabled.yml +75 -0
- data/spec/cassettes/Code42_StorePoint/_enable_balancing/should_return_store_point_with_balancing_enabled.yml +75 -0
- data/spec/cassettes/Code42_StorePoint/_enable_inbound_backup/should_return_store_point_with_inbound_backup_disabled.yml +75 -0
- data/spec/cassettes/Code42_StorePoint/_find_store_point_by_id/should_return_correct_store_point.yml +38 -0
- data/spec/cassettes/Code42_StorePoint/_find_store_point_by_name/should_return_correct_store_point.yml +38 -0
- data/spec/cassettes/Code42_StorePoint/_find_store_point_by_server_name/should_return_correct_store_point.yml +38 -0
- data/spec/cassettes/Code42_StorePoint/_reject_new_devices/should_return_store_point_with_accept_new_devices_disabled.yml +75 -0
- data/spec/code42/client_spec.rb +161 -57
- data/spec/code42/connection_spec.rb +10 -12
- data/spec/code42/extension_spec.rb +0 -2
- data/spec/code42/org_spec.rb +20 -22
- data/spec/code42/ping_spec.rb +1 -3
- data/spec/code42/product_license_spec.rb +34 -0
- data/spec/code42/resource_spec.rb +0 -2
- data/spec/code42/role_spec.rb +2 -4
- data/spec/code42/server_connection_string_spec.rb +34 -0
- data/spec/code42/server_spec.rb +66 -0
- data/spec/code42/settings_spec.rb +25 -27
- data/spec/code42/store_point_spec.rb +90 -0
- data/spec/code42/token_spec.rb +10 -15
- data/spec/code42/user_spec.rb +4 -6
- data/spec/spec_helper.rb +1 -1
- metadata +74 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8bf8ccbbf30229f5782e6820c7e65d7a231f2543
|
4
|
+
data.tar.gz: 957d1a88845196fb072e784ff74378638f497c65
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e0b5aaa0a70a0c2e253d009c78aec1f8e6268e85678fa66b3913b422285de5de3f60f761d2804e7374f0359f4749b536a27edd9cc8125440cd11341ffd446ae0
|
7
|
+
data.tar.gz: 43ccc2d3d9727797a2fe5ba31b3b6edccbeca692f527b8659f05c87d793a6e9504e35441b0aae94606dc24c1bc0ad7c82c8d4da987b85926876143d544d62ad2
|
data/.rspec
CHANGED
data/code42.gemspec
CHANGED
@@ -11,6 +11,7 @@ Gem::Specification.new do |gem|
|
|
11
11
|
gem.description = %q{Provides a Ruby interface to the Code42 API}
|
12
12
|
gem.summary = %q{...}
|
13
13
|
gem.homepage = "http://www.crashplan.com/apidocviewer/"
|
14
|
+
gem.license = 'Apache'
|
14
15
|
|
15
16
|
gem.add_development_dependency 'rspec', '~> 2.14.0'
|
16
17
|
gem.add_development_dependency 'webmock', '~> 1.11.0'
|
@@ -20,6 +21,8 @@ Gem::Specification.new do |gem|
|
|
20
21
|
gem.add_dependency 'activesupport', '>= 3.2.0'
|
21
22
|
gem.add_dependency 'faraday_middleware', '~> 0.9.1'
|
22
23
|
|
24
|
+
gem.required_ruby_version = '>= 1.9'
|
25
|
+
|
23
26
|
gem.files = `git ls-files`.split($/)
|
24
27
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
25
28
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
data/lib/code42.rb
CHANGED
@@ -1,28 +1,34 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
9
|
-
require
|
10
|
-
require
|
11
|
-
require
|
12
|
-
require
|
13
|
-
require
|
14
|
-
require
|
15
|
-
require
|
16
|
-
require
|
17
|
-
require
|
18
|
-
require
|
19
|
-
require
|
20
|
-
require
|
21
|
-
require
|
22
|
-
require
|
23
|
-
require
|
24
|
-
require
|
25
|
-
require
|
1
|
+
require 'date'
|
2
|
+
require 'active_support/core_ext/array/extract_options'
|
3
|
+
require 'active_support/core_ext/hash/keys'
|
4
|
+
require 'active_support/core_ext/string/inflections'
|
5
|
+
require 'active_support/core_ext/object/blank'
|
6
|
+
require 'active_support/core_ext/object/try'
|
7
|
+
require 'active_support/notifications'
|
8
|
+
require 'code42/version'
|
9
|
+
require 'code42/client'
|
10
|
+
require 'code42/settings'
|
11
|
+
require 'code42/error'
|
12
|
+
require 'code42/connection'
|
13
|
+
require 'code42/attribute'
|
14
|
+
require 'code42/attribute_serializer'
|
15
|
+
require 'code42/resource'
|
16
|
+
require 'code42/org'
|
17
|
+
require 'code42/user'
|
18
|
+
require 'code42/computer'
|
19
|
+
require 'code42/diagnostic'
|
20
|
+
require 'code42/ping'
|
21
|
+
require 'code42/token'
|
22
|
+
require 'code42/role'
|
23
|
+
require 'code42/role_collection'
|
24
|
+
require 'code42/token_validation'
|
25
|
+
require 'code42/permission'
|
26
|
+
require 'code42/product_license'
|
27
|
+
require 'code42/server_settings'
|
28
|
+
require 'code42/destination'
|
29
|
+
require 'code42/server'
|
30
|
+
require 'code42/server_connection_string'
|
31
|
+
require 'code42/store_point'
|
26
32
|
|
27
33
|
module Code42
|
28
34
|
class << self
|
@@ -40,8 +46,9 @@ module Code42
|
|
40
46
|
self
|
41
47
|
end
|
42
48
|
|
43
|
-
def respond_to_missing?(method_name, include_private=false)
|
44
|
-
|
49
|
+
def respond_to_missing?(method_name, include_private=false)
|
50
|
+
client.respond_to?(method_name, include_private)
|
51
|
+
end
|
45
52
|
|
46
53
|
private
|
47
54
|
|
@@ -51,3 +58,35 @@ module Code42
|
|
51
58
|
end
|
52
59
|
end
|
53
60
|
end
|
61
|
+
|
62
|
+
class RequestLogger < Faraday::Request
|
63
|
+
def call(env)
|
64
|
+
debug('request') { dump_body(env[:body]) }
|
65
|
+
super
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
class BodyLogger < Faraday::Response::Logger
|
70
|
+
def call(env)
|
71
|
+
debug('response') { dump_body(env[:body]) }
|
72
|
+
super
|
73
|
+
end
|
74
|
+
|
75
|
+
def on_complete(env)
|
76
|
+
debug('response') { dump_body(env[:body]) }
|
77
|
+
super
|
78
|
+
end
|
79
|
+
|
80
|
+
def dump_body(body)
|
81
|
+
if body.respond_to?(:to_str)
|
82
|
+
body.to_str
|
83
|
+
else
|
84
|
+
pretty_inspect(body)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
def pretty_inspect(body)
|
89
|
+
require 'pp' unless body.respond_to?(:pretty_inspect)
|
90
|
+
body.pretty_inspect
|
91
|
+
end
|
92
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Code42
|
2
|
+
module API
|
3
|
+
module Destination
|
4
|
+
def destinations
|
5
|
+
objects_from_response(Code42::Destination, :get, 'destinations', key: 'destinations')
|
6
|
+
end
|
7
|
+
|
8
|
+
def destination(id)
|
9
|
+
object_from_response(Code42::Destination, :get, "destination/#{id}")
|
10
|
+
end
|
11
|
+
|
12
|
+
def create_destination(attrs)
|
13
|
+
response = post('Destination', attrs)
|
14
|
+
response && response['data'].is_a?(Array)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/code42/api/org.rb
CHANGED
@@ -68,11 +68,11 @@ module Code42
|
|
68
68
|
end
|
69
69
|
|
70
70
|
def activate_org(id = 'my', attrs = {})
|
71
|
-
object_from_response(Code42::Org, :delete, "
|
71
|
+
object_from_response(Code42::Org, :delete, "OrgDeactivation/#{id}", attrs)
|
72
72
|
end
|
73
73
|
|
74
74
|
def deactivate_org(id = 'my', attrs = {})
|
75
|
-
object_from_response(Code42::Org, :put, "
|
75
|
+
object_from_response(Code42::Org, :put, "OrgDeactivation/#{id}", attrs)
|
76
76
|
end
|
77
77
|
|
78
78
|
def block_org(id = 'my', attrs = {})
|
@@ -83,6 +83,9 @@ module Code42
|
|
83
83
|
object_from_response(Code42::Org, :delete, "orgBlock/#{id}", attrs)
|
84
84
|
end
|
85
85
|
|
86
|
+
def org_share_destinations(id)
|
87
|
+
get("orgShareDestinations/#{id}")['data']
|
88
|
+
end
|
86
89
|
|
87
90
|
end
|
88
91
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Code42
|
2
|
+
module API
|
3
|
+
module ProductLicense
|
4
|
+
def product_licenses
|
5
|
+
objects_from_response(Code42::ProductLicense, :get, 'productLicense', key: 'products')
|
6
|
+
end
|
7
|
+
|
8
|
+
def remove_product_license(id)
|
9
|
+
delete("productLicense/#{id}")
|
10
|
+
end
|
11
|
+
|
12
|
+
def add_product_license(license_key)
|
13
|
+
attrs = {
|
14
|
+
product_license: license_key,
|
15
|
+
key: 'products'
|
16
|
+
}
|
17
|
+
objects_from_response(Code42::ProductLicense, :put, 'productLicense', attrs)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Code42
|
2
|
+
module API
|
3
|
+
module Server
|
4
|
+
def servers(params = {})
|
5
|
+
objects_from_response(Code42::Server, :get, 'server', params.merge(key: 'servers'))
|
6
|
+
end
|
7
|
+
|
8
|
+
def server(id, params = {})
|
9
|
+
if id.is_a? Fixnum
|
10
|
+
object_from_response(Code42::Server, :get, "server/#{id}", params)
|
11
|
+
elsif id.is_a? String
|
12
|
+
servers(params.merge(q: id)).first
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def create_server(attrs)
|
17
|
+
object_from_response(Code42::Server, :post, 'server', attrs)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Code42
|
2
|
+
module API
|
3
|
+
module ServerSettings
|
4
|
+
def server_settings(id)
|
5
|
+
object_from_response(Code42::ServerSettings, :get, "serverSettings/#{id}")
|
6
|
+
end
|
7
|
+
|
8
|
+
def update_server_settings(id, attrs)
|
9
|
+
put("serverSettings/#{id}", attrs)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Code42
|
2
|
+
module API
|
3
|
+
module StorePoint
|
4
|
+
|
5
|
+
def find_store_points_by_name(name, params = {})
|
6
|
+
objects_from_response(Code42::StorePoint, :get, 'storePoint', params.merge(key: 'storepoints', q: name))
|
7
|
+
end
|
8
|
+
|
9
|
+
def find_store_point_by_id(id, params = {})
|
10
|
+
object_from_response(Code42::StorePoint, :get, "storePoint/#{id}", params)
|
11
|
+
end
|
12
|
+
|
13
|
+
def store_points(params = {})
|
14
|
+
objects_from_response(Code42::StorePoint, :get, 'storePoint', params.merge(key: 'storepoints'))
|
15
|
+
end
|
16
|
+
|
17
|
+
def update_store_point(id, params)
|
18
|
+
object_from_response(Code42::StorePoint, :put, "storePoint/#{id}", params)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/code42/api/token.rb
CHANGED
@@ -8,6 +8,13 @@ module Code42
|
|
8
8
|
object_from_response(Code42::Token, :post, "authToken")
|
9
9
|
end
|
10
10
|
|
11
|
+
def apply_mlk(mlk, attrs)
|
12
|
+
settings.mlk = mlk
|
13
|
+
response = object_from_response(Code42::Token, :post, 'authToken', attrs)
|
14
|
+
settings.mlk = nil
|
15
|
+
response
|
16
|
+
end
|
17
|
+
|
11
18
|
# Returns LoginToken and ServerUrl
|
12
19
|
# @return [CrashPlan::Token] Token to pass to ServerUrl's AuthToken resource
|
13
20
|
def get_login_token
|
data/lib/code42/client.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'forwardable'
|
1
2
|
require 'json'
|
2
3
|
Dir[File.dirname(__FILE__) + '/api/*.rb'].each { |file| require file }
|
3
4
|
|
@@ -8,10 +9,21 @@ module Code42
|
|
8
9
|
include Code42::API::Org
|
9
10
|
include Code42::API::Computer
|
10
11
|
include Code42::API::Token
|
12
|
+
include Code42::API::ProductLicense
|
13
|
+
include Code42::API::ServerSettings
|
14
|
+
include Code42::API::Destination
|
15
|
+
include Code42::API::Server
|
11
16
|
include Code42::API::PasswordReset
|
17
|
+
include Code42::API::StorePoint
|
18
|
+
include Code42::API::Diagnostic
|
19
|
+
include Code42::API::ServerConnectionString
|
12
20
|
|
13
21
|
attr_reader :settings
|
14
22
|
|
23
|
+
extend Forwardable
|
24
|
+
|
25
|
+
instance_delegate make_request: :connection
|
26
|
+
|
15
27
|
def initialize(options = {})
|
16
28
|
self.settings = options
|
17
29
|
end
|
@@ -43,25 +55,6 @@ module Code42
|
|
43
55
|
settings.token = token.to_s
|
44
56
|
end
|
45
57
|
|
46
|
-
def diagnostic
|
47
|
-
object_from_response(Diagnostic, :get, 'diagnostic')
|
48
|
-
end
|
49
|
-
|
50
|
-
# Block a computer from backing up
|
51
|
-
# @return [Code42::Computer] The blocked computer
|
52
|
-
# @params id [Integer, String] The computer ID you want to block
|
53
|
-
def block_computer(id)
|
54
|
-
put("computerblock/#{id}")
|
55
|
-
end
|
56
|
-
|
57
|
-
def unblock_computer(id)
|
58
|
-
delete("computerblock/#{id}")
|
59
|
-
end
|
60
|
-
|
61
|
-
def deactivate_org(id)
|
62
|
-
put("OrgDeactivation/#{id}")
|
63
|
-
end
|
64
|
-
|
65
58
|
def connection
|
66
59
|
@connection ||= begin
|
67
60
|
connection = Connection.new
|
@@ -80,6 +73,9 @@ module Code42
|
|
80
73
|
if settings.token
|
81
74
|
@connection.token = settings.token
|
82
75
|
end
|
76
|
+
if settings.mlk
|
77
|
+
@connection.mlk = settings.mlk
|
78
|
+
end
|
83
79
|
@connection
|
84
80
|
end
|
85
81
|
|
@@ -120,24 +116,20 @@ module Code42
|
|
120
116
|
array.map { |element| klass.deserialize_and_initialize(element, self) }
|
121
117
|
end
|
122
118
|
|
123
|
-
def get(path, data = {})
|
124
|
-
make_request(:get, path, data)
|
125
|
-
end
|
126
|
-
|
127
|
-
def post(path, data = {})
|
128
|
-
make_request(:post, path, data)
|
119
|
+
def get(path, data = {}, &block)
|
120
|
+
make_request(:get, path, data, &block)
|
129
121
|
end
|
130
122
|
|
131
|
-
def
|
132
|
-
make_request(:
|
123
|
+
def post(path, data = {}, &block)
|
124
|
+
make_request(:post, path, data, &block)
|
133
125
|
end
|
134
126
|
|
135
|
-
def
|
136
|
-
make_request(:
|
127
|
+
def put(path, data = {}, &block)
|
128
|
+
make_request(:put, path, data, &block)
|
137
129
|
end
|
138
130
|
|
139
|
-
def
|
140
|
-
|
131
|
+
def delete(path, data = {}, &block)
|
132
|
+
make_request(:delete, path, data, &block)
|
141
133
|
end
|
142
134
|
end
|
143
135
|
end
|
data/lib/code42/computer.rb
CHANGED
data/lib/code42/connection.rb
CHANGED
@@ -6,7 +6,7 @@ require 'code42/error'
|
|
6
6
|
|
7
7
|
module Code42
|
8
8
|
class Connection
|
9
|
-
attr_accessor :host, :port, :scheme, :path_prefix, :username, :password, :adapter, :token, :verify_https, :logger, :last_response
|
9
|
+
attr_accessor :host, :port, :scheme, :path_prefix, :username, :password, :adapter, :token, :verify_https, :logger, :mlk, :last_response
|
10
10
|
|
11
11
|
def initialize(options = {})
|
12
12
|
self.host = options[:host]
|
@@ -21,8 +21,10 @@ module Code42
|
|
21
21
|
|
22
22
|
extend Forwardable
|
23
23
|
|
24
|
-
|
25
|
-
|
24
|
+
instance_delegate %i(host port path_prefix scheme) => :adapter
|
25
|
+
instance_delegate %i(host= port= path_prefix= scheme=) => :adapter
|
26
|
+
|
27
|
+
instance_delegate %i(get post put delete) => :adapter
|
26
28
|
|
27
29
|
def verify_https=(verify_https)
|
28
30
|
adapter.ssl[:verify] = verify_https
|
@@ -58,6 +60,12 @@ module Code42
|
|
58
60
|
@token
|
59
61
|
end
|
60
62
|
|
63
|
+
def mlk=(mlk)
|
64
|
+
@mlk = mlk
|
65
|
+
adapter.headers['C42-MasterLicenseKey'] = "BASIC #{mlk}"
|
66
|
+
@mlk
|
67
|
+
end
|
68
|
+
|
61
69
|
def username=(username)
|
62
70
|
@username = username
|
63
71
|
adapter.basic_auth(username, password) if has_valid_credentials?
|
@@ -68,9 +76,9 @@ module Code42
|
|
68
76
|
adapter.basic_auth(username, password) if has_valid_credentials?
|
69
77
|
end
|
70
78
|
|
71
|
-
def make_request(method, *args)
|
79
|
+
def make_request(method, *args, &block)
|
72
80
|
begin
|
73
|
-
@last_response = response = self.send(method, *args)
|
81
|
+
@last_response = response = self.send(method, *args, &block)
|
74
82
|
ActiveSupport::Notifications.instrument('code42.request', {
|
75
83
|
method: method,
|
76
84
|
args: args,
|
@@ -83,29 +91,9 @@ module Code42
|
|
83
91
|
response.body
|
84
92
|
end
|
85
93
|
|
86
|
-
def get(path, data)
|
87
|
-
adapter.get(path, data)
|
88
|
-
end
|
89
|
-
|
90
|
-
def put(path, data)
|
91
|
-
adapter.put path, data
|
92
|
-
end
|
93
|
-
|
94
|
-
def post(path, data)
|
95
|
-
adapter.post path, data
|
96
|
-
end
|
97
|
-
|
98
|
-
def delete(path, data)
|
99
|
-
adapter.delete(path, data)
|
100
|
-
end
|
101
|
-
|
102
|
-
def respond_to?(method_name, include_private = false)
|
103
|
-
adapter.respond_to?(method_name, include_private) || super
|
104
|
-
end if RUBY_VERSION < "1.9"
|
105
|
-
|
106
94
|
def respond_to_missing?(method_name, include_private = false)
|
107
95
|
adapter.respond_to?(method_name, include_private) || super
|
108
|
-
end
|
96
|
+
end
|
109
97
|
|
110
98
|
private
|
111
99
|
|