google-amp-cache 0.1.0 → 0.2.0

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