sun_gem 0.1.9 → 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
  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