sun_gem 0.1.9 → 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
  SHA1:
3
- metadata.gz: 41419ce67fce06aaf5aae82f85066bc22a9c5d42
4
- data.tar.gz: e8da3321d149768b9c8874e7afe01a34a23b5f8d
3
+ metadata.gz: 2cb2f2ca3a3ae4ccad695cc480e6f9d258b6f52d
4
+ data.tar.gz: 02df19050a2334ca8f2eb6e6b8b3911d6e5c1c0b
5
5
  SHA512:
6
- metadata.gz: 87092eec6a48f4eb0dd8b4cef3a247bde4c39558ac8b9e9ec36e29c3e9df275d2fc4cc060128b1ebdb66198bc0d69c65154c8571ca9241f40ab4c672e19b20c3
7
- data.tar.gz: 30b2b8a5b34eb2df21fa977cba657b5b9218a538dfbb054770c8b892dea97b1768534357f4a98e68589b0071b318a7a6584464ee309c7f143759ba93e63be622
6
+ metadata.gz: 4742349262585863238f9d41dba82bdfff36fbcc9ae988f14088bceecc253117673946c89a32d7c283faae7d3be058529bdb50777af04e0cbb96a5284de5eb04
7
+ data.tar.gz: 8aad8d4484b78b782294a4c9ed8d6e68321d0aa971dc806a1d3c35a9d5e294ef950490136378203b950bfc95bf0a4f151e14f5311a41e88cf6eac6cd15fbc2dd
@@ -1,3 +1,3 @@
1
1
  module SunGem
2
- VERSION = "0.1.9"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/sun_gem.rb CHANGED
@@ -2,6 +2,8 @@ require "sun_gem/version"
2
2
 
3
3
  module SunGem
4
4
  class << self
5
+ REQUIRED_KEYS = %w(access_key kind time)
6
+ TIMEOUT_MINUTES = 2
5
7
 
6
8
  def generate_signature(params)
7
9
  params = params.merge(secret_key: secret_key)
@@ -13,6 +15,20 @@ module SunGem
13
15
  data["secret_key"]
14
16
  end
15
17
 
18
+ def authenticate(signature, params, optional_params = {})
19
+ return false, 'invalid_parameter', 400 unless params[:signature]
20
+ required_params = params.slice(*REQUIRED_KEYS)
21
+ return false, 'invalid_parameter', 400 if required_params.size != REQUIRED_KEYS.size
22
+ return false, 'expired_signature', 400 if expired_signature?(required_params[:time])
23
+
24
+ server_signature = Digest::SHA1.hexdigest(convert_params(required_params.merge(optional_params).merge(secret_key: secret_key)))
25
+ if signature == server_signature
26
+ true
27
+ else
28
+ return false, 'invalid_signature', 400
29
+ end
30
+ end
31
+
16
32
  # def write_yml
17
33
  # data = 'secret_key: ""'
18
34
  # File.open("#{Rails.root}/config/sun_gem.yml", 'w') { |f|
@@ -23,9 +39,9 @@ module SunGem
23
39
 
24
40
  private
25
41
  #
26
- # def expired_signature?(time)
27
- # time.to_i < TIMEOUT_MINUTES.minutes.ago.to_i
28
- # end
42
+ def expired_signature?(time)
43
+ time.to_i < TIMEOUT_MINUTES.minutes.ago.to_i
44
+ end
29
45
  #
30
46
  def convert_params(params)
31
47
  params.sort.to_h.values.flatten.map { |e| e.is_a?(Hash) ? convert_params(e) : e }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sun_gem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - frozenapr