gmassbot 1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/gmassbot.rb +130 -0
  3. metadata +164 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 9198e6b7a6b479f22963e314f8810405fbf348a382b0001f55c73478aa309bdd
4
+ data.tar.gz: 7488a3d9f4343dd24f83f11357606bb4c5cabeba5875146b696c6d750f54d547
5
+ SHA512:
6
+ metadata.gz: 5bf13844eb8450b72155f3aacd7e6f993591cca87da87825a3e415730821995d0ecf7a0932bd6c268c664c74559222cad99bb9bf93d8a291e2352ca4493b57f7
7
+ data.tar.gz: dd94d8457b9151856ed32f903bf210c8b4da48fa3a05e357b80f9025cc5cc0d3d6fdd2ef6356865d8cc84f6f7f683e9d2a4a7371a6d876a1c9ac0d57c962a3d6
data/lib/gmassbot.rb ADDED
@@ -0,0 +1,130 @@
1
+ require 'blackstack-core'
2
+ require 'blackstack-deployer'
3
+ require 'simple_command_line_parser'
4
+ require 'simple_cloud_logging'
5
+ require 'mechanize'
6
+ require 'colorize'
7
+ require 'pry'
8
+
9
+ module BlackStack
10
+ module Bots
11
+ class GMass
12
+ TEST_ADDRESSES = 'ajay.silicomm@gmail.com, ajaygoel999@gmail.com, ajay@parttimesnob.com, test@chromecompete.com, test@ajaygoel.org, me@dropboxslideshow.com, test@wordzen.com, rajgoel8477@gmail.com, briansmith8477@gmail.com, ajay@madsciencekidz.com, ajay2@ctopowered.com, ajay@arena.tec.br, ajay@smallbizdevgroup.com'.split(', ').map(&:strip)
13
+
14
+ @@permanent_driver = nil
15
+
16
+ def self.init(l=nil)
17
+ l = BlackStack::DummyLogger.new(nil) if l.nil?
18
+
19
+ raise 'Driver already exists' if @@permanent_driver != nil
20
+
21
+ l.logs 'Starting chrome... '
22
+ @@permanent_driver = Selenium::WebDriver.for :chrome
23
+ l.done
24
+
25
+ @@permanent_driver
26
+ end
27
+
28
+ def self.finalize(l=nil)
29
+ l = BlackStack::DummyLogger.new(nil) if l.nil?
30
+
31
+ raise 'Driver not exists' if @@permanent_driver.nil?
32
+
33
+ l.logs 'Finalizing chrome... '
34
+ @@permanent_driver.quit
35
+ l.done
36
+ end
37
+
38
+ def self.check(keyword, l=nil)
39
+ l = BlackStack::DummyLogger.new(nil) if l.nil?
40
+ res = []
41
+ using_permanent_driver = (@@permanent_driver != nil)
42
+
43
+ l.logs 'Checking driver... '
44
+ driver = @@permanent_driver if using_permanent_driver
45
+ driver = self.init(l) unless using_permanent_driver
46
+ l.done
47
+
48
+ driver.navigate.to "https://www.gmass.co/inbox?q=#{keyword}"
49
+
50
+ l.logs 'Starting chrome... '
51
+ driver.navigate.to "https://www.gmass.co/inbox?q=#{keyword}"
52
+ l.done
53
+
54
+ l.logs "Creating wait object... "
55
+ wait = Selenium::WebDriver::Wait.new(:timeout => 10)
56
+ l.done
57
+
58
+ l.logs 'Getting results... '
59
+ divs = driver.find_elements(:class, "table-wrap")
60
+ l.logf divs.size.to_s.green
61
+
62
+ i = 0
63
+ divs.each { |div|
64
+ i += 1
65
+ l.log ''
66
+ l.logs "#{i}... "
67
+ table = div.find_element(:class, "result-table")
68
+ tr = table.find_elements(:tag_name, "tr").first
69
+ td = tr.find_elements(:tag_name=>"td", :class=>'card-address').first
70
+ test_name = td.text.gsub("\n", ' - ').gsub("\r", ' - ').strip
71
+ l.logf test_name.blue
72
+
73
+ # wait until a second td appears
74
+ l.logs 'Loading result... '
75
+ lis = tr.find_elements(:tag_name=>"li")
76
+ begin
77
+ wait.until { lis.size > 0 }
78
+ l.logf lis.size.to_s.green
79
+
80
+ # get the first li
81
+ l.logs 'Getting first li... '
82
+ li = lis.first
83
+ l.done
84
+
85
+ # get the .from span
86
+ l.logs 'Getting from span... '
87
+ from = li.find_element(:class, "from").text
88
+ l.logf from.blue
89
+
90
+ # get the time and result
91
+ l.logs 'Getting time and result... '
92
+ time = li.find_element(:class, "time").text
93
+ l.logf time.blue
94
+
95
+ l.logs 'Getting result... '
96
+ result = li.find_element(:class=>'result-label').text
97
+ l.logf result.to_s.upcase == 'Spam'.upcase ? result.red : result.green
98
+
99
+ res << {
100
+ :test_name => test_name,
101
+ :from => from,
102
+ :time => time,
103
+ :result => result
104
+ }
105
+
106
+ rescue Selenium::WebDriver::Error::TimeoutError => e
107
+ l.logf '0'.red
108
+ res << {
109
+ :test_name => test_name,
110
+ :from => nil,
111
+ :time => nil,
112
+ :result => nil
113
+ }
114
+ end
115
+ }
116
+
117
+ l.logs 'Closing chrome... '
118
+ unless using_permanent_driver
119
+ driver.quit
120
+ l.done
121
+ else
122
+ l.no
123
+ end
124
+
125
+ res
126
+ end # def self.check
127
+
128
+ end # class GMass
129
+ end # module Bots
130
+ end
metadata ADDED
@@ -0,0 +1,164 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gmassbot
3
+ version: !ruby/object:Gem::Version
4
+ version: '1.1'
5
+ platform: ruby
6
+ authors:
7
+ - Leandro Daniel Sardi
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-06-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: blackstack-core
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 1.2.3
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.2.3
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: 1.2.3
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.2.3
33
+ - !ruby/object:Gem::Dependency
34
+ name: simple_cloud_logging
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: 1.2.2
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 1.2.2
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: 1.2.2
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 1.2.2
53
+ - !ruby/object:Gem::Dependency
54
+ name: colorize
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: 0.8.1
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 0.8.1
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: 0.8.1
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 0.8.1
73
+ - !ruby/object:Gem::Dependency
74
+ name: selenium-webdriver
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: 4.10.0
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: 4.10.0
83
+ type: :runtime
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 4.10.0
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: 4.10.0
93
+ - !ruby/object:Gem::Dependency
94
+ name: test-unit
95
+ requirement: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - "~>"
98
+ - !ruby/object:Gem::Version
99
+ version: 3.5.3
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: 3.5.3
103
+ type: :runtime
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: 3.5.3
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: 3.5.3
113
+ - !ruby/object:Gem::Dependency
114
+ name: pry
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - "~>"
118
+ - !ruby/object:Gem::Version
119
+ version: 0.14.2
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: 0.14.2
123
+ type: :runtime
124
+ prerelease: false
125
+ version_requirements: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - "~>"
128
+ - !ruby/object:Gem::Version
129
+ version: 0.14.2
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: 0.14.2
133
+ description: 'Find documentation here: https://github.com/leandrosardi/gmassbot'
134
+ email: leandro.sardi@expandedventure.com
135
+ executables: []
136
+ extensions: []
137
+ extra_rdoc_files: []
138
+ files:
139
+ - lib/gmassbot.rb
140
+ homepage: https://rubygems.org/gems/gmassbot
141
+ licenses:
142
+ - MIT
143
+ metadata: {}
144
+ post_install_message:
145
+ rdoc_options: []
146
+ require_paths:
147
+ - lib
148
+ required_ruby_version: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ required_rubygems_version: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - ">="
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ requirements: []
159
+ rubygems_version: 3.3.7
160
+ signing_key:
161
+ specification_version: 4
162
+ summary: Ruby library for automation operation on the GMass Deliverability Test and
163
+ Spam Checker.
164
+ test_files: []