zikrash 0.1.1 → 1.0.1

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: ff79762e8cb86f025fbac06c1d08584e741a59dc
4
- data.tar.gz: 2d8ab64cb76c973da3982786ef44bffcd90f96b6
3
+ metadata.gz: 8e257f0cad9d388747cf86751e1fb7f782c25bcf
4
+ data.tar.gz: 343ccb4f8eab9d7aa372fefff0d0adb311e40aeb
5
5
  SHA512:
6
- metadata.gz: 107839f5799a44e21882264855f3f6e1c25ab6ad7255b57ae94398b6db6ef569d462e1c26006d446b141965668bf27ef671902bc6f673f2b230564fc06a69af5
7
- data.tar.gz: 54a08e29228565ae87ec96a0a926f07351f70d47e851c40147b994fb331763b4d852eb0440809f0a0a1a8585c8f1b6fc8638d42a3cac6ce832bebba1dab0372e
6
+ metadata.gz: 84f929a55afa83eb49a9f02fc00c863d01af5e43373c9e1cf68564359c899fe834ee1460fab1e2a1a82e604595ad341fa8715ca7e912652f3d7fb870457d6108
7
+ data.tar.gz: d1158f703f269f69fd510c23320e1834a8808ff3c5ecc2759388b9389ef4c15e3851a045a29d522ed1bf3c3148fb37314fda6f1b29628f70c9b1a885c5409f70
@@ -1,4 +1,3 @@
1
- require 'file'
2
1
  require 'pathname'
3
2
 
4
3
  module Zikrash
@@ -7,6 +7,8 @@ module Zikrash
7
7
  attr_accessor :relevant_code
8
8
 
9
9
  def initialize(exception)
10
+ return false unless (exception.respond_to?(:message) && exception.respond_to?(:backtrace))
11
+
10
12
  self.exception_class = exception.is_a?(Class) ? exception.to_s : exception.class.to_s
11
13
  self.message = exception.message
12
14
  self.full_backtrace = exception.backtrace
@@ -1,17 +1,55 @@
1
1
  require 'net/http'
2
2
  require 'uri'
3
3
  require 'json'
4
+ require 'base64'
4
5
 
5
6
  module Zikrash
6
7
  class SendReport
7
- def initialize(exception_info_data)
8
- uri = URI.parse(SEND_TO_URL)
8
+ attr_accessor :project_key
9
+ attr_accessor :exception_info_data
10
+ attr_accessor :session_info
11
+ attr_accessor :params_info
12
+ attr_accessor :additional_reports
13
+
14
+ def initialize(project_key, exception_info_data, session_info, params_info, additional_reports)
15
+ self.project_key = project_key
16
+ self.exception_info_data = exception_info_data
17
+ self.session_info = session_info
18
+ self.params_info = params_info
19
+ self.additional_reports = additional_reports
20
+ end
21
+
22
+ def let_it_go
23
+ project_url = unwrap_project_url
24
+
25
+ begin
26
+ uri = URI.parse(project_url)
27
+ uri.kind_of?(URI::HTTP)
28
+ rescue URI::InvalidURIError
29
+ return false
30
+ end
31
+
9
32
  http = Net::HTTP.new(uri.host, uri.port)
10
33
 
11
- request = Net::HTTP::Post.new(uri.path, {"Content-Type" => "application/json"})
12
- request.body = {exception_info: exception_info_data}.to_json
34
+ request = Net::HTTP::Post.new(uri.path, {'Content-Type' => 'application/json'})
35
+ request.body = form_request_body
13
36
 
14
37
  http.request(request)
15
38
  end
39
+
40
+ private
41
+
42
+ def unwrap_project_url
43
+ Base64.decode64(project_key)
44
+ end
45
+
46
+ def form_request_body
47
+ {
48
+ exception_info: exception_info_data,
49
+ session_info: session_info,
50
+ params_info: params_info,
51
+ additional_reports: additional_reports
52
+ }.to_json
53
+ end
16
54
  end
17
55
  end
@@ -1,3 +1,3 @@
1
1
  module Zikrash
2
- VERSION = '0.1.1'
2
+ VERSION = '1.0.1'
3
3
  end
data/lib/zikrash.rb CHANGED
@@ -2,13 +2,28 @@ require 'zikrash/version'
2
2
  require 'zikrash/exception_info'
3
3
  require 'zikrash/code_extractor'
4
4
  require 'zikrash/send_report'
5
+ require 'logger'
5
6
 
6
7
  module Zikrash
7
- SEND_TO_URL = 'http://127.0.0.1/billing/test/get_report/'
8
-
9
8
  class << self
10
- def report(exception)
11
- SendReport.new(ExceptionInfo.new(exception).data)
9
+ def report(project_key, exception, session_info = {}, params_info = {}, additional_reports = {})
10
+ return false if project_key.blank? || exception.blank?
11
+
12
+ begin
13
+ exception_info = ExceptionInfo.new(exception)
14
+ return false unless exception_info
15
+
16
+ send_report = SendReport.new(project_key, exception_info.data, session_info, params_info, additional_reports)
17
+
18
+ send_report.let_it_go
19
+ rescue Exception => error
20
+ # Just in case I messed up badly
21
+ Rails.logger.fatal("========== Zikrash Gem Crashed ==========")
22
+ Rails.logger.fatal("Please notify it's developers")
23
+ Rails.logger.fatal("Exception message: #{error.message}")
24
+ Rails.logger.fatal("Exception location: #{error.backtrace.first}")
25
+ Rails.logger.fatal("=========================================\n")
26
+ end
12
27
  end
13
28
  end
14
29
  end
data/zikrash.gemspec CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
11
11
 
12
12
  spec.summary = %q{Rails Exception reporter}
13
13
  spec.description = %q{Reports Exception data to external server}
14
- spec.homepage = 'http://rubygems.org/gems/zikrash'
14
+ spec.homepage = 'https://github.com/ErGisler/zikrash'
15
15
  spec.license = 'MIT'
16
16
 
17
17
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test)/}) }
@@ -21,4 +21,7 @@ Gem::Specification.new do |spec|
21
21
 
22
22
  spec.add_development_dependency 'bundler', '~> 1.9'
23
23
  spec.add_development_dependency 'rake', '~> 10.0'
24
+ spec.add_development_dependency 'railties', '>= 3.0.0'
25
+
26
+ spec.required_ruby_version = '>= 2.0'
24
27
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zikrash
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ervinas Gisleris
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-12-03 00:00:00.000000000 Z
11
+ date: 2018-12-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: railties
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 3.0.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 3.0.0
41
55
  description: Reports Exception data to external server
42
56
  email:
43
57
  - er.gisler@gmail.com
@@ -59,7 +73,7 @@ files:
59
73
  - lib/zikrash/send_report.rb
60
74
  - lib/zikrash/version.rb
61
75
  - zikrash.gemspec
62
- homepage: http://rubygems.org/gems/zikrash
76
+ homepage: https://github.com/ErGisler/zikrash
63
77
  licenses:
64
78
  - MIT
65
79
  metadata: {}
@@ -71,7 +85,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
71
85
  requirements:
72
86
  - - ">="
73
87
  - !ruby/object:Gem::Version
74
- version: '0'
88
+ version: '2.0'
75
89
  required_rubygems_version: !ruby/object:Gem::Requirement
76
90
  requirements:
77
91
  - - ">="