class Wdmc::Client
Public Class Methods
new(*args)
click to toggle source
# File lib/wdmc/client.rb, line 9 def initialize(*args) @config = Wdmc::Config.load @config[:verify_ssl] = (@config['validate_cert'].nil? or @config['validate_cert'] != false) ? true : false @config['api_net_nl_bug'] = @config['api_net_nl_bug'].nil? ? false : @config['api_net_nl_bug'] @cookiefile = File.join(ENV['HOME'], '.wdmc_cookie') login end
Public Instance Methods
add_user( data )
click to toggle source
add new user
# File lib/wdmc/client.rb, line 197 def add_user( data ) response = post("#{@config['url']}/api/2.1/rest/users", data, {accept: :json, :cookies => cookies}) return response.code end
all_users()
click to toggle source
Users
Get all users
# File lib/wdmc/client.rb, line 173 def all_users response = get("#{@config['url']}/api/2.1/rest/users", {accept: :json, :cookies => cookies}) JSON.parse(response, :symbolize_names => true)[:users][:user] end
delete_acl( data )
click to toggle source
# File lib/wdmc/client.rb, line 150 def delete_acl( data ) # well, I know the code below is not very pretty... # if someone knows how this shitty delete with rest-client will work response = delete("#{@config['url']}/api/2.1/rest/share_access?share_name=#{data[:share_name]}&username=#{data[:username]}", {accept: :json, :cookies => cookies}) return response end
delete_user( name )
click to toggle source
delete user
# File lib/wdmc/client.rb, line 209 def delete_user( name ) response = delete("#{@config['url']}/api/2.1/rest/users/#{name}", {accept: :json, :cookies => cookies}) return response.code end
device_description()
click to toggle source
# File lib/wdmc/client.rb, line 60 def device_description response = get("#{@config['url']}/api/2.1/rest/device_description", {accept: :json, :cookies => cookies}) JSON.parse(response, :symbolize_names => true)[:device_description] end
find_user( name )
click to toggle source
find a user by name
# File lib/wdmc/client.rb, line 179 def find_user( name ) result = [] all_users.each do |user| result.push user if user[:username] == name end return result end
firmware()
click to toggle source
# File lib/wdmc/client.rb, line 55 def firmware response = get("#{@config['url']}/api/2.1/rest/firmware_info", {accept: :json, :cookies => cookies}) JSON.parse(response, :symbolize_names => true)[:firmware_info] end
get_acl( name )
click to toggle source
working with ACL of a share
get the specified share access
# File lib/wdmc/client.rb, line 135 def get_acl( name ) response = get("#{@config['url']}/api/2.1/rest/share_access/#{name}", {accept: :json, :cookies => cookies}) JSON.parse(response, :symbolize_names => true)[:share_access_list] end
get_tm()
click to toggle source
TimeMachine
Get TimeMachine
Configuration
# File lib/wdmc/client.rb, line 160 def get_tm response = get("#{@config['url']}/api/2.1/rest/time_machine", {accept: :json, :cookies => cookies}) JSON.parse(response, :symbolize_names => true)[:time_machine] end
login()
click to toggle source
# File lib/wdmc/client.rb, line 17 def login @url = @config['url'] @username = @config['username'] @password = @config['password'] begin api = get("#{@url}/api/2.1/rest/local_login?username=#{@username}&password=#{@password}") rescue RestClient::SSLCertificateNotVerified => e if @config['validate_cert'] == 'warn' $stderr.puts("Warning: #{ e.class.name}: #{ e.message } for host URL: '#{ @url }'") @config[:verify_ssl] = false api = get("#{@url}/api/2.1/rest/local_login?username=#{@username}&password=#{@password}") else raise(e) end end cookie = api.cookies File.write(@cookiefile, api.cookies) end
modify_acl( data )
click to toggle source
# File lib/wdmc/client.rb, line 145 def modify_acl( data ) response = put("#{@config['url']}/api/2.1/rest/share_access", data, {accept: :json, :cookies => cookies}) return response.code end
network()
click to toggle source
# File lib/wdmc/client.rb, line 65 def network response = get("#{@config['url']}/api/2.1/rest/network_configuration", {accept: :json, :cookies => cookies}) if @config['api_net_nl_bug'] response = response.delete("\n") end begin JSON.parse(response, :symbolize_names => true)[:network_configuration] rescue JSON::ParserError => e unless @config['api_net_nl_bug'] $stderr.puts(<<~EOL.tr("\n", " ") Warning: Consider adding 'api_net_nl_bug: true' to your configuration file to mitigate a known bug retrieving network configuration data. EOL ) end raise e end end
set_acl( data )
click to toggle source
# File lib/wdmc/client.rb, line 140 def set_acl( data ) response = post("#{@config['url']}/api/2.1/rest/share_access", data, {accept: :json, :cookies => cookies}) return response.code end
set_tm( data )
click to toggle source
Set TimeMachine
Configuration
# File lib/wdmc/client.rb, line 166 def set_tm( data ) response = put("#{@config['url']}/api/2.1/rest/time_machine", data, {accept: :json, :cookies => cookies}) return response end
storage_usage()
click to toggle source
storage
# File lib/wdmc/client.rb, line 85 def storage_usage response = get("#{@config['url']}/api/2.1/rest/storage_usage", {accept: :json, :cookies => cookies}) JSON.parse(response, :symbolize_names => true)[:storage_usage] end
system_information()
click to toggle source
device
# File lib/wdmc/client.rb, line 45 def system_information response = get("#{@config['url']}/api/2.1/rest/system_information", {accept: :json, :cookies => cookies}) JSON.parse(response, :symbolize_names => true)[:system_information] end
system_state()
click to toggle source
# File lib/wdmc/client.rb, line 50 def system_state response = get("#{@config['url']}/api/2.1/rest/system_state", {accept: :json, :cookies => cookies}) JSON.parse(response, :symbolize_names => true)[:system_state] end
update_user( name, data )
click to toggle source
update an existing user
# File lib/wdmc/client.rb, line 203 def update_user( name, data ) response = put("#{@config['url']}/api/2.1/rest/users/#{name}", data, {accept: :json, :cookies => cookies}) return response.code end
user_exists?( name )
click to toggle source
check if user with name exists
# File lib/wdmc/client.rb, line 188 def user_exists?( name ) result = [] all_users.each do |user| result.push user[:username] if user[:username].include?(name) end return result end
volumes()
click to toggle source
Users
# File lib/wdmc/client.rb, line 216 def volumes login response = get("#{@config['url']}/api/2.1/rest/volumes", {accept: :json, :cookies => cookies}) JSON.parse(response, :symbolize_names => true)[:volumes][:volume] end
Private Instance Methods
delete(url, headers={}, &block)
click to toggle source
# File lib/wdmc/client.rb, line 236 def delete(url, headers={}, &block) execute_request(:method => :delete, :url => url, :headers => headers, &block) end
execute_request(args, &block)
click to toggle source
# File lib/wdmc/client.rb, line 240 def execute_request(args, &block) args[:verify_ssl] = @config[:verify_ssl] RestClient::Request.execute(args, &block) end
get(url, headers={}, &block)
click to toggle source
# File lib/wdmc/client.rb, line 224 def get(url, headers={}, &block) execute_request(:method => :get, :url => url, :headers => headers, &block) end
post(url, payload, headers={}, &block)
click to toggle source
# File lib/wdmc/client.rb, line 228 def post(url, payload, headers={}, &block) execute_request(:method => :post, :url => url, :payload => payload, :headers => headers, &block) end
put(url, payload, headers={}, &block)
click to toggle source
# File lib/wdmc/client.rb, line 232 def put(url, payload, headers={}, &block) execute_request(:method => :put, :url => url, :payload => payload, :headers => headers, &block) end