percy-common 3.0.2 → 3.1.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: 9fd27d7a6c0fa5188832abb43534aef2681d8dae719b823dbed82bdbd2c40f85
4
- data.tar.gz: '08d2f567ecf0ef5b70772f9b5080d48dea45461ace3245fb729f0c00f8e4c028'
3
+ metadata.gz: fe94763bb303e12d788d293e1b2a1947fccfb61a1334a04c71179f99590ab639
4
+ data.tar.gz: 113a9533d5286c9753d21df7d631b2f6c64601680cd698db5600503d9e638c23
5
5
  SHA512:
6
- metadata.gz: a6b81c030ef1251a4440508ad153fb567a738f0a84c98ec922db41fcc24c628c7a9d4c67372f03973fb169015158f1639b80a9919cd94e6c295106287006c3f7
7
- data.tar.gz: 4b4f7eb6f01b10fb3625696c672cd5b45c498a5c975dd27b52d5258c60730f6326d25fc9057c733d01ea4aaeeed2787ef641d11182f64f10581ca75e9695c779
6
+ metadata.gz: 6ea47390164289c6a3402ce8f108f19ba698a69d1b2fb50dcaa58d12961ab10c18a74e1d54ed47e268a827b9851986136766ab436397b5bf475d690631a65f09
7
+ data.tar.gz: 1ae7c46e24ff481bb6d986d0cdfdca18450c27b350cb89d0938cd54101f4fc8f8edcd518220b64339edbb14b9846beb7390bffab59f2c94100350614ca736f24
@@ -9,3 +9,7 @@ inherit_mode:
9
9
  RSpec/DescribeClass:
10
10
  Exclude:
11
11
  - spec/percy/logger_spec.rb
12
+
13
+ AllCops:
14
+ Exclude:
15
+ - spec/support/redis_mock.rb
@@ -1,5 +1,5 @@
1
1
  module Percy
2
2
  module Common
3
- VERSION = '3.0.2'.freeze
3
+ VERSION = '3.1.0'.freeze
4
4
  end
5
5
  end
@@ -3,6 +3,7 @@ require 'logger'
3
3
  module Percy
4
4
  def self.logger
5
5
  return @logger if defined?(@logger)
6
+
6
7
  @logger ||= Logger.new(STDOUT)
7
8
  @logger.level = Logger::INFO if ENV['PERCY_ENV'] == 'production'
8
9
  @logger.formatter = proc do |severity, _datetime, _progname, msg|
@@ -0,0 +1,80 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'redis'
4
+
5
+ module Percy
6
+ class RedisClient
7
+ attr_reader :options
8
+ attr_reader :client
9
+
10
+ def initialize(options = {})
11
+ @options = options
12
+ @client = ::Redis.new(
13
+ options.merge(
14
+ ssl: ssl_enabled?,
15
+ ssl_params: ssl_params,
16
+ ),
17
+ )
18
+ end
19
+
20
+ private def ssl_enabled?
21
+ provided_url.to_s.start_with?('rediss://')
22
+ end
23
+
24
+ private def provided_url
25
+ options.dig(:url)
26
+ end
27
+
28
+ private def ssl_params
29
+ return {} unless ssl_enabled?
30
+
31
+ {
32
+ ca_file: certificate_authority_file,
33
+ cert: OpenSSL::X509::Certificate.new(client_certificate),
34
+ key: OpenSSL::PKey::RSA.new(private_key),
35
+ }
36
+ end
37
+
38
+ private def client_certificate
39
+ ENV.fetch(
40
+ 'REDIS_SSL_CLIENT_CERTIFICATE',
41
+ File.read(client_certificate_path),
42
+ )
43
+ end
44
+
45
+ private def client_certificate_path
46
+ ENV.fetch(
47
+ 'REDIS_SSL_CLIENT_CERTIFICATE_PATH',
48
+ File.join(cert_path, 'user.crt'),
49
+ )
50
+ end
51
+
52
+ private def private_key
53
+ ENV.fetch(
54
+ 'REDIS_SSL_PRIVATE_KEY',
55
+ File.read(private_key_path),
56
+ )
57
+ end
58
+
59
+ private def private_key_path
60
+ ENV.fetch(
61
+ 'REDIS_SSL_PRIVATE_KEY_PATH',
62
+ File.join(cert_path, 'user_private.key'),
63
+ )
64
+ end
65
+
66
+ private def certificate_authority_file
67
+ ENV.fetch(
68
+ 'REDIS_SSL_CERTIFICATE_AUTHORITY_PATH',
69
+ File.join(cert_path, 'server_ca.pem'),
70
+ )
71
+ end
72
+
73
+ private def cert_path
74
+ ENV.fetch(
75
+ 'REDIS_SSL_CERTIFICATE_PATH',
76
+ File.expand_path('../../redis', __dir__),
77
+ )
78
+ end
79
+ end
80
+ end
@@ -1,5 +1,4 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ lib = File.expand_path('lib', __dir__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
3
  require 'percy/common/version'
5
4
 
@@ -9,19 +8,22 @@ Gem::Specification.new do |spec|
9
8
  spec.authors = ['Perceptual Inc.']
10
9
  spec.email = ['team@percy.io']
11
10
 
12
- spec.summary = %q{Server-side common library for Percy.}
13
- spec.description = %q{}
11
+ spec.summary = 'Server-side common library for Percy.'
12
+ spec.description = ''
14
13
  spec.homepage = ''
15
14
 
16
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
15
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
16
+ f.match(/^(test|spec|features)\//)
17
+ end
17
18
  spec.require_paths = ['lib']
18
19
 
19
20
  spec.add_dependency 'dogstatsd-ruby', '~> 4.4.0'
20
21
  spec.add_dependency 'excon', '~> 0.57'
22
+ spec.add_dependency 'redis', '~> 4.1.3'
21
23
 
22
- spec.add_development_dependency 'bundler', '~> 2.0.2'
23
- spec.add_development_dependency 'rake', '~> 12.3'
24
- spec.add_development_dependency 'rspec', '~> 3.2'
24
+ spec.add_development_dependency 'bundler', '~> 2.1.4'
25
25
  spec.add_development_dependency 'guard-rspec', '~> 4.7'
26
26
  spec.add_development_dependency 'percy-style', '~> 0.6.0'
27
+ spec.add_development_dependency 'rake', '~> 12.3'
28
+ spec.add_development_dependency 'rspec', '~> 3.2'
27
29
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: percy-common
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.2
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Perceptual Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-11 00:00:00.000000000 Z
11
+ date: 2020-04-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dogstatsd-ruby
@@ -38,76 +38,90 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0.57'
41
+ - !ruby/object:Gem::Dependency
42
+ name: redis
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 4.1.3
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 4.1.3
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: bundler
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - "~>"
46
60
  - !ruby/object:Gem::Version
47
- version: 2.0.2
61
+ version: 2.1.4
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
- version: 2.0.2
68
+ version: 2.1.4
55
69
  - !ruby/object:Gem::Dependency
56
- name: rake
70
+ name: guard-rspec
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
73
  - - "~>"
60
74
  - !ruby/object:Gem::Version
61
- version: '12.3'
75
+ version: '4.7'
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
80
  - - "~>"
67
81
  - !ruby/object:Gem::Version
68
- version: '12.3'
82
+ version: '4.7'
69
83
  - !ruby/object:Gem::Dependency
70
- name: rspec
84
+ name: percy-style
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
87
  - - "~>"
74
88
  - !ruby/object:Gem::Version
75
- version: '3.2'
89
+ version: 0.6.0
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
94
  - - "~>"
81
95
  - !ruby/object:Gem::Version
82
- version: '3.2'
96
+ version: 0.6.0
83
97
  - !ruby/object:Gem::Dependency
84
- name: guard-rspec
98
+ name: rake
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
101
  - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: '4.7'
103
+ version: '12.3'
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
108
  - - "~>"
95
109
  - !ruby/object:Gem::Version
96
- version: '4.7'
110
+ version: '12.3'
97
111
  - !ruby/object:Gem::Dependency
98
- name: percy-style
112
+ name: rspec
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - "~>"
102
116
  - !ruby/object:Gem::Version
103
- version: 0.6.0
117
+ version: '3.2'
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
122
  - - "~>"
109
123
  - !ruby/object:Gem::Version
110
- version: 0.6.0
124
+ version: '3.2'
111
125
  description: ''
112
126
  email:
113
127
  - team@percy.io
@@ -132,6 +146,7 @@ files:
132
146
  - lib/percy/logger.rb
133
147
  - lib/percy/network_helpers.rb
134
148
  - lib/percy/process_helpers.rb
149
+ - lib/percy/redis_client.rb
135
150
  - lib/percy/stats.rb
136
151
  - percy-common.gemspec
137
152
  homepage: ''
@@ -152,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
152
167
  - !ruby/object:Gem::Version
153
168
  version: '0'
154
169
  requirements: []
155
- rubygems_version: 3.0.4
170
+ rubygems_version: 3.1.2
156
171
  signing_key:
157
172
  specification_version: 4
158
173
  summary: Server-side common library for Percy.