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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e2029c53203e254334b2c265ceeeaebe12ee61e5bccd8ae537910d9eabd24e87
4
- data.tar.gz: c7a36a638dc5dc4a71959b58d41977e511c11ca18460327538171467ac9c0ea2
3
+ metadata.gz: d60a5c719f46fb142aa641de52325d940b9ba48c6163295f75d0a88c6caed5a6
4
+ data.tar.gz: 675daf604e555c4b55a89dc6c692793cf0f7f40f39bd0204a4660cd5504ef9b6
5
5
  SHA512:
6
- metadata.gz: ee6b103810ad6dc17b1bf2933906a6b4bd3bcc1efc65d8e55440995728c390bf783a46b5108004d04b3ac6646a9a86bbd37de5ffe67a9e48d7efad8dcd59928c
7
- data.tar.gz: ae3693004fec1e4f4b4da2e40f9172af5dd522ced079ae024206a9cd9881fb8ef860c864bce4b8ce3dd3df54ad5d5435d2f9084c484debde297d8dce949ef6a0
6
+ metadata.gz: e5f412b10a2c525c2a03f60c357aaba64991643102d99844547dfe83c89bfcf10098a40999c3bc129e9192a600fcf6de2580574d0705fbd6a3f7a92654725aa4
7
+ data.tar.gz: 4203a672620f38fbcd933ca6e09c1964669a6bda1ae33b0f1dd45fa81961cec7689454562d06ced56e75eb8f93008c556a6a49cc2196cab7e912e7592a735c36
data/.gitignore CHANGED
@@ -1,8 +1,8 @@
1
1
  /.bundle/
2
- /.yardoc
3
- /_yardoc/
2
+ /Gemfile.lock
4
3
  /coverage/
5
4
  /doc/
6
5
  /pkg/
7
6
  /spec/reports/
8
7
  /tmp/
8
+ /private-key.pem
@@ -0,0 +1,8 @@
1
+ language: ruby
2
+ sudo: false
3
+ cache: bundler
4
+ rvm:
5
+ - 2.7
6
+ - 2.6
7
+ - 2.5
8
+ - 2.4
@@ -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
@@ -1,6 +1,6 @@
1
- source "https://rubygems.org"
1
+ # frozen_string_literal: true
2
2
 
3
- git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
3
+ source 'https://rubygems.org'
4
4
 
5
5
  # Specify your gem's dependencies in google-amp-cache.gemspec
6
6
  gemspec
data/Rakefile CHANGED
@@ -1,9 +1,11 @@
1
- require "bundler/gem_tasks"
2
- require "rake/testtask"
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 "Run tests"
9
+ desc 'Run tests'
8
10
 
9
11
  task default: :test
@@ -1,7 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
- require "bundler/setup"
4
- require "google/amp/cache"
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 "irb"
14
+ require 'irb'
14
15
  IRB.start(__FILE__)
@@ -1,31 +1,31 @@
1
+ # frozen_string_literal: true
1
2
 
2
- lib = File.expand_path("../lib", __FILE__)
3
+ lib = File.expand_path('lib', __dir__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require "google/amp/cache/version"
5
+ require 'google/amp/cache/version'
5
6
 
6
7
  Gem::Specification.new do |spec|
7
- spec.name = "google-amp-cache"
8
+ spec.name = 'google-amp-cache'
8
9
  spec.version = Google::AMP::Cache::VERSION
9
- spec.authors = ["Richard Lee"]
10
- spec.email = ["rl@polydice.com"]
10
+ spec.authors = ['Richard Lee']
11
+ spec.email = ['rl@polydice.com']
11
12
 
12
- spec.summary = %q{A Ruby wrapper for Google AMP Cache API}
13
+ spec.summary = 'A Ruby wrapper for Google AMP Cache API'
13
14
  spec.description = spec.summary
14
- spec.homepage = "https://github.com/polydice/google-amp-cache"
15
- spec.license = "MIT"
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 = ["lib"]
22
+ spec.require_paths = ['lib']
22
23
 
23
- spec.add_runtime_dependency "multi_json", "~> 1.3"
24
- spec.add_runtime_dependency "httparty", ">= 0.7.6"
25
- spec.add_runtime_dependency "rack"
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 "bundler", "~> 1.16"
28
- spec.add_development_dependency "rake", "~> 10.0"
29
- spec.add_development_dependency "minitest", "~> 5.3"
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
@@ -1,5 +1,4 @@
1
- require "multi_json"
2
- require "httparty"
1
+ # frozen_string_literal: true
3
2
 
4
- require "google/amp/cache/version"
5
- require "google/amp/cache/client"
3
+ require 'google/amp/cache/version'
4
+ require 'google/amp/cache/client'
@@ -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::AMP::Cache
6
- class Client
7
- include HTTParty
8
- base_uri 'https://acceleratedmobilepageurl.googleapis.com/v1'
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
- UPDATE_CACHE_API_DOMAIN_SUFFIX = 'cdn.ampproject.org'
11
- DIGEST = OpenSSL::Digest::SHA256.new
16
+ attr_reader :private_key, :google_api_key
12
17
 
13
- attr_reader :private_key, :google_api_key
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
- def initialize(api_key = nil, private_key = nil)
16
- @google_api_key = api_key
17
- @private_key = OpenSSL::PKey::RSA.new(private_key) if private_key
18
- end
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
- def batch_get(urls, lookup_strategy = :FETCH_LIVE_DOC)
21
- post('/ampUrls:batchGet',
22
- body: {
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
- def update_cache(url, content_type = :document)
33
- page_uri = URI.parse(url)
34
- subdomain = format_domain(page_uri.host)
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
- api_host = URI.parse(["https://", subdomain, '.', UPDATE_CACHE_API_DOMAIN_SUFFIX].join)
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
- api_path = "/update-cache/#{short_content_type(content_type)}/#{'s/' if page_uri.scheme.match?('https')}#{page_uri.host}#{page_uri.path}?#{Rack::Utils.build_query(params)}"
43
- sig = private_key.sign(DIGEST, api_path)
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
- result = self.class.get("#{api_host}#{api_path}&amp_url_signature=#{signature}")
47
- result.ok?
48
- end
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
- def short_content_type(type)
51
- case type.to_sym
52
- when :document
53
- 'c'
54
- when :image
55
- 'i'
56
- when :resource
57
- 'r'
58
- end
59
- end
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
- def post(path, opts={})
66
- response = self.class.post(path, opts)
67
- response.parsed_response
67
+ def format_domain(url)
68
+ url.gsub('-', '--').tr('.', '-')
69
+ end
70
+ end
68
71
  end
69
72
  end
70
- end
73
+ end
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Google
2
4
  module AMP
3
5
  module Cache
4
- VERSION = "0.1.0"
6
+ VERSION = '0.2.0'
5
7
  end
6
8
  end
7
9
  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.1.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: 2018-06-13 00:00:00.000000000 Z
11
+ date: 2020-09-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: multi_json
14
+ name: faraday
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.3'
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.3'
26
+ version: '1.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: httparty
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.7.6
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.7.6
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: bundler
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: '10.0'
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: '10.0'
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: '5.3'
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: '5.3'
82
+ version: '1.2'
97
83
  - !ruby/object:Gem::Dependency
98
- name: minitest-reporters
84
+ name: rake
99
85
  requirement: !ruby/object:Gem::Requirement
100
86
  requirements:
101
87
  - - "~>"
102
88
  - !ruby/object:Gem::Version
103
- version: '1.2'
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: '1.2'
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
- rubyforge_project:
151
- rubygems_version: 2.7.3
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: []
@@ -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