bug_bunny 1.0.0 → 2.0.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.
@@ -1,124 +0,0 @@
1
- module BugBunny
2
- class Railtie < Rails::Railtie
3
- rake_tasks do
4
- namespace :bug_bunny do |args|
5
- ARGV.shift
6
-
7
- desc 'Bug Bunny consumer'
8
- # environment is required to have access to Rails models
9
- task consumer: :environment do
10
- options = {}
11
-
12
- o = OptionParser.new
13
-
14
- o.banner = "Usage: rake bug_bunny:consumer [options]"
15
- o.on("-a ADAPTER", "--adapter ADAPTER") { |adapter| options[:adapter] = adapter }
16
- o.on("-s", "--session") { options[:session] = true }
17
- o.on("-m MODE", "--mode MODE", "Sync or Async mode. values [:sync, :async]") { |mode| options[:mode] = mode }
18
- o.on("-h", "--help", 'HELP ME!!! HELPE ME!!!') { puts o }
19
-
20
- args = o.order!(ARGV) {}
21
-
22
- o.parse!(args)
23
-
24
- if defined?(Rails)
25
- Rails.logger.info("Initializing #{options}")
26
- else
27
- puts "Initializing #{options}"
28
- end
29
-
30
- adapter_class = options[:adapter].constantize
31
-
32
- mode = options[:mode].to_sym || :sync
33
-
34
- queue_name = { sync: adapter_class::ROUTING_KEY_SYNC_REQUEST, async: adapter_class::ROUTING_KEY_ASYNC_REQUEST }[mode]
35
-
36
- loop do
37
- begin
38
- adapter = adapter_class.new
39
-
40
- queue = adapter.build_queue(queue_name, adapter_class::QUEUES_PROPS[queue_name])
41
-
42
- if mode == :async
43
- adapter.build_queue(
44
- adapter_class::ROUTING_KEY_ASYNC_RESPONSE,
45
- adapter_class::QUEUES_PROPS[adapter_class::ROUTING_KEY_ASYNC_RESPONSE]
46
- )
47
- end
48
- rescue ::BugBunny::Exception::ComunicationRabbitError => e
49
- if defined?(Rails)
50
- Rails.logger.error(e)
51
- else
52
- puts e.message
53
- end
54
-
55
- (adapter ||= nil).try(:close_connection!) # ensure the adapter is close
56
- sleep 5
57
- retry
58
- end
59
-
60
- adapter.consume!(queue) do |message|
61
- begin
62
- if options[:session]
63
- ::Session.request_id = message.correlation_id rescue nil
64
- ::Session.tags_context ||= {}
65
-
66
- ::Session.extra_context ||= {}
67
- ::Session.extra_context[:message] = message.body
68
- end
69
-
70
- response = nil
71
-
72
- Timeout.timeout(5.minutes) do
73
- if defined?(Rails)
74
- Rails.logger.debug("Msg received: action: #{message.service_action}, msg: #{message.body}")
75
- else
76
- puts "Msg received: action: #{message.service_action}, msg: #{message.body}"
77
- end
78
- response = "#{options[:adapter]}Controller".constantize.exec_action(message)
79
- end
80
- rescue Timeout::Error => e
81
- puts("[OLT_VSOL_SERVICE][TIMEOUT][CONSUMER] #{e.to_s})")
82
- @exception = e
83
- rescue StandardError => e
84
- adapter.check_pg_exception!(e)
85
- if defined?(Rails)
86
- Rails.logger.error(e)
87
- else
88
- puts e.message
89
- end
90
- @exception = e
91
- end
92
-
93
- if message.reply_to
94
- Session.reply_to_queue = message.reply_to if options[:session]
95
- begin
96
- msg = message.build_message
97
- if @exception
98
- msg.body = (response&.key?(:body)) ? response[:body] : { id: message.body[:id] }
99
- msg.exception = @exception
100
- @exception = nil
101
- else
102
- msg.body = response[:body]
103
- msg.status = response[:status] if response.key?(:status)
104
- end
105
-
106
- queue = adapter.build_queue(message.reply_to, initialize: false)
107
- adapter.publish!(msg, queue)
108
- rescue => e
109
- if defined?(Rails)
110
- Rails.logger.error(e)
111
- else
112
- puts e.message
113
- end
114
- end
115
- end
116
- Session.clean! if options[:session]
117
- end
118
- sleep 5
119
- end
120
- end
121
- end
122
- end
123
- end
124
- end
@@ -1,15 +0,0 @@
1
- module BugBunny
2
- class Response
3
- attr_accessor :status, :response, :exception
4
-
5
- def initialize(attrs={})
6
- @status = attrs[:status]
7
- @response = attrs[:response]
8
- @exception = attrs[:exception]
9
- end
10
-
11
- def success?
12
- @status
13
- end
14
- end
15
- end
@@ -1,19 +0,0 @@
1
- module BugBunny
2
- module Security
3
- def self.sign_message(secret, message)
4
- digest = OpenSSL::Digest.new('SHA512')
5
- private_key = OpenSSL::PKey::RSA.new(secret)
6
- Base64.encode64(private_key.sign(digest, message))
7
- end
8
-
9
- def self.check_sign(key, signature, message)
10
- pub_key = OpenSSL::PKey::RSA.new(key)
11
- digest = OpenSSL::Digest.new('SHA512')
12
- if pub_key.verify(digest, Base64.decode64(signature), message)
13
- true
14
- else
15
- false
16
- end
17
- end
18
- end
19
- end