virtualbox-ws 0.0.3 → 0.0.5

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.
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