google-amp-cache 0.1.0 → 0.2.0
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/.gitignore +2 -2
- data/.travis.yml +8 -0
- data/CHANGELOG.md +5 -1
- data/Gemfile +2 -2
- data/Rakefile +5 -3
- data/bin/console +4 -3
- data/google-amp-cache.gemspec +16 -16
- data/lib/google/amp/cache.rb +3 -4
- data/lib/google/amp/cache/client.rb +58 -55
- data/lib/google/amp/cache/version.rb +3 -1
- metadata +24 -39
- data/Gemfile.lock +0 -39
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d60a5c719f46fb142aa641de52325d940b9ba48c6163295f75d0a88c6caed5a6
|
4
|
+
data.tar.gz: 675daf604e555c4b55a89dc6c692793cf0f7f40f39bd0204a4660cd5504ef9b6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e5f412b10a2c525c2a03f60c357aaba64991643102d99844547dfe83c89bfcf10098a40999c3bc129e9192a600fcf6de2580574d0705fbd6a3f7a92654725aa4
|
7
|
+
data.tar.gz: 4203a672620f38fbcd933ca6e09c1964669a6bda1ae33b0f1dd45fa81961cec7689454562d06ced56e75eb8f93008c556a6a49cc2196cab7e912e7592a735c36
|
data/.gitignore
CHANGED
data/.travis.yml
ADDED
data/CHANGELOG.md
CHANGED
@@ -6,8 +6,12 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
|
6
6
|
|
7
7
|
## [Unreleased]
|
8
8
|
|
9
|
+
## 0.2.0 - 2020-09-17
|
10
|
+
|
11
|
+
* Rewrite client to replace HTTParty with Faraday
|
12
|
+
* Format Ruby codes
|
13
|
+
|
9
14
|
## 0.1.0 - 2018-06-13
|
10
|
-
### Added
|
11
15
|
|
12
16
|
* Import the project with initial implementation.
|
13
17
|
|
data/Gemfile
CHANGED
data/Rakefile
CHANGED
@@ -1,9 +1,11 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'bundler/gem_tasks'
|
4
|
+
require 'rake/testtask'
|
3
5
|
|
4
6
|
Rake::TestTask.new do |t|
|
5
7
|
t.test_files = FileList['test/**/*_test.rb']
|
6
8
|
end
|
7
|
-
desc
|
9
|
+
desc 'Run tests'
|
8
10
|
|
9
11
|
task default: :test
|
data/bin/console
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
|
-
require
|
4
|
-
require
|
4
|
+
require 'bundler/setup'
|
5
|
+
require 'google/amp/cache'
|
5
6
|
|
6
7
|
# You can add fixtures and/or initialization code here to make experimenting
|
7
8
|
# with your gem easier. You can also use a different console, if you like.
|
@@ -10,5 +11,5 @@ require "google/amp/cache"
|
|
10
11
|
# require "pry"
|
11
12
|
# Pry.start
|
12
13
|
|
13
|
-
require
|
14
|
+
require 'irb'
|
14
15
|
IRB.start(__FILE__)
|
data/google-amp-cache.gemspec
CHANGED
@@ -1,31 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
|
2
|
-
lib = File.expand_path(
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require
|
5
|
+
require 'google/amp/cache/version'
|
5
6
|
|
6
7
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
8
|
+
spec.name = 'google-amp-cache'
|
8
9
|
spec.version = Google::AMP::Cache::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
10
|
+
spec.authors = ['Richard Lee']
|
11
|
+
spec.email = ['rl@polydice.com']
|
11
12
|
|
12
|
-
spec.summary =
|
13
|
+
spec.summary = 'A Ruby wrapper for Google AMP Cache API'
|
13
14
|
spec.description = spec.summary
|
14
|
-
spec.homepage =
|
15
|
-
spec.license =
|
15
|
+
spec.homepage = 'https://github.com/polydice/google-amp-cache'
|
16
|
+
spec.license = 'MIT'
|
16
17
|
|
17
18
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
18
19
|
f.match(%r{^(test|spec|features)/})
|
19
20
|
end
|
20
21
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
|
-
spec.require_paths = [
|
22
|
+
spec.require_paths = ['lib']
|
22
23
|
|
23
|
-
spec.add_runtime_dependency
|
24
|
-
spec.add_runtime_dependency
|
25
|
-
spec.add_runtime_dependency
|
24
|
+
spec.add_runtime_dependency 'faraday', '~> 1.0'
|
25
|
+
spec.add_runtime_dependency 'faraday_middleware', '~> 1.0'
|
26
|
+
spec.add_runtime_dependency 'rack'
|
26
27
|
|
27
|
-
spec.add_development_dependency
|
28
|
-
spec.add_development_dependency
|
29
|
-
spec.add_development_dependency
|
30
|
-
spec.add_development_dependency "minitest-reporters", "~> 1.2"
|
28
|
+
spec.add_development_dependency 'minitest', '~> 5.3'
|
29
|
+
spec.add_development_dependency 'minitest-reporters', '~> 1.2'
|
30
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
31
31
|
end
|
data/lib/google/amp/cache.rb
CHANGED
@@ -1,70 +1,73 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'faraday'
|
4
|
+
require 'faraday_middleware'
|
1
5
|
require 'base64'
|
2
|
-
require 'rack'
|
3
6
|
require 'uri'
|
7
|
+
require 'openssl'
|
4
8
|
|
5
|
-
module Google
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
+
module Google
|
10
|
+
module AMP
|
11
|
+
module Cache
|
12
|
+
class Client
|
13
|
+
UPDATE_CACHE_API_DOMAIN_SUFFIX = 'cdn.ampproject.org'
|
14
|
+
DIGEST = OpenSSL::Digest::SHA256.new
|
9
15
|
|
10
|
-
|
11
|
-
DIGEST = OpenSSL::Digest::SHA256.new
|
16
|
+
attr_reader :private_key, :google_api_key
|
12
17
|
|
13
|
-
|
18
|
+
def initialize(api_key = nil, private_key = nil)
|
19
|
+
@google_api_key = api_key
|
20
|
+
@private_key = OpenSSL::PKey::RSA.new(private_key) if private_key
|
21
|
+
end
|
14
22
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
23
|
+
def batch_get(urls, lookup_strategy = :FETCH_LIVE_DOC)
|
24
|
+
Faraday.new('https://acceleratedmobilepageurl.googleapis.com/',
|
25
|
+
headers: {
|
26
|
+
'X-Goog-Api-Key' => google_api_key
|
27
|
+
}) do |conn|
|
28
|
+
conn.request :json
|
29
|
+
conn.response :json
|
30
|
+
conn.response :raise_error
|
31
|
+
end.post('/v1/ampUrls:batchGet', {
|
32
|
+
urls: Array(urls),
|
33
|
+
lookupStrategy: lookup_strategy
|
34
|
+
}).body
|
35
|
+
end
|
19
36
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
urls: Array(urls),
|
24
|
-
lookupStrategy: lookup_strategy
|
25
|
-
}.to_json,
|
26
|
-
headers: {
|
27
|
-
'Content-Type' => 'application/json',
|
28
|
-
"X-Goog-Api-Key" => google_api_key
|
29
|
-
})
|
30
|
-
end
|
37
|
+
def update_cache(url, content_type = :document)
|
38
|
+
page_uri = URI.parse(url)
|
39
|
+
subdomain = format_domain(page_uri.host)
|
31
40
|
|
32
|
-
|
33
|
-
|
34
|
-
|
41
|
+
path_components = ['update-cache', short_content_type(content_type)]
|
42
|
+
path_components << 's' if page_uri.scheme.match?('https')
|
43
|
+
path_components << "#{page_uri.host}#{page_uri.path}"
|
44
|
+
path = path_components.join('/')
|
35
45
|
|
36
|
-
|
37
|
-
params = {
|
38
|
-
amp_action: 'flush',
|
39
|
-
amp_ts: Time.now.to_i
|
40
|
-
}
|
46
|
+
params = Faraday::Utils::ParamsHash[{ amp_action: 'flush', amp_ts: Time.now.to_i }]
|
41
47
|
|
42
|
-
|
43
|
-
|
44
|
-
signature = Base64.urlsafe_encode64(sig)
|
48
|
+
sig = private_key.sign(DIGEST, "/#{path}?#{params.to_query}")
|
49
|
+
params[:amp_url_signature] = Base64.urlsafe_encode64(sig)
|
45
50
|
|
46
|
-
|
47
|
-
|
48
|
-
|
51
|
+
Faraday.new("https://#{subdomain}.cdn.ampproject.org/") do |conn|
|
52
|
+
conn.response :raise_error
|
53
|
+
end.get(path, params).body
|
54
|
+
end
|
49
55
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
def format_domain(url)
|
62
|
-
url.gsub('-', '--').tr('.', '-')
|
63
|
-
end
|
56
|
+
def short_content_type(type)
|
57
|
+
case type.to_sym
|
58
|
+
when :document
|
59
|
+
'c'
|
60
|
+
when :image
|
61
|
+
'i'
|
62
|
+
when :resource
|
63
|
+
'r'
|
64
|
+
end
|
65
|
+
end
|
64
66
|
|
65
|
-
|
66
|
-
|
67
|
-
|
67
|
+
def format_domain(url)
|
68
|
+
url.gsub('-', '--').tr('.', '-')
|
69
|
+
end
|
70
|
+
end
|
68
71
|
end
|
69
72
|
end
|
70
|
-
end
|
73
|
+
end
|
metadata
CHANGED
@@ -1,43 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: google-amp-cache
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Richard Lee
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-09-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: faraday
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
19
|
+
version: '1.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1.
|
26
|
+
version: '1.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: faraday_middleware
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0
|
33
|
+
version: '1.0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0
|
40
|
+
version: '1.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rack
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -53,61 +53,47 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '1.16'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '1.16'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: rake
|
56
|
+
name: minitest
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
72
58
|
requirements:
|
73
59
|
- - "~>"
|
74
60
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
61
|
+
version: '5.3'
|
76
62
|
type: :development
|
77
63
|
prerelease: false
|
78
64
|
version_requirements: !ruby/object:Gem::Requirement
|
79
65
|
requirements:
|
80
66
|
- - "~>"
|
81
67
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
68
|
+
version: '5.3'
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
|
-
name: minitest
|
70
|
+
name: minitest-reporters
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
86
72
|
requirements:
|
87
73
|
- - "~>"
|
88
74
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
75
|
+
version: '1.2'
|
90
76
|
type: :development
|
91
77
|
prerelease: false
|
92
78
|
version_requirements: !ruby/object:Gem::Requirement
|
93
79
|
requirements:
|
94
80
|
- - "~>"
|
95
81
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
82
|
+
version: '1.2'
|
97
83
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
84
|
+
name: rake
|
99
85
|
requirement: !ruby/object:Gem::Requirement
|
100
86
|
requirements:
|
101
87
|
- - "~>"
|
102
88
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
89
|
+
version: '13.0'
|
104
90
|
type: :development
|
105
91
|
prerelease: false
|
106
92
|
version_requirements: !ruby/object:Gem::Requirement
|
107
93
|
requirements:
|
108
94
|
- - "~>"
|
109
95
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
96
|
+
version: '13.0'
|
111
97
|
description: A Ruby wrapper for Google AMP Cache API
|
112
98
|
email:
|
113
99
|
- rl@polydice.com
|
@@ -116,9 +102,9 @@ extensions: []
|
|
116
102
|
extra_rdoc_files: []
|
117
103
|
files:
|
118
104
|
- ".gitignore"
|
105
|
+
- ".travis.yml"
|
119
106
|
- CHANGELOG.md
|
120
107
|
- Gemfile
|
121
|
-
- Gemfile.lock
|
122
108
|
- LICENSE.txt
|
123
109
|
- README.md
|
124
110
|
- Rakefile
|
@@ -132,7 +118,7 @@ homepage: https://github.com/polydice/google-amp-cache
|
|
132
118
|
licenses:
|
133
119
|
- MIT
|
134
120
|
metadata: {}
|
135
|
-
post_install_message:
|
121
|
+
post_install_message:
|
136
122
|
rdoc_options: []
|
137
123
|
require_paths:
|
138
124
|
- lib
|
@@ -147,9 +133,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
147
133
|
- !ruby/object:Gem::Version
|
148
134
|
version: '0'
|
149
135
|
requirements: []
|
150
|
-
|
151
|
-
|
152
|
-
signing_key:
|
136
|
+
rubygems_version: 3.0.3
|
137
|
+
signing_key:
|
153
138
|
specification_version: 4
|
154
139
|
summary: A Ruby wrapper for Google AMP Cache API
|
155
140
|
test_files: []
|
data/Gemfile.lock
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
google-amp-cache (0.1.0)
|
5
|
-
httparty (>= 0.7.6)
|
6
|
-
multi_json (~> 1.3)
|
7
|
-
rack
|
8
|
-
|
9
|
-
GEM
|
10
|
-
remote: https://rubygems.org/
|
11
|
-
specs:
|
12
|
-
ansi (1.5.0)
|
13
|
-
builder (3.2.3)
|
14
|
-
httparty (0.16.2)
|
15
|
-
multi_xml (>= 0.5.2)
|
16
|
-
minitest (5.11.3)
|
17
|
-
minitest-reporters (1.2.0)
|
18
|
-
ansi
|
19
|
-
builder
|
20
|
-
minitest (>= 5.0)
|
21
|
-
ruby-progressbar
|
22
|
-
multi_json (1.13.1)
|
23
|
-
multi_xml (0.6.0)
|
24
|
-
rack (2.0.5)
|
25
|
-
rake (10.5.0)
|
26
|
-
ruby-progressbar (1.9.0)
|
27
|
-
|
28
|
-
PLATFORMS
|
29
|
-
ruby
|
30
|
-
|
31
|
-
DEPENDENCIES
|
32
|
-
bundler (~> 1.16)
|
33
|
-
google-amp-cache!
|
34
|
-
minitest (~> 5.3)
|
35
|
-
minitest-reporters (~> 1.2)
|
36
|
-
rake (~> 10.0)
|
37
|
-
|
38
|
-
BUNDLED WITH
|
39
|
-
1.16.1
|