akamai-client 0.0.1 → 0.0.2
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 +4 -4
- data/akamai-client.gemspec +2 -1
- data/lib/akamai/client.rb +3 -0
- data/lib/akamai/client/base.rb +1 -1
- data/lib/akamai/client/papi.rb +110 -16
- data/lib/akamai/client/version.rb +1 -1
- metadata +21 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 83d3c1559d84040821b32ad0a36b14f7df3e1bba
|
4
|
+
data.tar.gz: 037fddb50cf7407e84d33cabf0bed9968b318717
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e1a26dfab23daa2278d0250a59b134af662e7472c955373041860cd7acaafdd3b9a9945245cb4025a2dd09b63bae985e16afb27ba5db4b77962bd1a2a14e1fad
|
7
|
+
data.tar.gz: b9ab03e53c7ba08ee0cf36c171272cdab87a3a0b4ba5843202e9aed2b2b0e4bd69a88ce2aaacef4e52647c6ba644cc2aeca22f30a6cb61e1eb02c6d70dfc1de2
|
data/akamai-client.gemspec
CHANGED
@@ -29,7 +29,8 @@ Gem::Specification.new do |spec|
|
|
29
29
|
spec.bindir = "exe"
|
30
30
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
31
31
|
spec.require_paths = ["lib"]
|
32
|
-
spec.add_dependency "akamai-core-client", "
|
32
|
+
spec.add_dependency "akamai-core-client", ">= 0.0.6"
|
33
|
+
spec.add_dependency "activesupport", ">= 5.1.0"
|
33
34
|
|
34
35
|
spec.add_development_dependency "bundler", "~> 1.16"
|
35
36
|
spec.add_development_dependency "rake", "~> 10.0"
|
data/lib/akamai/client.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require "active_support"
|
2
|
+
require "active_support/core_ext"
|
1
3
|
require "akamai/client/version"
|
2
4
|
|
3
5
|
module Akamai
|
@@ -6,5 +8,6 @@ module Akamai
|
|
6
8
|
autoload :Base, "akamai/client/base"
|
7
9
|
autoload :Papi, "akamai/client/papi"
|
8
10
|
autoload :Ccu, "akamai/client/ccu"
|
11
|
+
autoload :Error, "akamai/client/error"
|
9
12
|
end
|
10
13
|
end
|
data/lib/akamai/client/base.rb
CHANGED
data/lib/akamai/client/papi.rb
CHANGED
@@ -16,46 +16,140 @@ module Akamai
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def list_products(contract_id)
|
19
|
-
get(:products,
|
19
|
+
get(:products, contract_id: contract_id)
|
20
20
|
end
|
21
21
|
|
22
22
|
def list_cp_codes(contract_id, group_id)
|
23
|
-
get(
|
24
|
-
:cpcodes,
|
25
|
-
{contract_id: contract_id, group_id: group_id}
|
26
|
-
)
|
23
|
+
get(:cpcodes, ontract_id: contract_id, group_id: group_id)
|
27
24
|
end
|
28
25
|
|
29
26
|
def list_properties(contract_id, group_id)
|
30
|
-
get(
|
31
|
-
|
32
|
-
|
27
|
+
get(:properties, contract_id: contract_id, group_id: group_id)
|
28
|
+
end
|
29
|
+
|
30
|
+
def list_property_versions(property_id, options = {})
|
31
|
+
path = build_full_path(
|
32
|
+
"properties/#{property_id}/versions", options
|
33
|
+
)
|
34
|
+
response = client.get(path)
|
35
|
+
transform_to_snakecase(
|
36
|
+
response.body[:versions][:items]
|
33
37
|
)
|
34
38
|
end
|
35
39
|
|
36
40
|
def get_property(property_id, contract_id, group_id)
|
37
41
|
get(
|
38
|
-
"properties/#{property_id}",
|
39
|
-
{contract_id: contract_id, group_id: group_id}
|
42
|
+
"properties/#{property_id}", contract_id: contract_id, group_id: group_id
|
40
43
|
)
|
41
44
|
end
|
42
45
|
|
43
|
-
def get_rule_tree(property_id, version,
|
46
|
+
def get_rule_tree(property_id, version, options = {})
|
44
47
|
path = build_full_path(
|
45
48
|
"properties/#{property_id}/versions/#{version}/rules",
|
46
|
-
|
49
|
+
options
|
47
50
|
)
|
48
51
|
response = client.get(path)
|
49
52
|
transform_to_snakecase(
|
50
|
-
response.body
|
53
|
+
response.body
|
51
54
|
)
|
52
55
|
end
|
53
56
|
|
54
57
|
def get_custom_behavior(behavior_id)
|
55
|
-
get(
|
56
|
-
|
57
|
-
|
58
|
+
get("custom-behaviors", behavior_id: behavior_id)
|
59
|
+
end
|
60
|
+
|
61
|
+
def get_property_version(property_id, version, options = {})
|
62
|
+
path = build_full_path(
|
63
|
+
"properties/#{property_id}/versions/#{version}",
|
64
|
+
options
|
65
|
+
)
|
66
|
+
response = client.get(path)
|
67
|
+
transform_to_snakecase(
|
68
|
+
response.body[:versions][:items]
|
69
|
+
)[0]
|
70
|
+
end
|
71
|
+
|
72
|
+
def get_latest_property_version(property_id, options = {})
|
73
|
+
path = build_full_path(
|
74
|
+
"properties/#{property_id}/versions/latest",
|
75
|
+
options
|
58
76
|
)
|
77
|
+
client.get(path).body.to_hash["versionLink"].split("/")[-1].to_i
|
78
|
+
end
|
79
|
+
|
80
|
+
def create_property_version(property_id, from_version, from_etag, options = {})
|
81
|
+
path = build_full_path(
|
82
|
+
"properties/#{property_id}/versions",
|
83
|
+
options
|
84
|
+
)
|
85
|
+
body = { createFromVersion: from_version, createFromVersionEtag: from_etag }.to_json
|
86
|
+
client.post(path, body).body.to_hash["versionLink"].split("/")[-1].to_i
|
87
|
+
end
|
88
|
+
|
89
|
+
def create_new_activation(params, options = {})
|
90
|
+
path = build_full_path(
|
91
|
+
"properties/#{params[:property_id]}/activations",
|
92
|
+
options
|
93
|
+
)
|
94
|
+
body = {
|
95
|
+
notifyEmails: params[:notify_emails] ? params[:notify_emails] : [],
|
96
|
+
network: params[:network], propertyVersion: params[:version],
|
97
|
+
note: params[:note] ? params[:note] : "", acknowledgeWarnings: []
|
98
|
+
}
|
99
|
+
retry_create_activation(path, body)
|
100
|
+
end
|
101
|
+
|
102
|
+
def update_rule_tree(property_id, version, rules, options = {})
|
103
|
+
path = build_full_path(
|
104
|
+
"properties/#{property_id}/versions/#{version}/rules",
|
105
|
+
options
|
106
|
+
)
|
107
|
+
body = { rules: rules }.to_json
|
108
|
+
client.put(path, body)
|
109
|
+
end
|
110
|
+
|
111
|
+
def add_rule(params, options = {})
|
112
|
+
params_indiff = params.with_indifferent_access
|
113
|
+
rules = get_rule_tree(params_indiff[:property_id], params_indiff[:version], options)[:rules]
|
114
|
+
unless params_indiff[:parent_node].blank?
|
115
|
+
return add_rule_to_sub_node(params_indiff, rules, options)
|
116
|
+
end
|
117
|
+
rules[:children] << params_indiff[:rule]
|
118
|
+
update_rule_tree(params_indiff[:property_id], params_indiff[:version], rules, options)
|
119
|
+
end
|
120
|
+
|
121
|
+
private
|
122
|
+
|
123
|
+
def add_rule_to_sub_node(params, rules, options)
|
124
|
+
separator = params[:separator] ? params[:separator] : ":"
|
125
|
+
target_nodes = rules[:children]
|
126
|
+
params[:parent_node].split(separator).each do |node|
|
127
|
+
target_nodes = find_node(node, target_nodes)
|
128
|
+
end
|
129
|
+
raise(Error::DuplicateError) if target_nodes.select do |child|
|
130
|
+
child[:name] == params[:rule][:name]
|
131
|
+
end.present?
|
132
|
+
target_nodes << params[:rule]
|
133
|
+
update_rule_tree(params[:property_id], params[:version], rules, options)
|
134
|
+
end
|
135
|
+
|
136
|
+
def find_node(node, nodes)
|
137
|
+
parenet_node = nodes.select do |child|
|
138
|
+
child[:name] == node
|
139
|
+
end
|
140
|
+
raise(Error::NoExistError) if parenet_node.blank?
|
141
|
+
parenet_node[0][:children]
|
142
|
+
end
|
143
|
+
|
144
|
+
def retry_create_activation(path, body, retry_num = 1)
|
145
|
+
client.post(path, body.to_json)
|
146
|
+
rescue Akamai::Core::Client::Error::AkamaiError => e
|
147
|
+
raise(e) unless retry_num.positive?
|
148
|
+
e.body[:warnings].each do |warning|
|
149
|
+
body[:acknowledgeWarnings] << warning[:messageId]
|
150
|
+
end
|
151
|
+
retry_num -= 1
|
152
|
+
retry
|
59
153
|
end
|
60
154
|
|
61
155
|
def base_path
|
metadata
CHANGED
@@ -1,29 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: akamai-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Akito Ueno
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-12-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: akamai-core-client
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.0.
|
19
|
+
version: 0.0.6
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.0.6
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activesupport
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 5.1.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
25
39
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
40
|
+
version: 5.1.0
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: bundler
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -112,7 +126,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
112
126
|
version: '0'
|
113
127
|
requirements: []
|
114
128
|
rubyforge_project:
|
115
|
-
rubygems_version: 2.6.
|
129
|
+
rubygems_version: 2.6.11
|
116
130
|
signing_key:
|
117
131
|
specification_version: 4
|
118
132
|
summary: Akamai client for several services.
|