virtualbox-ws 0.0.3 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (137) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -2
  3. data/Gemfile.lock +8 -2
  4. data/README.md +42 -24
  5. data/lib/core_ext/hash.rb +6 -6
  6. data/lib/core_ext/string.rb +8 -0
  7. data/lib/virtualbox/base.rb +118 -6
  8. data/lib/virtualbox/classes/appliance.rb +11 -44
  9. data/lib/virtualbox/classes/audio_adapter.rb +3 -25
  10. data/lib/virtualbox/classes/bandwidth_control.rb +5 -27
  11. data/lib/virtualbox/classes/bandwidth_group.rb +4 -21
  12. data/lib/virtualbox/classes/bios_settings.rb +12 -73
  13. data/lib/virtualbox/classes/console.rb +42 -193
  14. data/lib/virtualbox/classes/dhcp_server.rb +18 -44
  15. data/lib/virtualbox/classes/directory.rb +4 -18
  16. data/lib/virtualbox/classes/display.rb +10 -39
  17. data/lib/virtualbox/classes/emulated_usb.rb +10 -0
  18. data/lib/virtualbox/classes/event.rb +5 -23
  19. data/lib/virtualbox/classes/event_listener.rb +1 -6
  20. data/lib/virtualbox/classes/event_source.rb +7 -49
  21. data/lib/virtualbox/classes/events/bandwidth_group_changed_event.rb +1 -5
  22. data/lib/virtualbox/classes/events/clipboard_mode_changed_event.rb +1 -4
  23. data/lib/virtualbox/classes/events/cpu_changed_event.rb +2 -8
  24. data/lib/virtualbox/classes/events/cpu_execution_cap_changed_event.rb +1 -4
  25. data/lib/virtualbox/classes/events/drag_and_drop_mode_changed_event.rb +1 -4
  26. data/lib/virtualbox/classes/events/event_source_changed_event.rb +2 -9
  27. data/lib/virtualbox/classes/events/extra_data_can_change_event.rb +3 -12
  28. data/lib/virtualbox/classes/events/extra_data_changed_event.rb +3 -12
  29. data/lib/virtualbox/classes/events/guest_file_event.rb +7 -0
  30. data/lib/virtualbox/classes/events/guest_file_io_event.rb +8 -0
  31. data/lib/virtualbox/classes/events/guest_file_offset_changed_event.rb +4 -0
  32. data/lib/virtualbox/classes/events/guest_file_read_event.rb +6 -0
  33. data/lib/virtualbox/classes/events/guest_file_registered_event.rb +7 -0
  34. data/lib/virtualbox/classes/events/guest_file_state_changed_event.rb +8 -0
  35. data/lib/virtualbox/classes/events/guest_file_write_event.rb +4 -0
  36. data/lib/virtualbox/classes/events/guest_keyboard_event.rb +2 -5
  37. data/lib/virtualbox/classes/events/guest_monitor_changed_event.rb +6 -24
  38. data/lib/virtualbox/classes/events/guest_mouse_event.rb +6 -24
  39. data/lib/virtualbox/classes/events/guest_multi_touch_event.rb +12 -0
  40. data/lib/virtualbox/classes/events/guest_process_event.rb +8 -0
  41. data/lib/virtualbox/classes/events/guest_process_input_notify_event.rb +7 -0
  42. data/lib/virtualbox/classes/events/guest_process_io_event.rb +8 -0
  43. data/lib/virtualbox/classes/events/guest_process_output_event.rb +7 -0
  44. data/lib/virtualbox/classes/events/guest_process_registered_event.rb +7 -0
  45. data/lib/virtualbox/classes/events/guest_process_state_changed_event.rb +8 -0
  46. data/lib/virtualbox/classes/events/guest_property_changed_event.rb +3 -12
  47. data/lib/virtualbox/classes/events/guest_session_event.rb +7 -0
  48. data/lib/virtualbox/classes/events/guest_session_registered_event.rb +7 -0
  49. data/lib/virtualbox/classes/events/guest_session_state_changed_event.rb +9 -0
  50. data/lib/virtualbox/classes/events/guest_user_state_changed_event.rb +10 -0
  51. data/lib/virtualbox/classes/events/host_name_resolution_configuration_change_event.rb +4 -0
  52. data/lib/virtualbox/classes/events/host_pci_device_plug_event.rb +4 -16
  53. data/lib/virtualbox/classes/events/keyboard_leds_changed_event.rb +3 -12
  54. data/lib/virtualbox/classes/events/machine_data_changed_event.rb +1 -4
  55. data/lib/virtualbox/classes/events/machine_event.rb +1 -4
  56. data/lib/virtualbox/classes/events/machine_registered_event.rb +1 -4
  57. data/lib/virtualbox/classes/events/machine_state_changed_event.rb +1 -4
  58. data/lib/virtualbox/classes/events/medium_changed_event.rb +1 -5
  59. data/lib/virtualbox/classes/events/medium_registered_event.rb +3 -12
  60. data/lib/virtualbox/classes/events/mouse_capability_changed_event.rb +4 -12
  61. data/lib/virtualbox/classes/events/mouse_pointer_shape_changed_event.rb +7 -28
  62. data/lib/virtualbox/classes/events/nat_network_alter_event.rb +7 -0
  63. data/lib/virtualbox/classes/events/nat_network_changed_event.rb +9 -0
  64. data/lib/virtualbox/classes/events/nat_network_creation_deletion_event.rb +9 -0
  65. data/lib/virtualbox/classes/events/nat_network_port_forward_event.rb +16 -0
  66. data/lib/virtualbox/classes/events/nat_network_setting_event.rb +13 -0
  67. data/lib/virtualbox/classes/events/nat_network_start_stop_event.rb +9 -0
  68. data/lib/virtualbox/classes/events/nat_redirect_event.rb +8 -32
  69. data/lib/virtualbox/classes/events/network_adapter_changed_event.rb +1 -5
  70. data/lib/virtualbox/classes/events/parallel_port_changed_event.rb +1 -5
  71. data/lib/virtualbox/classes/events/reusable_event.rb +2 -9
  72. data/lib/virtualbox/classes/events/runtime_error_event.rb +3 -12
  73. data/lib/virtualbox/classes/events/serial_port_changed_event.rb +1 -5
  74. data/lib/virtualbox/classes/events/session_state_changed_event.rb +1 -4
  75. data/lib/virtualbox/classes/events/shared_folder_changed_event.rb +1 -4
  76. data/lib/virtualbox/classes/events/show_window_event.rb +1 -4
  77. data/lib/virtualbox/classes/events/snapshot_event.rb +1 -4
  78. data/lib/virtualbox/classes/events/state_changed_event.rb +1 -4
  79. data/lib/virtualbox/classes/events/storage_device_changed_event.rb +3 -8
  80. data/lib/virtualbox/classes/events/usb_device_state_changed_event.rb +3 -9
  81. data/lib/virtualbox/classes/events/v_box_svc_availability_chaged_event.rb +1 -4
  82. data/lib/virtualbox/classes/events/veto_event.rb +3 -13
  83. data/lib/virtualbox/classes/events/video_capture_changed_event.rb +4 -0
  84. data/lib/virtualbox/classes/file.rb +18 -65
  85. data/lib/virtualbox/classes/framebuffer.rb +21 -0
  86. data/lib/virtualbox/classes/framebuffer_overlay.rb +12 -0
  87. data/lib/virtualbox/classes/fs_obj_info.rb +20 -77
  88. data/lib/virtualbox/classes/guest.rb +25 -126
  89. data/lib/virtualbox/classes/guest_session.rb +48 -224
  90. data/lib/virtualbox/classes/host.rb +37 -164
  91. data/lib/virtualbox/classes/host_network_interface.rb +19 -69
  92. data/lib/virtualbox/classes/host_usb_device.rb +1 -4
  93. data/lib/virtualbox/classes/host_usb_device_filter.rb +1 -8
  94. data/lib/virtualbox/classes/host_video_input_device.rb +9 -0
  95. data/lib/virtualbox/classes/keyboard.rb +4 -20
  96. data/lib/virtualbox/classes/machine.rb +156 -908
  97. data/lib/virtualbox/classes/machine_debugger.rb +49 -0
  98. data/lib/virtualbox/classes/managed_object_ref.rb +2 -9
  99. data/lib/virtualbox/classes/medium.rb +42 -215
  100. data/lib/virtualbox/classes/medium_format.rb +5 -21
  101. data/lib/virtualbox/classes/mouse.rb +9 -28
  102. data/lib/virtualbox/classes/nat_engine.rb +14 -99
  103. data/lib/virtualbox/classes/nat_network.rb +25 -0
  104. data/lib/virtualbox/classes/network_adapter.rb +22 -163
  105. data/lib/virtualbox/classes/parallel_port.rb +5 -36
  106. data/lib/virtualbox/classes/pci_address.rb +12 -0
  107. data/lib/virtualbox/classes/performance_collector.rb +6 -42
  108. data/lib/virtualbox/classes/performance_metric.rb +8 -32
  109. data/lib/virtualbox/classes/process.rb +16 -60
  110. data/lib/virtualbox/classes/progress.rb +23 -101
  111. data/lib/virtualbox/classes/serial_port.rb +7 -52
  112. data/lib/virtualbox/classes/session.rb +5 -23
  113. data/lib/virtualbox/classes/shared_folder.rb +6 -24
  114. data/lib/virtualbox/classes/snapshot.rb +9 -35
  115. data/lib/virtualbox/classes/storage_controller.rb +10 -52
  116. data/lib/virtualbox/classes/system_properties.rb +38 -201
  117. data/lib/virtualbox/classes/token.rb +8 -0
  118. data/lib/virtualbox/classes/usb_controller.rb +3 -50
  119. data/lib/virtualbox/classes/usb_device.rb +12 -48
  120. data/lib/virtualbox/classes/usb_device_filter.rb +11 -88
  121. data/lib/virtualbox/classes/usb_device_filters.rb +11 -0
  122. data/lib/virtualbox/classes/vfs_explorer.rb +8 -42
  123. data/lib/virtualbox/classes/virtual_box.rb +48 -234
  124. data/lib/virtualbox/classes/virtual_box_error_info.rb +6 -21
  125. data/lib/virtualbox/classes/virtual_system_description.rb +6 -30
  126. data/lib/virtualbox/classes/vrde_server.rb +11 -72
  127. data/lib/virtualbox/classes/vrde_server_info.rb +15 -60
  128. data/lib/virtualbox/classes/websession_manager.rb +11 -11
  129. data/lib/virtualbox/configuration.rb +35 -0
  130. data/lib/virtualbox/exceptions.rb +28 -0
  131. data/lib/virtualbox/version.rb +3 -0
  132. data/lib/virtualbox/webservice.rb +105 -0
  133. data/lib/virtualbox-ws.rb +5 -1
  134. data/virtualbox-ws.gemspec +4 -1
  135. metadata +42 -5
  136. data/lib/virtualbox/classes/additions_facility.rb +0 -26
  137. data/lib/virtualbox/connection.rb +0 -68
@@ -0,0 +1,105 @@
1
+ require 'savon'
2
+
3
+
4
+ module VBox
5
+ module WebService
6
+ class << self
7
+ def connect
8
+ # Initialize configuration here in case if it was not initialized in client
9
+ self.configuration ||= Configuration.new
10
+
11
+ host = configuration.vboxweb_host
12
+ port = configuration.vboxweb_port
13
+ log_level = configuration.log_level
14
+ @logger = configuration.logger
15
+
16
+ # Savon XML logging
17
+ savon_debug = log_level == 'DEBUG'
18
+
19
+ endpoint = "http://#{host}:#{port}"
20
+ wsdl = endpoint + '/?wsdl'
21
+ @logger.info("VirtualBox SOAP web service endpoint: #{endpoint}")
22
+ @logger.info("VirtualBox SOAP web service WSDL: #{wsdl}")
23
+
24
+ # Create web service connection
25
+ @conn = Savon.client(:wsdl => wsdl, :endpoint => endpoint, :log => savon_debug, :pretty_print_xml => savon_debug)
26
+
27
+ # Check if we really connected to a VirtualBox SOAP web service
28
+ unless operations.include?(:i_websession_manager_logon)
29
+ @logger.fatal("Could not connect to VirtualBox SOAP Web Service at #{endpoint}. No VirtualBox SOAP service found")
30
+ raise NoWebServiceError.new(endpoint)
31
+ end
32
+ end
33
+
34
+ def operations
35
+ @conn.operations
36
+ end
37
+
38
+ def send_request(soap_method, soap_message)
39
+ @logger.info("Request operation: #{soap_method}")
40
+
41
+ # Filter out the password string
42
+ log_soap_message = soap_message.clone
43
+ if soap_method == :i_websession_manager_logon
44
+ log_soap_message[:password] = '<filtered>' if log_soap_message.has_key?(:password)
45
+ end
46
+
47
+ @logger.info("Request message: #{log_soap_message}")
48
+
49
+ begin
50
+ response = @conn.call(soap_method, :message => soap_message)
51
+ rescue Savon::SOAPFault => e
52
+ @logger.debug(e.message)
53
+ parse_soap_fault(e.message)
54
+ rescue Savon::HTTPError => e
55
+ @logger.error(e.message)
56
+ raise
57
+ end
58
+ parse_response(response)
59
+ end
60
+
61
+ def parse_soap_fault(message)
62
+ error_code = message.match(/0x[[:xdigit:]]+/)
63
+ if error_code.nil?
64
+ if message.match(/Validation constraint violation: data type mismatch in element <\S+>/).nil?
65
+ raise UnknownError, message
66
+ else
67
+ argument = message.match(/<\S+>/).to_s[1..-2].to_underscore
68
+ raise ArgumentError, "Argument #{argument} is of invalid data type"
69
+ end
70
+ else
71
+ error_message = message.split("(SOAP-ENV:Client) VirtualBox error: rc=#{error_code} ")[1].split(" (#{error_code})")[0]
72
+ raise UnknownError, message if error_message.nil?
73
+ argument = error_message.match(/\sa[A-Z]\S+\s/)
74
+ if argument.nil?
75
+ if error_message.match(/Method \S+ is not implemented/).nil?
76
+ raise Error, error_message
77
+ else
78
+ raise NotImplementedError, error_message
79
+ end
80
+ else
81
+ error_message.gsub!(argument.to_s.strip, argument.to_s.strip[1..-1].to_underscore).
82
+ gsub!(/\s\(must be .*\)/, '')
83
+ raise ArgumentError, error_message
84
+ end
85
+ end
86
+ end
87
+
88
+ def parse_response(response)
89
+ @logger.info("Response: #{response.body}")
90
+ response_struct = response.body[response.body.keys[0]]
91
+ if response_struct.nil?
92
+ nil
93
+ else
94
+ if response_struct.keys.length > 1
95
+ returnval = response_struct[:returnval].nil? || response_struct[:returnval]
96
+ response_struct.delete(:returnval)
97
+ [returnval, response_struct]
98
+ else
99
+ response_struct[:returnval]
100
+ end
101
+ end
102
+ end
103
+ end
104
+ end
105
+ end
data/lib/virtualbox-ws.rb CHANGED
@@ -1,3 +1,7 @@
1
1
  require 'require_all'
2
2
  require_rel 'core_ext'
3
- require_rel 'virtualbox'
3
+ require_rel 'virtualbox/configuration'
4
+ require_rel 'virtualbox/exceptions'
5
+ require_rel 'virtualbox/webservice'
6
+ require_rel 'virtualbox/base'
7
+ require_rel 'virtualbox/classes/websession_manager'
@@ -1,6 +1,9 @@
1
+ require './lib/virtualbox/version'
2
+
3
+
1
4
  Gem::Specification.new do |s|
2
5
  s.name = "virtualbox-ws"
3
- s.version = '0.0.3'
6
+ s.version = VBox::VERSION
4
7
  s.platform = Gem::Platform::RUBY
5
8
  s.authors = ['Andriy Yurchuk']
6
9
  s.email = ['ayurchuk@minuteware.net']
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: virtualbox-ws
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andriy Yurchuk
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-14 00:00:00.000000000 Z
11
+ date: 2013-11-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: require_all
@@ -55,7 +55,6 @@ files:
55
55
  - lib/core_ext/string.rb
56
56
  - lib/virtualbox-ws.rb
57
57
  - lib/virtualbox/base.rb
58
- - lib/virtualbox/classes/additions_facility.rb
59
58
  - lib/virtualbox/classes/appliance.rb
60
59
  - lib/virtualbox/classes/audio_adapter.rb
61
60
  - lib/virtualbox/classes/bandwidth_control.rb
@@ -65,6 +64,7 @@ files:
65
64
  - lib/virtualbox/classes/dhcp_server.rb
66
65
  - lib/virtualbox/classes/directory.rb
67
66
  - lib/virtualbox/classes/display.rb
67
+ - lib/virtualbox/classes/emulated_usb.rb
68
68
  - lib/virtualbox/classes/event.rb
69
69
  - lib/virtualbox/classes/event_listener.rb
70
70
  - lib/virtualbox/classes/event_source.rb
@@ -78,10 +78,29 @@ files:
78
78
  - lib/virtualbox/classes/events/event_source_changed_event.rb
79
79
  - lib/virtualbox/classes/events/extra_data_can_change_event.rb
80
80
  - lib/virtualbox/classes/events/extra_data_changed_event.rb
81
+ - lib/virtualbox/classes/events/guest_file_event.rb
82
+ - lib/virtualbox/classes/events/guest_file_io_event.rb
83
+ - lib/virtualbox/classes/events/guest_file_offset_changed_event.rb
84
+ - lib/virtualbox/classes/events/guest_file_read_event.rb
85
+ - lib/virtualbox/classes/events/guest_file_registered_event.rb
86
+ - lib/virtualbox/classes/events/guest_file_state_changed_event.rb
87
+ - lib/virtualbox/classes/events/guest_file_write_event.rb
81
88
  - lib/virtualbox/classes/events/guest_keyboard_event.rb
82
89
  - lib/virtualbox/classes/events/guest_monitor_changed_event.rb
83
90
  - lib/virtualbox/classes/events/guest_mouse_event.rb
91
+ - lib/virtualbox/classes/events/guest_multi_touch_event.rb
92
+ - lib/virtualbox/classes/events/guest_process_event.rb
93
+ - lib/virtualbox/classes/events/guest_process_input_notify_event.rb
94
+ - lib/virtualbox/classes/events/guest_process_io_event.rb
95
+ - lib/virtualbox/classes/events/guest_process_output_event.rb
96
+ - lib/virtualbox/classes/events/guest_process_registered_event.rb
97
+ - lib/virtualbox/classes/events/guest_process_state_changed_event.rb
84
98
  - lib/virtualbox/classes/events/guest_property_changed_event.rb
99
+ - lib/virtualbox/classes/events/guest_session_event.rb
100
+ - lib/virtualbox/classes/events/guest_session_registered_event.rb
101
+ - lib/virtualbox/classes/events/guest_session_state_changed_event.rb
102
+ - lib/virtualbox/classes/events/guest_user_state_changed_event.rb
103
+ - lib/virtualbox/classes/events/host_name_resolution_configuration_change_event.rb
85
104
  - lib/virtualbox/classes/events/host_pci_device_plug_event.rb
86
105
  - lib/virtualbox/classes/events/keyboard_leds_changed_event.rb
87
106
  - lib/virtualbox/classes/events/machine_data_changed_event.rb
@@ -92,6 +111,12 @@ files:
92
111
  - lib/virtualbox/classes/events/medium_registered_event.rb
93
112
  - lib/virtualbox/classes/events/mouse_capability_changed_event.rb
94
113
  - lib/virtualbox/classes/events/mouse_pointer_shape_changed_event.rb
114
+ - lib/virtualbox/classes/events/nat_network_alter_event.rb
115
+ - lib/virtualbox/classes/events/nat_network_changed_event.rb
116
+ - lib/virtualbox/classes/events/nat_network_creation_deletion_event.rb
117
+ - lib/virtualbox/classes/events/nat_network_port_forward_event.rb
118
+ - lib/virtualbox/classes/events/nat_network_setting_event.rb
119
+ - lib/virtualbox/classes/events/nat_network_start_stop_event.rb
95
120
  - lib/virtualbox/classes/events/nat_redirect_event.rb
96
121
  - lib/virtualbox/classes/events/network_adapter_changed_event.rb
97
122
  - lib/virtualbox/classes/events/parallel_port_changed_event.rb
@@ -112,9 +137,12 @@ files:
112
137
  - lib/virtualbox/classes/events/usb_device_state_changed_event.rb
113
138
  - lib/virtualbox/classes/events/v_box_svc_availability_chaged_event.rb
114
139
  - lib/virtualbox/classes/events/veto_event.rb
140
+ - lib/virtualbox/classes/events/video_capture_changed_event.rb
115
141
  - lib/virtualbox/classes/events/vrde_server_changed_event.rb
116
142
  - lib/virtualbox/classes/events/vrde_server_info_changed_event.rb
117
143
  - lib/virtualbox/classes/file.rb
144
+ - lib/virtualbox/classes/framebuffer.rb
145
+ - lib/virtualbox/classes/framebuffer_overlay.rb
118
146
  - lib/virtualbox/classes/fs_obj_info.rb
119
147
  - lib/virtualbox/classes/guest.rb
120
148
  - lib/virtualbox/classes/guest_directory.rb
@@ -126,15 +154,19 @@ files:
126
154
  - lib/virtualbox/classes/host_network_interface.rb
127
155
  - lib/virtualbox/classes/host_usb_device.rb
128
156
  - lib/virtualbox/classes/host_usb_device_filter.rb
157
+ - lib/virtualbox/classes/host_video_input_device.rb
129
158
  - lib/virtualbox/classes/keyboard.rb
130
159
  - lib/virtualbox/classes/machine.rb
160
+ - lib/virtualbox/classes/machine_debugger.rb
131
161
  - lib/virtualbox/classes/managed_object_ref.rb
132
162
  - lib/virtualbox/classes/medium.rb
133
163
  - lib/virtualbox/classes/medium_format.rb
134
164
  - lib/virtualbox/classes/mouse.rb
135
165
  - lib/virtualbox/classes/nat_engine.rb
166
+ - lib/virtualbox/classes/nat_network.rb
136
167
  - lib/virtualbox/classes/network_adapter.rb
137
168
  - lib/virtualbox/classes/parallel_port.rb
169
+ - lib/virtualbox/classes/pci_address.rb
138
170
  - lib/virtualbox/classes/performance_collector.rb
139
171
  - lib/virtualbox/classes/performance_metric.rb
140
172
  - lib/virtualbox/classes/process.rb
@@ -145,9 +177,11 @@ files:
145
177
  - lib/virtualbox/classes/snapshot.rb
146
178
  - lib/virtualbox/classes/storage_controller.rb
147
179
  - lib/virtualbox/classes/system_properties.rb
180
+ - lib/virtualbox/classes/token.rb
148
181
  - lib/virtualbox/classes/usb_controller.rb
149
182
  - lib/virtualbox/classes/usb_device.rb
150
183
  - lib/virtualbox/classes/usb_device_filter.rb
184
+ - lib/virtualbox/classes/usb_device_filters.rb
151
185
  - lib/virtualbox/classes/vfs_explorer.rb
152
186
  - lib/virtualbox/classes/virtual_box.rb
153
187
  - lib/virtualbox/classes/virtual_box_error_info.rb
@@ -155,7 +189,10 @@ files:
155
189
  - lib/virtualbox/classes/vrde_server.rb
156
190
  - lib/virtualbox/classes/vrde_server_info.rb
157
191
  - lib/virtualbox/classes/websession_manager.rb
158
- - lib/virtualbox/connection.rb
192
+ - lib/virtualbox/configuration.rb
193
+ - lib/virtualbox/exceptions.rb
194
+ - lib/virtualbox/version.rb
195
+ - lib/virtualbox/webservice.rb
159
196
  - virtualbox-ws.gemspec
160
197
  homepage: https://github.com/Ch00k/virtualbox-ws
161
198
  licenses:
@@ -177,7 +214,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
177
214
  version: '0'
178
215
  requirements: []
179
216
  rubyforge_project:
180
- rubygems_version: 2.1.4
217
+ rubygems_version: 2.0.6
181
218
  signing_key:
182
219
  specification_version: 4
183
220
  summary: Object-oriented VirtualBox SOAP API wrapper
@@ -1,26 +0,0 @@
1
- module VBox
2
- class AdditionsFacility < Base
3
-
4
- # Attributes
5
-
6
- def class_type
7
- VBox::WebService.send_request(:i_additions_facility_get_class_type, _this)
8
- end
9
-
10
- def last_updated
11
- VBox::WebService.send_request(:i_additions_facility_get_last_updated, _this)
12
- end
13
-
14
- def name
15
- VBox::WebService.send_request(:i_additions_facility_get_name, _this)
16
- end
17
-
18
- def status
19
- VBox::WebService.send_request(:i_additions_facility_get_status, _this)
20
- end
21
-
22
- def type
23
- VBox::WebService.send_request(:i_additions_facility_get_type, _this)
24
- end
25
- end
26
- end
@@ -1,68 +0,0 @@
1
- require 'savon'
2
-
3
-
4
- module VBox
5
- module WebService
6
- class << self
7
- def connect(args={})
8
- host = args[:host] || '127.0.0.1'
9
- port = args[:port] || '18083'
10
- debug = args[:debug] || false
11
- savon_debug = args[:savon_debug] || false
12
- endpoint = "http://#{host}:#{port}"
13
- wsdl = endpoint + '/?wsdl'
14
- @conn = Savon.client(:wsdl => wsdl, :endpoint => endpoint, :log => savon_debug, :pretty_print_xml => savon_debug)
15
- if @conn.operations.include?(:i_websession_manager_logon)
16
- @debug = debug
17
- @savon_debug = savon_debug
18
- true
19
- else
20
- raise "Could not connect to VirtualBox SOAP Web Service at #{endpoint} (No VirtualBox SOAP service found)"
21
- end
22
- rescue Errno::ECONNREFUSED
23
- raise "Could not connect to VirtualBox SOAP Web Service at #{endpoint} (Connection refused)"
24
- end
25
-
26
- def send_request(soap_method, soap_message)
27
- puts "DEBUG --- REQUEST: #{soap_method}, #{soap_message}" if @debug
28
- response = @conn.call(soap_method, :message => soap_message)
29
- parse_response(response)
30
- end
31
-
32
- def debug
33
- @debug
34
- end
35
-
36
- def debug=(debug)
37
- @debug = debug
38
- end
39
-
40
- def savon_debug
41
- @debug
42
- end
43
-
44
- def savon_debug=(savon_debug)
45
- @savon_debug = savon_debug
46
- @conn.globals[:log] = savon_debug
47
- @conn.globals[:pretty_print_xml] = savon_debug
48
- end
49
-
50
- private
51
- def parse_response(response)
52
- puts "DEBUG --- RESPONSE: #{response.body}" if @debug
53
- response_struct = response.body[response.body.keys[0]]
54
- if response_struct.nil?
55
- nil
56
- else
57
- if response_struct.keys.length > 1
58
- returnval = response_struct[:returnval]
59
- response_struct.delete(:returnval)
60
- [returnval, response_struct]
61
- else
62
- response_struct[:returnval]
63
- end
64
- end
65
- end
66
- end
67
- end
68
- end