akamai_ccu 1.3.4 → 1.3.5

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: 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