didata_cloud_sdk 0.3.1
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 +7 -0
- data/.gitignore +2 -0
- data/Gemfile +4 -0
- data/README.md +63 -0
- data/doc/Cloud-REST-API-v09-121313.pdf +0 -0
- data/doc/deprecated_sections.txt +21 -0
- data/doc/doc.txt +11201 -0
- data/doc/pagination-and-filtering.txt +24 -0
- data/doc/schemas.txt +10 -0
- data/doc/sections.txt +101 -0
- data/doc/urls.txt +101 -0
- data/lib/opsource/api/account.rb +13 -0
- data/lib/opsource/api/core.rb +127 -0
- data/lib/opsource/api/directory.rb +8 -0
- data/lib/opsource/api/image.rb +24 -0
- data/lib/opsource/api/network.rb +65 -0
- data/lib/opsource/api/report.rb +24 -0
- data/lib/opsource/api/server.rb +185 -0
- data/lib/opsource/api/vip.rb +125 -0
- data/lib/opsource/client.rb +91 -0
- data/lib/opsource/connection.rb +60 -0
- data/lib/opsource/exceptions.rb +14 -0
- data/lib/opsource/params.rb +62 -0
- data/lib/opsource/version.rb +22 -0
- data/lib/opsource/xml.rb +53 -0
- data/lib/opsource.rb +22 -0
- data/opsource.gemspec +27 -0
- metadata +157 -0
@@ -0,0 +1,125 @@
|
|
1
|
+
module Opsource::API
|
2
|
+
class VIP < Core
|
3
|
+
|
4
|
+
# Real Server section
|
5
|
+
def real_servers_list (network_id)
|
6
|
+
org_endpoint "/network/#{network_id}/realServer"
|
7
|
+
get
|
8
|
+
end
|
9
|
+
|
10
|
+
# Examples name = RealServer1, server_id = "415a7f70-1008-42a3-8375-5dcf52636cc5", in_service = true/false
|
11
|
+
def real_server_create (network_id, name, server_id, in_service)
|
12
|
+
org_endpoint "/network/#{network_id}/realServer"
|
13
|
+
xml_params(tag: "NewRealServer", schema: "vip", name: name, server_id: server_id, in_service: in_service)
|
14
|
+
post
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
def real_server_delete (network_id, rserver_id)
|
19
|
+
org_endpoint "/network/#{network_id}/realServer/#{rserver_id}?delete"
|
20
|
+
get
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
def real_server_modify (network_id, rserver_id, in_service)
|
25
|
+
org_endpoint "/network/#{network_id}/realServer/#{rserver_id}"
|
26
|
+
xml_params(in_service: in_service)
|
27
|
+
post
|
28
|
+
end
|
29
|
+
|
30
|
+
# Probe section
|
31
|
+
def probe_list (network_id)
|
32
|
+
org_endpoint "/network/#{network_id}/probe"
|
33
|
+
get
|
34
|
+
end
|
35
|
+
|
36
|
+
# Note this is for TCP, UDP & ICMP only additional xml fields need to be added to be complete
|
37
|
+
# Examples name = Probe1, type = TCP, probeIntervalSeconds = "60", errorCountBeforeServerFail = "5" maxReplyWaitSeconds = "10"
|
38
|
+
def probe_create
|
39
|
+
org_endpoint "/network/#{network_id}/probe"
|
40
|
+
xml_params(name: name, type: type, probeIntervalSeconds: probeIntervalSeconds, errorCountBeforeServerFail: errorCountBeforeServerFail, successCountBeforeServerEnable: successCountBeforeServerEnable, failedProbeIntervalSeconds: failedProbeIntervalSeconds, maxReplyWaitSeconds: maxReplyWaitSeconds)
|
41
|
+
post
|
42
|
+
end
|
43
|
+
|
44
|
+
|
45
|
+
def probe_delete (network_id, probe_id)
|
46
|
+
org_endpoint "/network/#{network_id}/probe/{probe_id}?delete"
|
47
|
+
get
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
# Server Farm Section
|
52
|
+
def server_farm_list (network_id)
|
53
|
+
org_endpoint "/network/#{network_id}/serverFarm"
|
54
|
+
get
|
55
|
+
end
|
56
|
+
|
57
|
+
def server_farm_details (network_id, server_farm_id)
|
58
|
+
org_endpoint "/network/#{network_id}/serverFarm/#{server_farm_id}"
|
59
|
+
get
|
60
|
+
end
|
61
|
+
|
62
|
+
def server_farm_create (network_id, name, real_server_id, port, predictor)
|
63
|
+
if ["ROUND_ROBIN", "LEAST_CONNECTIONS"].include? predictor
|
64
|
+
org_endpoint "/network/#{network_id}/serverFarm"
|
65
|
+
xml_params(schema: "vip", tag: "NewServerFarm", name: name, predictor: predictor, real_server: {id: real_server_id, port: port})
|
66
|
+
post
|
67
|
+
else
|
68
|
+
raise "Unknown predictor: #{predictor}"
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def server_farm_delete (network_id, server_farm_id)
|
73
|
+
org_endpoint "/network/#{network_id}/serverFarm/#{server_farm_id}?delete"
|
74
|
+
get
|
75
|
+
end
|
76
|
+
|
77
|
+
# Examples realServerId = "RealServer1", realSeverPort = "80"
|
78
|
+
def real_server_to_server_farm (network_id, server_farm_id, real_server_id, real_server_port)
|
79
|
+
org_endpoint "/network/#{network_id}/serverFarm/#{server_farm_id}/addRealServer"
|
80
|
+
simple_params(real_server_id: real_server_id, real_server_port: real_server_port)
|
81
|
+
post_simple
|
82
|
+
end
|
83
|
+
|
84
|
+
# Examples realServerId = "RealServer1", realSeverPort = "80"
|
85
|
+
def real_server_from_server_farm (network_id, server_farm_id, real_server_id, real_server_port)
|
86
|
+
org_endpoint "/network/#{network_id}/serverFarm/#{server_farm_id}/removeRealServer"
|
87
|
+
simple_params(real_server_id: real_server_id, real_server_port: real_server_port)
|
88
|
+
post_simple
|
89
|
+
end
|
90
|
+
|
91
|
+
|
92
|
+
# Examples probe_id = TCP1
|
93
|
+
def probe_to_server_farm (network_id, server_farm_id, probe_id)
|
94
|
+
org_endpoint "/network/#{network_id}/serverFarm/#{server_farm_id}/addProbe"
|
95
|
+
xml_params(probe_id: probe_id)
|
96
|
+
post
|
97
|
+
end
|
98
|
+
|
99
|
+
# Examples probe_id = TCP1
|
100
|
+
def probe_from_server_farm (network_id, server_farm_id, probe_id)
|
101
|
+
org_endpoint "/network/#{network_id}/serverFarm/#{server_farm_id}/removeProbe"
|
102
|
+
xml_params(probe_id: probe_id)
|
103
|
+
post
|
104
|
+
end
|
105
|
+
|
106
|
+
# Examples predictor= LEAST_CONNECTIONS | ROUND_ROBIN
|
107
|
+
def server_farm_predictor(network_id, server_farm_id, predictor)
|
108
|
+
org_endpoint "/network/#{network_id}/serverFarm/#{server_farm_id}"
|
109
|
+
xml_params(predictor: predictor)
|
110
|
+
post
|
111
|
+
end
|
112
|
+
|
113
|
+
def vip_list(network_id)
|
114
|
+
org_endpoint "/network/#{network_id}/vip"
|
115
|
+
get
|
116
|
+
end
|
117
|
+
|
118
|
+
def vip_create(network_id, name, port, protocol, server_farm_id)
|
119
|
+
org_endpoint "/network/#{network_id}/vip"
|
120
|
+
xml_params(schema: "vip", tag: "NewVip", name: name, port: port, protocol: protocol, vip_target_type: "SERVER_FARM", vip_target_id: server_farm_id, reply_to_icmp: true, in_service: true)
|
121
|
+
post
|
122
|
+
end
|
123
|
+
|
124
|
+
end
|
125
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
module Opsource
|
2
|
+
class Client
|
3
|
+
include Opsource::Connection
|
4
|
+
include Opsource::Params
|
5
|
+
include Opsource::XML
|
6
|
+
|
7
|
+
attr_reader :api_base, :org_id, :username, :password
|
8
|
+
attr_reader :image, :directory, :network, :server, :account, :report
|
9
|
+
attr_reader :datacenter, :default_password
|
10
|
+
|
11
|
+
### FILTERS
|
12
|
+
# client.page_size = 10
|
13
|
+
# client.page_number = 1
|
14
|
+
# client.order_by = 'location,created.DESCENDING'
|
15
|
+
# client.filter_with = {location: %w(NA1 NA2), key: 'value'}
|
16
|
+
attr_accessor :silent, :colors # log setting
|
17
|
+
attr_accessor :page_size, :page_number, :order_by, :filter_with
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
def initialize(api_base, org_id, username, password, default_password="verysecurepassword", datacenter="EU1", colors = true, silent = false)
|
22
|
+
@api_base = api_base
|
23
|
+
@org_id = org_id
|
24
|
+
@username = username
|
25
|
+
@password = password
|
26
|
+
@datacenter = datacenter
|
27
|
+
@default_password = default_password
|
28
|
+
|
29
|
+
@colors = colors
|
30
|
+
@silent = silent
|
31
|
+
|
32
|
+
if @colors
|
33
|
+
require 'colorize'
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def directory
|
38
|
+
Opsource::API::Directory.new(self)
|
39
|
+
end
|
40
|
+
|
41
|
+
def image
|
42
|
+
Opsource::API::Image.new(self)
|
43
|
+
end
|
44
|
+
|
45
|
+
def network
|
46
|
+
Opsource::API::Network.new(self)
|
47
|
+
end
|
48
|
+
|
49
|
+
def server
|
50
|
+
Opsource::API::Server.new(self)
|
51
|
+
end
|
52
|
+
|
53
|
+
def account
|
54
|
+
Opsource::API::Account.new(self)
|
55
|
+
end
|
56
|
+
|
57
|
+
def report
|
58
|
+
Opsource::API::Report.new(self)
|
59
|
+
end
|
60
|
+
|
61
|
+
def vip
|
62
|
+
Opsource::API::VIP.new(self)
|
63
|
+
end
|
64
|
+
|
65
|
+
def filter_params
|
66
|
+
params = {}
|
67
|
+
params[:page_size] = @page_size if @page_size.present?
|
68
|
+
params[:page_number] = @page_number if @page_number.present?
|
69
|
+
params[:order_by] = @order_by if @order_by.present?
|
70
|
+
|
71
|
+
if @filter_with.present?
|
72
|
+
@filter_with.each do |k, val|
|
73
|
+
params[k.to_sym] = val
|
74
|
+
end
|
75
|
+
end
|
76
|
+
params
|
77
|
+
end
|
78
|
+
|
79
|
+
# mode: bold, underscore, default
|
80
|
+
def log(message, color = nil, mode = nil)
|
81
|
+
return if @silent
|
82
|
+
if @colors
|
83
|
+
color = color.to_sym if color
|
84
|
+
mode = mode.to_sym if mode
|
85
|
+
puts message.colorize(:color => color, :mode => mode)
|
86
|
+
else
|
87
|
+
puts message
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
module Opsource
|
2
|
+
module Connection
|
3
|
+
def build_request(type, endpoint, query = nil, body = nil, xml=true)
|
4
|
+
# url = "https://cloudapi.nttamerica.com/oec/0.9" + "/server"
|
5
|
+
uri = api_base + endpoint
|
6
|
+
append_query(uri, query) if query
|
7
|
+
|
8
|
+
if xml
|
9
|
+
request = Typhoeus::Request.new(
|
10
|
+
uri,
|
11
|
+
method: type,
|
12
|
+
body: body,
|
13
|
+
userpwd: "#{@username}:#{@password}",
|
14
|
+
headers: { 'Content-Type' =>'text/xml', 'User-Agent' => 'ACP Ruby SDK' }
|
15
|
+
)
|
16
|
+
else
|
17
|
+
request = Typhoeus::Request.new(
|
18
|
+
uri,
|
19
|
+
method: type,
|
20
|
+
body: body,
|
21
|
+
userpwd: "#{@username}:#{@password}",
|
22
|
+
headers: { 'User-Agent' => 'ACP Ruby SDK' }
|
23
|
+
)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def append_query(uri, query)
|
28
|
+
if uri.include?('?')
|
29
|
+
uri << '&'
|
30
|
+
else
|
31
|
+
uri << '?'
|
32
|
+
end
|
33
|
+
uri << query
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
def perform_request(request)
|
38
|
+
log "\nrequesting #{request.url}...", :yellow
|
39
|
+
request.run
|
40
|
+
end
|
41
|
+
|
42
|
+
def log_response(request, response)
|
43
|
+
if response.success?
|
44
|
+
log "...........success!", :yellow
|
45
|
+
elsif response.timed_out?
|
46
|
+
log "ERROR\n-----", :red
|
47
|
+
log "got a time out"
|
48
|
+
elsif response.code == 0
|
49
|
+
# Could not get an http response, something's wrong.
|
50
|
+
log "ERROR\n-----", :red
|
51
|
+
log response.return_message
|
52
|
+
else
|
53
|
+
# Received a non-successful http response.
|
54
|
+
log "ERROR\n-----", :red
|
55
|
+
log "HTTP request failed: " + response.code.to_s, :red
|
56
|
+
log response.body, :yellow
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Opsource
|
2
|
+
module Exceptions
|
3
|
+
CODES = {
|
4
|
+
"REASON_10" => "Failure at network",
|
5
|
+
"REASON_20" => "Unrecoverable failure cause by a timeout.",
|
6
|
+
"REASON_250" => "Network does not exist for this organization.",
|
7
|
+
"REASON_320" => "Invalid Input Data - SourceIP must be a valid IPv4 address."
|
8
|
+
}
|
9
|
+
|
10
|
+
class ApiError < StandardError; end
|
11
|
+
class ConnectionError < StandardError; end
|
12
|
+
class RequestError < StandardError; end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
module Opsource
|
2
|
+
module Params
|
3
|
+
def url_query(params)
|
4
|
+
params = camelize_keys(params)
|
5
|
+
qitems = []
|
6
|
+
params.each do |k, vs|
|
7
|
+
vs = [vs].flatten.compact # remove nil values
|
8
|
+
vs.each {|v| qitems << "#{k}=#{v}"}
|
9
|
+
end
|
10
|
+
qitems.join('&')
|
11
|
+
end
|
12
|
+
|
13
|
+
def symbolize_keys(arg)
|
14
|
+
case arg
|
15
|
+
when Array
|
16
|
+
arg.map { |elem| symbolize_keys elem }
|
17
|
+
when Hash
|
18
|
+
Hash[
|
19
|
+
arg.map { |key, value|
|
20
|
+
k = key.is_a?(String) ? key.to_sym : key
|
21
|
+
v = symbolize_keys value
|
22
|
+
[k,v]
|
23
|
+
}]
|
24
|
+
else
|
25
|
+
arg
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def underscore_keys(arg)
|
30
|
+
case arg
|
31
|
+
when Array
|
32
|
+
arg.map { |elem| underscore_keys elem }
|
33
|
+
when Hash
|
34
|
+
Hash[
|
35
|
+
arg.map { |key, value|
|
36
|
+
k = key.is_a?(String) ? key.underscore : key
|
37
|
+
v = underscore_keys value
|
38
|
+
[k,v]
|
39
|
+
}]
|
40
|
+
else
|
41
|
+
arg
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def camelize_keys(arg)
|
46
|
+
case arg
|
47
|
+
when Array
|
48
|
+
arg.map { |elem| camelize_keys elem }
|
49
|
+
when Hash
|
50
|
+
Hash[
|
51
|
+
arg.map { |key, value|
|
52
|
+
k = key.is_a?(String) ? key.camelize(:lower) : key
|
53
|
+
k = key.is_a?(Symbol) ? key.to_s.camelize(:lower).to_sym : key
|
54
|
+
v = camelize_keys value
|
55
|
+
[k,v]
|
56
|
+
}]
|
57
|
+
else
|
58
|
+
arg
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Opsource
|
2
|
+
VERSION = "0.3.1"
|
3
|
+
|
4
|
+
{"xmlns:ns3"=>"http://oec.api.opsource.net/schemas/organization",
|
5
|
+
"xmlns:ns4"=>"http://oec.api.opsource.net/schemas/network",
|
6
|
+
"xmlns:ns2"=>"http://oec.api.opsource.net/schemas/directory",
|
7
|
+
"xmlns:ns8"=>"http://oec.api.opsource.net/schemas/general",
|
8
|
+
"xmlns:ns7"=>"http://oec.api.opsource.net/schemas/datacenter",
|
9
|
+
"xmlns:ns6"=>"http://oec.api.opsource.net/schemas/whitelabel",
|
10
|
+
"xmlns:ns5"=>"http://oec.api.opsource.net/schemas/vip",
|
11
|
+
"xmlns:ns9"=>"http://oec.api.opsource.net/schemas/admin",
|
12
|
+
"natIp"=>["207.20.54.2"],
|
13
|
+
"xmlns"=>"http://oec.api.opsource.net/schemas/server",
|
14
|
+
"sourceIp"=>["10.166.152.201"],
|
15
|
+
"id"=>["ac371318-f755-4dc1-bbc3-51a1522ca2fe"],
|
16
|
+
"name"=>["10.166.152.201"],
|
17
|
+
"xmlns:ns11"=>"http://oec.api.opsource.net/schemas/reset",
|
18
|
+
"xmlns:ns10"=>"http://oec.api.opsource.net/schemas/multigeo",
|
19
|
+
"xmlns:ns13"=>"http://oec.api.opsource.net/schemas/storage",
|
20
|
+
"xmlns:ns12"=>"http://oec.api.opsource.net/schemas/support",
|
21
|
+
"xmlns:ns14"=>"http://oec.api.opsource.net/schemas/manualimport"}
|
22
|
+
end
|
data/lib/opsource/xml.rb
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
module Opsource
|
2
|
+
module XML
|
3
|
+
def xml_header
|
4
|
+
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' "\n"
|
5
|
+
end
|
6
|
+
|
7
|
+
def parse_response_xml_body(body)
|
8
|
+
# we'll not use 'KeyToSymbol' because it doesn't symbolize the keys for node attributes
|
9
|
+
opts = { 'ForceArray' => false, 'ForceContent' => false }
|
10
|
+
hash = XmlSimple.xml_in(body, opts)
|
11
|
+
hash.delete_if {|k, v| k =~ /(xmlns|xmlns:ns)/ } # removing the namespaces from response
|
12
|
+
Hashie::Mash.new(underscore_keys(hash))
|
13
|
+
rescue Exception => e
|
14
|
+
log "Impossible to convert XML to hash. Error: #{e.message}", :red
|
15
|
+
raise e
|
16
|
+
end
|
17
|
+
|
18
|
+
def build_request_simple_body(params)
|
19
|
+
params = camelize_keys(params)
|
20
|
+
#simple construction of post body...
|
21
|
+
body = params.map { |k, v| "#{k}=#{v}&" }
|
22
|
+
body.join
|
23
|
+
end
|
24
|
+
|
25
|
+
def build_request_xml_body(schema, tag, params)
|
26
|
+
params = camelize_keys(params)
|
27
|
+
schema_url = "http://oec.api.opsource.net/schemas/#{schema}"
|
28
|
+
|
29
|
+
xml = xml_header
|
30
|
+
xml += "<#{tag} xmlns=\"#{schema_url}\">\n"
|
31
|
+
params.each do |k, value|
|
32
|
+
|
33
|
+
xml += build_xml_helper(k, value)
|
34
|
+
xml += "\n"
|
35
|
+
end
|
36
|
+
xml += "</#{tag}>\n"
|
37
|
+
end
|
38
|
+
|
39
|
+
def build_xml_helper(key, value)
|
40
|
+
result = "<#{key}>"
|
41
|
+
if value.is_a?(Hash)
|
42
|
+
value.each do |k, v|
|
43
|
+
result += build_xml_helper(k,v)
|
44
|
+
end
|
45
|
+
else
|
46
|
+
result += "#{value}"
|
47
|
+
end
|
48
|
+
result += "</#{key}>"
|
49
|
+
result
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
end
|
data/lib/opsource.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'active_support/core_ext/object'
|
2
|
+
require 'active_support/core_ext/string'
|
3
|
+
require 'typhoeus'
|
4
|
+
require 'xmlsimple'
|
5
|
+
require 'hashie'
|
6
|
+
|
7
|
+
require './opsource/version.rb'
|
8
|
+
require './opsource/exceptions.rb'
|
9
|
+
|
10
|
+
require './opsource/connection.rb'
|
11
|
+
require './opsource/params.rb'
|
12
|
+
require './opsource/xml.rb'
|
13
|
+
require './opsource/client.rb'
|
14
|
+
|
15
|
+
require './opsource/api/core.rb'
|
16
|
+
require './opsource/api/directory.rb'
|
17
|
+
require './opsource/api/image.rb'
|
18
|
+
require './opsource/api/network.rb'
|
19
|
+
require './opsource/api/server.rb'
|
20
|
+
require './opsource/api/vip.rb'
|
21
|
+
require './opsource/api/account.rb'
|
22
|
+
require './opsource/api/report.rb'
|
data/opsource.gemspec
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "opsource/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "didata_cloud_sdk"
|
7
|
+
s.version = Opsource::VERSION
|
8
|
+
s.authors = ["Juozas Gaigalas", "Tim Wade", "Stijn Muylle"]
|
9
|
+
s.email = ["juozasgaigalas@gmail.com", "pimpingeezer@gmail.com", "stijnmuylle@gmail.com"]
|
10
|
+
s.homepage = ""
|
11
|
+
s.summary = %q{Dimension Data REST API client gem}
|
12
|
+
s.description = %q{SDK to access Dimension Data Cloud api'}
|
13
|
+
|
14
|
+
s.rubyforge_project = "opsource"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
s.add_dependency 'i18n'
|
22
|
+
s.add_dependency 'activesupport'
|
23
|
+
s.add_dependency 'typhoeus'
|
24
|
+
s.add_dependency 'xml-simple'
|
25
|
+
s.add_dependency 'hashie'
|
26
|
+
s.add_dependency 'colorize'
|
27
|
+
end
|
metadata
ADDED
@@ -0,0 +1,157 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: didata_cloud_sdk
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Juozas Gaigalas
|
8
|
+
- Tim Wade
|
9
|
+
- Stijn Muylle
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2014-12-03 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: i18n
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - '>='
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: '0'
|
29
|
+
- !ruby/object:Gem::Dependency
|
30
|
+
name: activesupport
|
31
|
+
requirement: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - '>='
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: '0'
|
36
|
+
type: :runtime
|
37
|
+
prerelease: false
|
38
|
+
version_requirements: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - '>='
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '0'
|
43
|
+
- !ruby/object:Gem::Dependency
|
44
|
+
name: typhoeus
|
45
|
+
requirement: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - '>='
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '0'
|
50
|
+
type: :runtime
|
51
|
+
prerelease: false
|
52
|
+
version_requirements: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - '>='
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0'
|
57
|
+
- !ruby/object:Gem::Dependency
|
58
|
+
name: xml-simple
|
59
|
+
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - '>='
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0'
|
64
|
+
type: :runtime
|
65
|
+
prerelease: false
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
- !ruby/object:Gem::Dependency
|
72
|
+
name: hashie
|
73
|
+
requirement: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
type: :runtime
|
79
|
+
prerelease: false
|
80
|
+
version_requirements: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - '>='
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
85
|
+
- !ruby/object:Gem::Dependency
|
86
|
+
name: colorize
|
87
|
+
requirement: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - '>='
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '0'
|
92
|
+
type: :runtime
|
93
|
+
prerelease: false
|
94
|
+
version_requirements: !ruby/object:Gem::Requirement
|
95
|
+
requirements:
|
96
|
+
- - '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
99
|
+
description: SDK to access Dimension Data Cloud api'
|
100
|
+
email:
|
101
|
+
- juozasgaigalas@gmail.com
|
102
|
+
- pimpingeezer@gmail.com
|
103
|
+
- stijnmuylle@gmail.com
|
104
|
+
executables: []
|
105
|
+
extensions: []
|
106
|
+
extra_rdoc_files: []
|
107
|
+
files:
|
108
|
+
- .gitignore
|
109
|
+
- Gemfile
|
110
|
+
- README.md
|
111
|
+
- doc/Cloud-REST-API-v09-121313.pdf
|
112
|
+
- doc/deprecated_sections.txt
|
113
|
+
- doc/doc.txt
|
114
|
+
- doc/pagination-and-filtering.txt
|
115
|
+
- doc/schemas.txt
|
116
|
+
- doc/sections.txt
|
117
|
+
- doc/urls.txt
|
118
|
+
- lib/opsource.rb
|
119
|
+
- lib/opsource/api/account.rb
|
120
|
+
- lib/opsource/api/core.rb
|
121
|
+
- lib/opsource/api/directory.rb
|
122
|
+
- lib/opsource/api/image.rb
|
123
|
+
- lib/opsource/api/network.rb
|
124
|
+
- lib/opsource/api/report.rb
|
125
|
+
- lib/opsource/api/server.rb
|
126
|
+
- lib/opsource/api/vip.rb
|
127
|
+
- lib/opsource/client.rb
|
128
|
+
- lib/opsource/connection.rb
|
129
|
+
- lib/opsource/exceptions.rb
|
130
|
+
- lib/opsource/params.rb
|
131
|
+
- lib/opsource/version.rb
|
132
|
+
- lib/opsource/xml.rb
|
133
|
+
- opsource.gemspec
|
134
|
+
homepage: ''
|
135
|
+
licenses: []
|
136
|
+
metadata: {}
|
137
|
+
post_install_message:
|
138
|
+
rdoc_options: []
|
139
|
+
require_paths:
|
140
|
+
- lib
|
141
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - '>='
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
147
|
+
requirements:
|
148
|
+
- - '>='
|
149
|
+
- !ruby/object:Gem::Version
|
150
|
+
version: '0'
|
151
|
+
requirements: []
|
152
|
+
rubyforge_project: opsource
|
153
|
+
rubygems_version: 2.4.5
|
154
|
+
signing_key:
|
155
|
+
specification_version: 4
|
156
|
+
summary: Dimension Data REST API client gem
|
157
|
+
test_files: []
|