-
Notifications
You must be signed in to change notification settings - Fork 0
/
oneacct-client.rb
executable file
·70 lines (54 loc) · 2.15 KB
/
oneacct-client.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/usr/bin/env ruby
###########################################################################
## Licensed under the Apache License, Version 2.0 (the "License");
## you may not use this file except in compliance with the License.
## You may obtain a copy of the License at
##
## http://www.apache.org/licenses/LICENSE-2.0
##
## Unless required by applicable law or agreed to in writing, software
## distributed under the License is distributed on an "AS IS" BASIS,
## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
## See the License for the specific language governing permissions and
## limitations under the License.
###########################################################################
$: << File.dirname(__FILE__)
#
require 'rubygems'
require 'bundler/setup'
require 'json'
require 'optparse'
require 'nokogiri'
require 'lib/OneacctClient'
require 'lib/OptparseOneacctClient'
# test
begin
options = OptparseOneacctClient.parse(ARGV)
endpoint = options.protocol.to_s + "://" + options.hostname + ":" + options.port.to_s + options.path + options.format.to_s
client = OneacctClient.new(endpoint, options.username, options.password, options.timeout, options.debug)
case options.format
when :json
if options.for_user.nil? && options.to_time.nil? && options.from_time.nil?
json_data = JSON.parse client.get_all_accounting_data
else
json_data = JSON.parse client.get_specific_accoutning_data options.for_user, options.from_time, options.to_time
end
puts JSON.pretty_generate json_data
when :xml
if options.for_user.nil? && options.to_time.nil? && options.from_time.nil?
xml_data = Nokogiri.XML(client.get_all_accounting_data) do |config|
config.default_xml.noblanks
end
else
xml_data = Nokogiri.XML(client.get_specific_accoutning_data options.for_user, options.from_time, options.to_time) do |config|
config.default_xml.noblanks
end
end
puts xml_data.to_xml(:indent => 2)
else
raise "Unknown format!"
end
rescue Exception => e
puts "Failed to get a valid response from the server. " + e.message
exit 1
end