akamai-client 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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.