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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a0871748bba8072e0eec602fc2908961e6dce4f3
4
- data.tar.gz: c0647d6f512fc33025e5be94777991d9d33f4e34
3
+ metadata.gz: 83d3c1559d84040821b32ad0a36b14f7df3e1bba
4
+ data.tar.gz: 037fddb50cf7407e84d33cabf0bed9968b318717
5
5
  SHA512:
6
- metadata.gz: ee495369cfaa6e03b104117771b4d33df42877af0847082f264dd69703627a11ce504eb7b49c1355818dea3bd96a7512b68b8880895356c3403b9a410f91e052
7
- data.tar.gz: ddf2bb738a142b7b7e521db69edcb69eab2897d03ef7a58cbb85d1adf8eaeef04f914f74a58fc7581c868c302668f6e1b7c98bd05c080f60a31bf0ce0c66ae5e
6
+ metadata.gz: e1a26dfab23daa2278d0250a59b134af662e7472c955373041860cd7acaafdd3b9a9945245cb4025a2dd09b63bae985e16afb27ba5db4b77962bd1a2a14e1fad
7
+ data.tar.gz: b9ab03e53c7ba08ee0cf36c171272cdab87a3a0b4ba5843202e9aed2b2b0e4bd69a88ce2aaacef4e52647c6ba644cc2aeca22f30a6cb61e1eb02c6d70dfc1de2
@@ -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", "~> 0.0.3"
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"
@@ -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
@@ -58,7 +58,7 @@ module Akamai
58
58
  break arr
59
59
  end
60
60
  else
61
- transform_hash(element)
61
+ transform_hash(data)
62
62
  end
63
63
  end
64
64
 
@@ -16,46 +16,140 @@ module Akamai
16
16
  end
17
17
 
18
18
  def list_products(contract_id)
19
- get(:products, {contract_id: contract_id})
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
- :properties,
32
- {contract_id: contract_id, group_id: group_id}
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, contract_id, group_id, options = {})
46
+ def get_rule_tree(property_id, version, options = {})
44
47
  path = build_full_path(
45
48
  "properties/#{property_id}/versions/#{version}/rules",
46
- {contract_id: contract_id, group_id: group_id}.merge(options)
49
+ options
47
50
  )
48
51
  response = client.get(path)
49
52
  transform_to_snakecase(
50
- response.body[:rules][:behaviors]
53
+ response.body
51
54
  )
52
55
  end
53
56
 
54
57
  def get_custom_behavior(behavior_id)
55
- get(
56
- :custom-behaviors,
57
- {behavior_id: behavior_id}
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
@@ -1,5 +1,5 @@
1
1
  module Akamai
2
2
  module Client
3
- VERSION = "0.0.1".freeze
3
+ VERSION = "0.0.2".freeze
4
4
  end
5
5
  end
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.1
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-24 00:00:00.000000000 Z
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.3
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: 0.0.3
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.13
129
+ rubygems_version: 2.6.11
116
130
  signing_key:
117
131
  specification_version: 4
118
132
  summary: Akamai client for several services.