mints 0.0.8 → 0.0.9

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: d5412170b7e05b67da59931e6af7972b56e329d302012392cfc9d97235e0b9de
4
- data.tar.gz: ba661a85b759c89e2e6c24b10509bd551a127ec46bf6861855352af474384eb3
3
+ metadata.gz: 91ef0909fa4361a6a3644378c438c64341bfbf31bc6d9ef7f0ed178bd35b5dac
4
+ data.tar.gz: 0a4c5c14a4550ac56917259ecc822d9afbe779e95507f9607c9248ce19c53caa
5
5
  SHA512:
6
- metadata.gz: 67cad01ac699e1c98f5498cbb4f50fce4195abb6fadced35326c9d5e6d9564d10a0d3b406873b43f67430e9b908409f93fcbae021f99bf1265d01f931ea83d3f
7
- data.tar.gz: d1bea2eac77eda19886a5e97c9c007137131192409036c1c87e36fefd569ccb36e00a40de621749d21f213e77f7899856f2b998187f321518917d9664dfb3899
6
+ metadata.gz: 1df0f3a2b3f2ff3c27a61221fab855138508991a0ea552e1111f15df723473e5eeb3ec8c46650aa1670bc00bef8242424fd88e20d90c729d12deac15d25453a4
7
+ data.tar.gz: c9fb8c066bdcb38237d394bcef4d155bd8bcc29ac3f19b1f4adb905b7483b678c1dbb1625ba8b31be6cada2b565c465f3da3a1d0e6f62cae50c7cfcbc0bfcf44
data/Gemfile CHANGED
@@ -3,4 +3,5 @@ source :rubygems
3
3
  gem 'json'
4
4
  gem 'httparty'
5
5
  gem 'addressable'
6
- gem 'rails-reverse-proxy', '~> 0.9.1'
6
+ gem 'rails-reverse-proxy', '~> 0.9.1'
7
+ gem 'redis'
@@ -1,6 +1,7 @@
1
1
  require "httparty"
2
2
  require "json"
3
3
  require "addressable"
4
+ require "redis"
4
5
  module Mints
5
6
  class Client
6
7
  attr_reader :host
@@ -24,10 +25,41 @@ module Mints
24
25
  uri = Addressable::URI.new
25
26
  uri.query_values = options
26
27
  end
27
-
28
+
28
29
  full_url = "#{@host}#{base_url}#{url}#{uri}"
30
+ response = nil
29
31
  if action === 'get'
32
+
33
+ config = YAML.load_file("#{Rails.root}/mints_config.yml")
34
+ url_need_cache = false
35
+ result_from_cache = false
36
+ time = 0
37
+
38
+ if config['redis_cache']['use_cache']
39
+ config['redis_cache']['groups'].each do |group|
40
+ group['urls'].each do |url|
41
+ if full_url.match url
42
+ time = group['time']
43
+ url_need_cache = true
44
+ @redis_server = Redis.new(host: config['redis_cache']['redis_host'])
45
+ if @redis_server.get(full_url)
46
+ response = @redis_server.get(full_url)
47
+ result_from_cache = true
48
+ else
49
+ response = self.send("#{@scope}_#{action}", "#{full_url}")
50
+ @redis_server.setex(full_url,time,response)
51
+ end
52
+ break
53
+ end
54
+ end
55
+ break if url_need_cache
56
+ end
57
+ end
58
+
59
+ if !url_need_cache
30
60
  response = self.send("#{@scope}_#{action}", "#{full_url}")
61
+ end
62
+
31
63
  elsif action === 'create' or action === 'post'
32
64
  action = 'post'
33
65
  response = self.send("#{@scope}_#{action}", "#{full_url}", data)
@@ -35,14 +67,15 @@ module Mints
35
67
  action = 'put'
36
68
  response = self.send("#{@scope}_#{action}", "#{full_url}", data)
37
69
  end
38
- if (response.response.code == "404")
39
- raise 'NotFoundError'
40
- end
41
- parsed_response = JSON.parse(response.body)
42
- if parsed_response.key?('data')
43
- return parsed_response['data']
44
- end
45
- return parsed_response
70
+ if result_from_cache
71
+ return parsed_response = JSON.parse(response)
72
+ else
73
+ if (response.response.code == "404")
74
+ raise 'NotFoundError'
75
+ end
76
+ parsed_response = JSON.parse(response.body)
77
+ return parsed_response
78
+ end
46
79
  end
47
80
 
48
81
  def method_missing(name, *args, &block)
@@ -2,5 +2,12 @@
2
2
  mints:
3
3
  host: http://your_host_goes_here.com
4
4
  api_key: your_mints_api_key_goes_here
5
+ redis_cache:
6
+ use_cache: boolean_value_to_enable_and_disable_cache
7
+ redis_host: your_redis_host
8
+ groups:
9
+ - urls:
10
+ - group_of_urls
11
+ time: time_that_will_be_applied_to_urls_in_seconds
5
12
  sdk:
6
13
  debug: false
@@ -18,12 +18,55 @@ module Mints
18
18
  session_token = cookies[:mints_contact_session_token]
19
19
  headers["Authorization"] = "Bearer #{session_token}"
20
20
  end
21
- reverse_proxy "#{@host}", headers: headers, verify_ssl: false do |config|
22
- # We got a 404!
23
- config.on_missing do |code, response|
24
- # We got a 404!
25
- if code == 404
26
- raise ActionController::RoutingError.new('Not Found')
21
+
22
+ url_need_cache = false
23
+ result_from_cache = false
24
+ time = 0
25
+ full_url = request.original_url
26
+
27
+ if request.method == "GET"
28
+ if @use_cache
29
+ @redis_config['groups'].each do |group|
30
+ group['urls'].each do |url|
31
+ if full_url.match url
32
+ time = group['time']
33
+ url_need_cache = true
34
+ break
35
+ end
36
+ end
37
+ break if url_need_cache
38
+ end
39
+ end
40
+ end
41
+
42
+ if url_need_cache
43
+ if @redis_server.get(full_url)
44
+ response = @redis_server.get(full_url)
45
+ result_from_cache = true
46
+ render json: response
47
+ else
48
+ reverse_proxy "#{@host}", headers: headers, verify_ssl: false do |config|
49
+ # Request succeded!
50
+ config.on_response do |code, response|
51
+ @redis_server.setex(full_url,time,response.body)
52
+ end
53
+ # Request failed!
54
+ config.on_missing do |code, response|
55
+ # We got a 404!
56
+ if code == 404
57
+ raise ActionController::RoutingError.new('Not Found')
58
+ end
59
+ end
60
+ end
61
+ end
62
+ else
63
+ reverse_proxy "#{@host}", headers: headers, verify_ssl: false do |config|
64
+ # Request failed!
65
+ config.on_missing do |code, response|
66
+ # We got a 404!
67
+ if code == 404
68
+ raise ActionController::RoutingError.new('Not Found')
69
+ end
27
70
  end
28
71
  end
29
72
  end
@@ -35,7 +78,10 @@ module Mints
35
78
  if File.exists?("#{Rails.root}/mints_config.yml")
36
79
  config = YAML.load_file("#{Rails.root}/mints_config.yml")
37
80
  @host = config["mints"]["host"]
38
- @api_key = config["mints"]["api_key"]
81
+ @api_key = config["mints"]["api_key"]
82
+ @redis_server = Redis.new(host: config['redis_cache']['redis_host']) if config['redis_cache']['use_cache']
83
+ @redis_config = config['redis_cache']
84
+ @use_cache = config['redis_cache']['use_cache']
39
85
  end
40
86
  end
41
87
  end
@@ -1,5 +1,6 @@
1
1
  require 'reverse_proxy/controller'
2
2
  require 'reverse_proxy/client'
3
+ require 'redis'
3
4
  module Mints
4
5
  class PublicAPIController < ActionController::API
5
6
  include ReverseProxy::Controller
@@ -12,15 +13,59 @@ module Mints
12
13
  'Content-Type'=> 'application/json',
13
14
  'Accept'=> 'application/json'
14
15
  }
15
- reverse_proxy "#{@host}", headers: headers, verify_ssl: false do |config|
16
- # Request failed!
17
- config.on_missing do |code, response|
18
- # We got a 404!
19
- if code == 404
20
- raise ActionController::RoutingError.new('Not Found')
16
+
17
+ url_need_cache = false
18
+ result_from_cache = false
19
+ time = 0
20
+ full_url = request.original_url
21
+
22
+ if request.method == "GET"
23
+ if @use_cache
24
+ @redis_config['groups'].each do |group|
25
+ group['urls'].each do |url|
26
+ if full_url.match url
27
+ time = group['time']
28
+ url_need_cache = true
29
+ break
30
+ end
31
+ end
32
+ break if url_need_cache
33
+ end
34
+ end
35
+ end
36
+
37
+ if url_need_cache
38
+ if @redis_server.get(full_url)
39
+ response = @redis_server.get(full_url)
40
+ result_from_cache = true
41
+ render json: response
42
+ else
43
+ reverse_proxy "#{@host}", headers: headers, verify_ssl: false do |config|
44
+ # Request succeded!
45
+ config.on_response do |code, response|
46
+ @redis_server.setex(full_url,time,response.body)
47
+ end
48
+ # Request failed!
49
+ config.on_missing do |code, response|
50
+ # We got a 404!
51
+ if code == 404
52
+ raise ActionController::RoutingError.new('Not Found')
53
+ end
54
+ end
55
+ end
56
+ end
57
+ else
58
+ reverse_proxy "#{@host}", headers: headers, verify_ssl: false do |config|
59
+ # Request failed!
60
+ config.on_missing do |code, response|
61
+ # We got a 404!
62
+ if code == 404
63
+ raise ActionController::RoutingError.new('Not Found')
64
+ end
21
65
  end
22
66
  end
23
67
  end
68
+
24
69
  end
25
70
 
26
71
  private
@@ -29,7 +74,10 @@ module Mints
29
74
  if File.exists?("#{Rails.root}/mints_config.yml")
30
75
  config = YAML.load_file("#{Rails.root}/mints_config.yml")
31
76
  @host = config["mints"]["host"]
32
- @api_key = config["mints"]["api_key"]
77
+ @api_key = config["mints"]["api_key"]
78
+ @redis_server = Redis.new(host: config['redis_cache']['redis_host']) if config['redis_cache']['use_cache']
79
+ @redis_config = config['redis_cache']
80
+ @use_cache = config['redis_cache']['use_cache']
33
81
  end
34
82
  end
35
83
  end
@@ -18,12 +18,55 @@ module Mints
18
18
  session_token = cookies[:mints_user_session_token]
19
19
  headers["Authorization"] = "Bearer #{session_token}"
20
20
  end
21
- reverse_proxy "#{@host}", headers: headers, verify_ssl: false do |config|
22
- # Request failed!
23
- config.on_missing do |code, response|
24
- # We got a 404!
25
- if code == 404
26
- raise ActionController::RoutingError.new('Not Found')
21
+
22
+ url_need_cache = false
23
+ result_from_cache = false
24
+ time = 0
25
+ full_url = request.original_url
26
+
27
+ if request.method == "GET"
28
+ if url_need_cache
29
+ @redis_config['groups'].each do |group|
30
+ group['urls'].each do |url|
31
+ if full_url.match url
32
+ time = group['time']
33
+ url_need_cache = true
34
+ break
35
+ end
36
+ end
37
+ break if url_need_cache
38
+ end
39
+ end
40
+ end
41
+
42
+ if url_need_cache
43
+ if @redis_server.get(full_url)
44
+ response = @redis_server.get(full_url)
45
+ result_from_cache = true
46
+ render json: response
47
+ else
48
+ reverse_proxy "#{@host}", headers: headers, verify_ssl: false do |config|
49
+ # Request succeded!
50
+ config.on_response do |code, response|
51
+ @redis_server.setex(full_url,time,response.body)
52
+ end
53
+ # Request failed!
54
+ config.on_missing do |code, response|
55
+ # We got a 404!
56
+ if code == 404
57
+ raise ActionController::RoutingError.new('Not Found')
58
+ end
59
+ end
60
+ end
61
+ end
62
+ else
63
+ reverse_proxy "#{@host}", headers: headers, verify_ssl: false do |config|
64
+ # Request failed!
65
+ config.on_missing do |code, response|
66
+ # We got a 404!
67
+ if code == 404
68
+ raise ActionController::RoutingError.new('Not Found')
69
+ end
27
70
  end
28
71
  end
29
72
  end
@@ -36,6 +79,9 @@ module Mints
36
79
  config = YAML.load_file("#{Rails.root}/mints_config.yml")
37
80
  @host = config["mints"]["host"]
38
81
  @api_key = config["mints"]["api_key"]
82
+ @redis_server = Redis.new(host: config['redis_cache']['redis_host'])
83
+ @redis_config = config['redis_cache']
84
+ @use_cache = config['redis_cache']['use_cache'] if config['redis_cache']['use_cache']
39
85
  end
40
86
  end
41
87
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mints
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ruben Gomez Garcia, Omar Mora, Luis Payan
@@ -50,6 +50,26 @@ dependencies:
50
50
  - - ">="
51
51
  - !ruby/object:Gem::Version
52
52
  version: 0.18.0
53
+ - !ruby/object:Gem::Dependency
54
+ name: redis
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: 4.2.2
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 4.2.2
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: 4.2.2
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 4.2.2
53
73
  - !ruby/object:Gem::Dependency
54
74
  name: addressable
55
75
  requirement: !ruby/object:Gem::Requirement