akamai_ccu 1.3.4 → 1.3.5

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: e3d0a61d0f9ebed4ee01089a94de93ce8eca3f70
4
- data.tar.gz: 825989b16f621c573c37facbba7e31aacd3f8534
3
+ metadata.gz: b9fa4cc2e85f1f24463df9a860dc53e7cb9d10dc
4
+ data.tar.gz: e506e07a06b7fcbae8d48383ae8c6ccb0ba801e4
5
5
  SHA512:
6
- metadata.gz: 1ccb47292f48276e4e0c5b17577aca576ab0f701db0c15067af30a6c25f1cc9a814187b287550a5b74df7e0c878b890f00a0efd2d483cd3ae64812f888340059
7
- data.tar.gz: 2b81b1d97d34d5020e993896a00a6880f142b7a9aa2c94cf1d63420289d19f6b34303f7364b0c0200b25534f57895a614dbf8e194357b3f2c2cc1fa1cb96b240
6
+ metadata.gz: e03f6521b00e455d6f0a3ae3198793c8f8c05e4529087a78e603aa4ebfc1c6e4b331debde13a03d544bfca8ce7fbf8008d2b71f70ab35700588954fccd2794d0
7
+ data.tar.gz: 00647ebaec93f58dace7b572843a70516a879c8caa2b3de131272d87fe7d160b2086a01c2d6431d444e44ad3f1dd8d13fb78f17244d3c536d530fec2b575fe70
data/README.md CHANGED
@@ -4,15 +4,14 @@
4
4
  * [Motivation](#motivation)
5
5
  * [akamai-edgerid](#akamai-edgerid)
6
6
  * [Installation](#installation)
7
- * [Usage](#usage)
8
7
  * [Configuration](#configuration)
9
8
  * [edgerc](#edgerc)
10
9
  * [txt](#txt)
11
- * [Inside your script](#inside-your-script)
10
+ * [Usage](#usage)
11
+ * [As library](#as-library)
12
12
  * [Secret](#secret)
13
13
  * [Invalidating](#invalidating)
14
14
  * [Deleting](#deleting)
15
- * [Reuse client](#reuse-client)
16
15
  * [CLI](#cli)
17
16
  * [Help](#help)
18
17
  * [ccu_invalidate](#ccu_invalidate)
@@ -55,8 +54,6 @@ Or install it yourself as:
55
54
  gem install akamai_ccu
56
55
  ```
57
56
 
58
- ## Usage
59
-
60
57
  ### Configuration
61
58
  This gem requires you have a valid Akamai Luna Control Center account, enabled to use the CCU APIs.
62
59
  Akamai relies on a credentials file with three secret keys and a dedicated host for API authorization.
@@ -86,8 +83,10 @@ access_token = akab-access-token-xxx-xxx
86
83
  client_token = akab-client-token-xxx-xxx
87
84
  ```
88
85
 
89
- ### Inside your script
90
- You can obviously use the gem directly inside your Ruby's script:
86
+ ## Usage
87
+
88
+ ### As library
89
+ You can require the gem to use it as a library inside your scripts:
91
90
 
92
91
  #### Secret
93
92
  Once you've got APIs credentials, you can instantiate the secret object aimed to generate the authorization header:
@@ -104,8 +103,13 @@ secret = AkamaiCCU::Secret.by_txt("tokens.txt")
104
103
  secret = AkamaiCCU::Secret.new(client_secret: "xxx=", host: "akaa-baseurl-xxx-xxx.luna.akamaiapis.net/", access_token: "akab-access-token-xxx-xxx", client_token: "akab-client-token-xxx-xxx", max_body: 131072)
105
104
  ```
106
105
 
106
+ The next step is setting the `Wrapper` class with the secret object (Net client and secret will be shared by successive calls):
107
+ ```ruby
108
+ AkamaiCCU::Wrapper.setup(secret)
109
+ ```
110
+
107
111
  #### Invalidating
108
- The CCU V3 APIs allow for invalidating the contents by URL or content provider (CP) code:
112
+ The CCU V3 APIs allow for invalidating contents by URL or content provider (CP) code:
109
113
  ```ruby
110
114
  # invalidating resources on staging by url
111
115
  AkamaiCCU::Wrapper.invalidate_by_url(%w[https://akaa-baseurl-xxx-xxx.luna.akamaiapis.net/index.html], secret)
@@ -115,25 +119,13 @@ AkamaiCCU::Wrapper.invalidate_by_cpcode!([12345, 98765], secret)
115
119
  ```
116
120
 
117
121
  #### Deleting
118
- You can also delete the contents by URL or CP code, just be aware of the consequences:
122
+ You can also delete contents by URL or CP code (just be aware of what you're doing):
119
123
  ```ruby
120
124
  # deleting resources on staging by CP code
121
125
  AkamaiCCU::Wrapper.delete_by_cpcode([12345, 98765], secret)
122
126
 
123
127
  # deleting resources on production (mind the "!") by url
124
- AkamaiCCU::Wrapper.delete_by_url!(%w[https://akaa-baseurl-xxx-xxx.luna.akamaiapis.net/*.js], secret)
125
- ```
126
-
127
- #### Reuse client
128
- By default `Wrapper` class methods create a brand new Net::HTTP client on each call.
129
- If this is an issue for you, you can use the `Wrapper#call` instance method and update the `endpoint` collaborator to switch API:
130
- ```ruby
131
- wrapper = AkamaiCCU::Wrapper.new(secret: secret, endpoint: AkamaiCCU::Endpoint.by_name("invalidate_by_url"))
132
- wrapper.call(%w[https://akaa-baseurl-xxx-xxx.luna.akamaiapis.net/*.css])
133
-
134
- # switch to deleting on production
135
- wrapper.endpoint = AkamaiCCU::Endpoint.by_name("delete_by_cpcode!")
136
- wrapper.call([12345, 98765])
128
+ AkamaiCCU::Wrapper.delete_by_url!(%w[https://akaa-baseurl-xxx-xxx.luna.akamaiapis.net/main.js], secret)
137
129
  ```
138
130
 
139
131
  #### Response
@@ -166,7 +158,7 @@ Usage: invalidate --edgerc=./.edgerc --production --cp="12345, 98765"
166
158
  You can request for contents invalidation by calling:
167
159
  ```shell
168
160
  ccu_invalidate --edgerc=~/.edgerc \
169
- --url=https://akaa-baseurl-xxx-xxx.luna.akamaiapis.net/*.css,https://akaa-baseurl-xxx-xxx.luna.akamaiapis.net/*.js \
161
+ --url=https://akaa-baseurl-xxx-xxx.luna.akamaiapis.net/main.css,https://akaa-baseurl-xxx-xxx.luna.akamaiapis.net/main.js \
170
162
  --production
171
163
  ```
172
164
 
@@ -184,9 +176,9 @@ Just specify them on a separate file and use the bulk option:
184
176
 
185
177
  `urls.txt` file with each url/CP code specified on one line:
186
178
  ```txt
187
- https://akaa-baseurl-xxx-xxx.luna.akamaiapis.net/*.css
188
- https://akaa-baseurl-xxx-xxx.luna.akamaiapis.net/*.js
189
- https://akaa-baseurl-xxx-xxx.luna.akamaiapis.net/static/*.html
179
+ https://akaa-baseurl-xxx-xxx.luna.akamaiapis.net/main.css
180
+ https://akaa-baseurl-xxx-xxx.luna.akamaiapis.net/main.js
181
+ https://akaa-baseurl-xxx-xxx.luna.akamaiapis.net/static/index.html
190
182
  ```
191
183
 
192
184
  Specify the bulk option by using the file path:
@@ -230,7 +222,7 @@ This command will delete by CP codes:
230
222
  ```shell
231
223
  ccu_delete --txt=~/tokens.txt \
232
224
  --cp=12345,98765
233
- --url=https://akaa-baseurl-xxx-xxx.luna.akamaiapis.net/*.css,https://akaa-baseurl-xxx-xxx.luna.akamaiapis.net/*.js
225
+ --url=https://akaa-baseurl-xxx-xxx.luna.akamaiapis.net/main.css,https://akaa-baseurl-xxx-xxx.luna.akamaiapis.net/main.js
234
226
  ```
235
227
 
236
228
  ### Possible Issues
@@ -22,7 +22,8 @@ module AkamaiCCU
22
22
  return @logger.warn("specify contents to purge by bulk, CP codes or urls") unless @objects
23
23
  return @logger.warn("specify path to the secret file either by edgerc or by txt") unless @secret
24
24
  return @logger.warn("specified secret file does not exist") unless File.exist?(@secret)
25
- wrapper = @wrapper_klass.new(secret: secret, endpoint: endpoint, headers: Array(@headers))
25
+ @wrapper_klass.setup(secret)
26
+ wrapper = @wrapper_klass.new(endpoint: endpoint, headers: Array(@headers))
26
27
  @logger.info wrapper.call(@objects).to_s
27
28
  end
28
29
 
@@ -30,9 +30,10 @@ module AkamaiCCU
30
30
  end
31
31
  end
32
32
 
33
- attr_reader :host, :max_body
33
+ attr_reader :host, :max_body, :nonce, :timestamp
34
34
 
35
- def initialize(client_secret:, host:, access_token:, client_token:, max_body: 2048, nonce: SecureRandom.uuid, time: Time.now)
35
+ def initialize(client_secret:, host:, access_token:, client_token:,
36
+ max_body: 2048, nonce: SecureRandom.uuid, time: Time.now)
36
37
  @client_secret = client_secret
37
38
  @host = URI(host)
38
39
  @access_token = access_token
@@ -43,7 +44,9 @@ module AkamaiCCU
43
44
  end
44
45
 
45
46
  def touch
47
+ @nonce = SecureRandom.uuid
46
48
  @timestamp = AkamaiCCU.format_utc(Time.now)
49
+ self
47
50
  end
48
51
 
49
52
  def signed_key
@@ -1,3 +1,3 @@
1
1
  module AkamaiCCU
2
- VERSION = "1.3.4"
2
+ VERSION = "1.3.5"
3
3
  end
@@ -6,12 +6,19 @@ require "akamai_ccu/response"
6
6
  module AkamaiCCU
7
7
  class Wrapper
8
8
  class << self
9
+ attr_reader :secret, :client
10
+
11
+ def setup(secret, client_klass = Client)
12
+ @secret ||= secret
13
+ @client ||= client_klass.new(host: @secret.host)
14
+ end
15
+
9
16
  Endpoint::Network.constants.each do |network|
10
17
  Endpoint::Action.constants.each do |action|
11
18
  Endpoint::Mode.constants.each do |mode|
12
19
  endpoint = Endpoint.by_constants(network, action, mode)
13
- define_method(endpoint.to_s) do |objects, secret, headers = [], &block|
14
- wrapper = new(secret: secret, endpoint: endpoint, headers: headers)
20
+ define_method(endpoint.to_s) do |objects, headers = [], &block|
21
+ wrapper = new(endpoint: endpoint, headers: headers)
15
22
  block.call(wrapper) if block
16
23
  wrapper.call(objects)
17
24
  end
@@ -20,30 +27,21 @@ module AkamaiCCU
20
27
  end
21
28
  end
22
29
 
23
- attr_accessor :endpoint, :client_klass, :signer_klass, :response_klass
30
+ attr_accessor :signer_klass, :response_klass
24
31
 
25
- def initialize(secret:, endpoint:, headers: [],
26
- client_klass: Client, signer_klass: Signer, response_klass: Response)
27
- @secret = secret
32
+ def initialize(endpoint:, headers: [], signer_klass: Signer, response_klass: Response)
28
33
  @endpoint = endpoint
29
- @client_klass = client_klass
30
34
  @signer_klass = signer_klass
31
35
  @response_klass = response_klass
32
36
  @headers = headers
33
37
  end
34
38
 
35
- def call(objects = [])
36
- return if objects.empty?
37
- res = client.call(path: @endpoint.path) do |request|
39
+ def call(objects)
40
+ res = self.class.client.call(path: @endpoint.path) do |request|
38
41
  request.body = { objects: objects }.to_json
39
- @secret.touch
40
- @signer_klass.new(request, @secret, @headers).call!
42
+ @signer_klass.new(request, self.class.secret.touch, @headers).call!
41
43
  end
42
44
  response_klass.factory(res.body)
43
45
  end
44
-
45
- private def client
46
- @client ||= @client_klass.new(host: @secret.host)
47
- end
48
46
  end
49
47
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: akamai_ccu
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.4
4
+ version: 1.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - costajob