-
Notifications
You must be signed in to change notification settings - Fork 33
/
Copy pathmiteru.rb
154 lines (123 loc) · 2.72 KB
/
miteru.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
# frozen_string_literal: true
# Core standard libraries
require "cgi"
require "json"
require "uri"
require "uuidtools"
# Core 3rd party libraries
require "colorize"
require "memo_wise"
require "semantic_logger"
require "sentry-ruby"
require "dry/files"
require "dry/monads"
# Load .env
require "dotenv/load"
# Active Support & Active Record
require "active_support"
require "active_record"
# Version
require "miteru/version"
# Errors
require "miteru/errors"
# Concerns
require "miteru/concerns/database_connectable"
require "miteru/concerns/error_unwrappable"
require "miteru/concerns/url_truncatable"
# Helpers
require "miteru/helpers"
# Core classes
require "miteru/service"
require "miteru/cache"
require "miteru/config"
require "miteru/http"
# Database + ActiveRecord
require "miteru/database"
require "miteru/record"
module Miteru
class << self
prepend MemoWise
#
# @return [SematicLogger]
#
def logger
SemanticLogger.default_level = :info
SemanticLogger.add_appender(io: $stderr, formatter: :color)
SemanticLogger["Miteru"]
end
memo_wise :logger
#
# @return [Array<Miteru::Feeds::Base>]
#
def feeds
[]
end
memo_wise :feeds
#
# @return [Array<Miteru::Notifiers::Base>]
#
def notifiers
[]
end
memo_wise :notifiers
#
# @return [Miteru::Config]
#
def config
@config ||= Config.new
end
#
# @return [String]
#
def env
ENV["APP_ENV"] || ENV["RACK_ENV"]
end
#
# @return [Boolean]
#
def development?
env == "development"
end
def cache?
!Miteru.config.cache_redis_url.nil?
end
def cache
@cache ||= Cache.new(Miteru.config.cache_redis_url)
end
def sentry?
!Miteru.config.sentry_dsn.nil?
end
def initialize_sentry
return if Sentry.initialized?
Sentry.init do |config|
config.dsn = Miteru.config.sentry_dsn
config.traces_sample_rate = Miteru.config.sentry_trace_sample_rate
config.breadcrumbs_logger = %i[sentry_logger http_logger]
end
end
end
end
# Services
require "miteru/crawler"
require "miteru/downloader"
require "miteru/kit"
require "miteru/orchestrator"
require "miteru/website"
# Notifiers
require "miteru/notifiers/base"
require "miteru/notifiers/slack"
require "miteru/notifiers/urlscan"
# Feeds
require "miteru/feeds/base"
require "miteru/feeds/ayashige"
require "miteru/feeds/phishing_database"
require "miteru/feeds/tweetfeed"
require "miteru/feeds/urlscan_pro"
require "miteru/feeds/urlscan"
# CLI
require "miteru/cli/application"
# Sidekiq
require "sidekiq"
require "miteru/sidekiq/application"
require "miteru/sidekiq/jobs"
Miteru.initialize_sentry if Miteru.sentry?