esaj 0.1.0 → 0.2.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.
- checksums.yaml +4 -4
- data/Gemfile.lock +50 -0
- data/README.md +7 -5
- data/bin/console +2 -10
- data/esaj.gemspec +4 -0
- data/lib/esaj/forum.rb +12 -0
- data/lib/esaj/lawsuit.rb +26 -0
- data/lib/esaj/metadata.rb +53 -0
- data/lib/esaj/parser_adapter.rb +17 -0
- data/lib/esaj/query.rb +33 -0
- data/lib/esaj/query_page.rb +34 -0
- data/lib/esaj/scraper.rb +44 -0
- data/lib/esaj/url_builder.rb +32 -0
- data/lib/esaj/version.rb +1 -1
- data/lib/esaj.rb +4 -1
- metadata +53 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 82711c58b4265f66463025f1bd18cfe76e851f08ea68a96130ea92e8ef8f40d4
|
4
|
+
data.tar.gz: 84f5951cc33abfc8b84b6730d54826b132758af2b82254eb960df04c935317ee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c13a78877153ef16d92b3ecb950a72af66f62addf444e2a399296158ecfdef798b4ce7ed3ab2f6022890649386362f6c4e68882b0d34cfcaa8d19cf2cee2f95a
|
7
|
+
data.tar.gz: a4137e12c85d5a88a5db5e4d6e4926963ca2356805742dccb27c79adcda3d224177a812170c2994aa8ec0af855e28cee1864a2a1861a200a30770c16b4cfee4b
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
esaj (0.1.0)
|
5
|
+
nokogiri
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: https://rubygems.org/
|
9
|
+
specs:
|
10
|
+
byebug (10.0.2)
|
11
|
+
coderay (1.1.2)
|
12
|
+
diff-lcs (1.3)
|
13
|
+
method_source (0.9.2)
|
14
|
+
mini_portile2 (2.4.0)
|
15
|
+
nokogiri (1.10.1)
|
16
|
+
mini_portile2 (~> 2.4.0)
|
17
|
+
pry (0.12.2)
|
18
|
+
coderay (~> 1.1.0)
|
19
|
+
method_source (~> 0.9.0)
|
20
|
+
pry-byebug (3.6.0)
|
21
|
+
byebug (~> 10.0)
|
22
|
+
pry (~> 0.10)
|
23
|
+
rake (10.5.0)
|
24
|
+
rspec (3.7.0)
|
25
|
+
rspec-core (~> 3.7.0)
|
26
|
+
rspec-expectations (~> 3.7.0)
|
27
|
+
rspec-mocks (~> 3.7.0)
|
28
|
+
rspec-core (3.7.1)
|
29
|
+
rspec-support (~> 3.7.0)
|
30
|
+
rspec-expectations (3.7.0)
|
31
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
32
|
+
rspec-support (~> 3.7.0)
|
33
|
+
rspec-mocks (3.7.0)
|
34
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
35
|
+
rspec-support (~> 3.7.0)
|
36
|
+
rspec-support (3.7.1)
|
37
|
+
|
38
|
+
PLATFORMS
|
39
|
+
ruby
|
40
|
+
|
41
|
+
DEPENDENCIES
|
42
|
+
bundler (~> 1.17)
|
43
|
+
esaj!
|
44
|
+
pry
|
45
|
+
pry-byebug
|
46
|
+
rake (~> 10.0)
|
47
|
+
rspec (~> 3.0)
|
48
|
+
|
49
|
+
BUNDLED WITH
|
50
|
+
1.17.2
|
data/README.md
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
# Esaj
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
TODO: Delete this and the text above, and describe your gem
|
3
|
+
This scraper wraps the lawsuits querying services provided to the general public by the 'Sistema de Automação da Justiça' website.
|
6
4
|
|
7
5
|
## Installation
|
8
6
|
|
@@ -22,7 +20,11 @@ Or install it yourself as:
|
|
22
20
|
|
23
21
|
## Usage
|
24
22
|
|
25
|
-
|
23
|
+
Perform the following operation to retrieve the lawsuits for a given OAB code and forum:
|
24
|
+
|
25
|
+
```ruby
|
26
|
+
Esaj::Query.new(oab_code: '000000', forum: :all).perform
|
27
|
+
```
|
26
28
|
|
27
29
|
## Development
|
28
30
|
|
@@ -32,7 +34,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
32
34
|
|
33
35
|
## Contributing
|
34
36
|
|
35
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
37
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/betogrun/esaj.
|
36
38
|
|
37
39
|
## License
|
38
40
|
|
data/bin/console
CHANGED
@@ -2,13 +2,5 @@
|
|
2
2
|
|
3
3
|
require "bundler/setup"
|
4
4
|
require "esaj"
|
5
|
-
|
6
|
-
|
7
|
-
# with your gem easier. You can also use a different console, if you like.
|
8
|
-
|
9
|
-
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
-
# require "pry"
|
11
|
-
# Pry.start
|
12
|
-
|
13
|
-
require "irb"
|
14
|
-
IRB.start(__FILE__)
|
5
|
+
require "pry"
|
6
|
+
Pry.start
|
data/esaj.gemspec
CHANGED
@@ -21,7 +21,11 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
22
22
|
spec.require_paths = ["lib"]
|
23
23
|
|
24
|
+
spec.add_runtime_dependency "nokogiri"
|
25
|
+
|
24
26
|
spec.add_development_dependency "bundler", "~> 1.17"
|
25
27
|
spec.add_development_dependency "rake", "~> 10.0"
|
26
28
|
spec.add_development_dependency "rspec", "~> 3.0"
|
29
|
+
spec.add_development_dependency "pry"
|
30
|
+
spec.add_development_dependency "pry-byebug"
|
27
31
|
end
|
data/lib/esaj/forum.rb
ADDED
data/lib/esaj/lawsuit.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
module Esaj
|
2
|
+
class Lawsuit
|
3
|
+
attr_reader :raw_attributes
|
4
|
+
|
5
|
+
def initialize(raw_attributes)
|
6
|
+
@raw_attributes = raw_attributes
|
7
|
+
end
|
8
|
+
|
9
|
+
def attributes
|
10
|
+
{
|
11
|
+
code: code,
|
12
|
+
details_resource: details_resource
|
13
|
+
}
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def code
|
19
|
+
raw_attributes[:lawsuit_code].strip
|
20
|
+
end
|
21
|
+
|
22
|
+
def details_resource
|
23
|
+
"https://esaj.tjsp.jus.br#{raw_attributes[:lawsuit_details_resource]}"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require_relative 'parser_adapter'
|
2
|
+
|
3
|
+
module Esaj
|
4
|
+
class Metadata
|
5
|
+
attr_reader :url
|
6
|
+
|
7
|
+
def initialize(url)
|
8
|
+
@url = url
|
9
|
+
end
|
10
|
+
|
11
|
+
def total_pages
|
12
|
+
(total_records.to_f/records_per_page).round
|
13
|
+
end
|
14
|
+
|
15
|
+
def error?
|
16
|
+
!error_message.empty?
|
17
|
+
end
|
18
|
+
|
19
|
+
def error_message
|
20
|
+
formatted_error_message
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def records_per_page
|
26
|
+
formatted_pagination_result[3].to_i
|
27
|
+
end
|
28
|
+
|
29
|
+
def total_records
|
30
|
+
formatted_pagination_result[5].to_i
|
31
|
+
end
|
32
|
+
|
33
|
+
def formatted_pagination_result
|
34
|
+
pagination_element.text.split.uniq
|
35
|
+
end
|
36
|
+
|
37
|
+
def formatted_error_message
|
38
|
+
error_message_element.text.strip
|
39
|
+
end
|
40
|
+
|
41
|
+
def error_message_element
|
42
|
+
@error_message_element ||= document.css('td#mensagemRetorno')
|
43
|
+
end
|
44
|
+
|
45
|
+
def pagination_element
|
46
|
+
@pagination_element ||= document.css('span.resultadoPaginacao')
|
47
|
+
end
|
48
|
+
|
49
|
+
def document
|
50
|
+
@document ||= ParserAdapter.new(url).document
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'nokogiri'
|
2
|
+
require 'open-uri'
|
3
|
+
require 'openssl'
|
4
|
+
|
5
|
+
module Esaj
|
6
|
+
class ParserAdapter
|
7
|
+
attr_reader :url
|
8
|
+
|
9
|
+
def initialize(url)
|
10
|
+
@url = url
|
11
|
+
end
|
12
|
+
|
13
|
+
def document
|
14
|
+
@document ||= Nokogiri::HTML(open(url, ssl_verify_mode: ::OpenSSL::SSL::VERIFY_NONE))
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/esaj/query.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
require_relative 'scraper'
|
2
|
+
require_relative 'lawsuit'
|
3
|
+
|
4
|
+
module Esaj
|
5
|
+
class Query
|
6
|
+
attr_reader :oab_code, :forum
|
7
|
+
|
8
|
+
def initialize(oab_code:, forum:)
|
9
|
+
@oab_code = oab_code
|
10
|
+
@forum = forum
|
11
|
+
end
|
12
|
+
|
13
|
+
def perform
|
14
|
+
begin
|
15
|
+
lawsuits.map(&:attributes)
|
16
|
+
rescue RemoteError => error
|
17
|
+
{ error: error.message }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def lawsuits
|
24
|
+
scraped_results.map do |attributes|
|
25
|
+
Lawsuit.new(attributes)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def scraped_results
|
30
|
+
Scraper.new(oab_code, forum).results
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require_relative 'parser_adapter'
|
2
|
+
|
3
|
+
module Esaj
|
4
|
+
class QueryPage
|
5
|
+
attr_reader :url
|
6
|
+
|
7
|
+
def initialize(url)
|
8
|
+
@url = url
|
9
|
+
end
|
10
|
+
|
11
|
+
def result_set
|
12
|
+
result_elements.each_with_object([]) do |result_element, result_set|
|
13
|
+
result_set << result_item_for(result_element)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def result_item_for(result_element)
|
20
|
+
{
|
21
|
+
lawsuit_code: result_element.text,
|
22
|
+
lawsuit_details_resource: result_element[:href]
|
23
|
+
}
|
24
|
+
end
|
25
|
+
|
26
|
+
def result_elements
|
27
|
+
document.css('a.linkProcesso')
|
28
|
+
end
|
29
|
+
|
30
|
+
def document
|
31
|
+
@docuemnt ||= ParserAdapter.new(url).document
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/lib/esaj/scraper.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
require_relative 'url_builder'
|
2
|
+
require_relative 'query_page'
|
3
|
+
require_relative 'metadata'
|
4
|
+
|
5
|
+
module Esaj
|
6
|
+
class RemoteError < StandardError; end
|
7
|
+
class Scraper
|
8
|
+
extend Forwardable
|
9
|
+
|
10
|
+
def_delegators :@metadata, :total_pages, :error?, :error_message
|
11
|
+
|
12
|
+
attr_reader :oab_code, :forum
|
13
|
+
|
14
|
+
def initialize(oab_code, forum)
|
15
|
+
@oab_code = oab_code
|
16
|
+
@forum = forum
|
17
|
+
@metadata = Metadata.new(metadata_url)
|
18
|
+
end
|
19
|
+
|
20
|
+
def results
|
21
|
+
raise RemoteError.new(error_message) if error?
|
22
|
+
query_pages.flat_map(&:result_set)
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def query_pages
|
28
|
+
[].tap do |pages|
|
29
|
+
1.upto(total_pages) do |page_number|
|
30
|
+
url = url_for(page_number)
|
31
|
+
pages << QueryPage.new(url)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def metadata_url
|
37
|
+
url_for(1)
|
38
|
+
end
|
39
|
+
|
40
|
+
def url_for(page_number)
|
41
|
+
UrlBuilder.new(oab_code, forum, page_number).build
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require_relative 'forum'
|
2
|
+
|
3
|
+
module Esaj
|
4
|
+
class UrlBuilder
|
5
|
+
attr_reader :oab_code, :forum, :page_number
|
6
|
+
|
7
|
+
def initialize(oab_code, forum, page_number)
|
8
|
+
@oab_code = oab_code
|
9
|
+
@forum = forum
|
10
|
+
@page_number = page_number
|
11
|
+
end
|
12
|
+
|
13
|
+
def build
|
14
|
+
"#{base_url}" +
|
15
|
+
"?paginaConsulta=#{page_number}" +
|
16
|
+
"?dadosConsulta.localPesquisa.cdLocal=#{forum_code}" +
|
17
|
+
"&cbPesquisa=NUMOAB" +
|
18
|
+
"&dadosConsulta.tipoNuProcesso=UNIFICADO" +
|
19
|
+
"&dadosConsulta.valorConsulta=#{oab_code}"
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def base_url
|
25
|
+
"https://esaj.tjsp.jus.br/cpopg/trocarPagina.do"
|
26
|
+
end
|
27
|
+
|
28
|
+
def forum_code
|
29
|
+
Forum.code_for(forum)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/lib/esaj/version.rb
CHANGED
data/lib/esaj.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: esaj
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alberto Rocha
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-02-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: nokogiri
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: bundler
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,6 +66,34 @@ dependencies:
|
|
52
66
|
- - "~>"
|
53
67
|
- !ruby/object:Gem::Version
|
54
68
|
version: '3.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: pry
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: pry-byebug
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
55
97
|
description: 'This scraper wraps the lawsuits querying services provided to the general
|
56
98
|
public by the ''Sistema de Automação da Justiça'' website. '
|
57
99
|
email:
|
@@ -64,6 +106,7 @@ files:
|
|
64
106
|
- ".rspec"
|
65
107
|
- ".travis.yml"
|
66
108
|
- Gemfile
|
109
|
+
- Gemfile.lock
|
67
110
|
- LICENSE.txt
|
68
111
|
- README.md
|
69
112
|
- Rakefile
|
@@ -71,6 +114,14 @@ files:
|
|
71
114
|
- bin/setup
|
72
115
|
- esaj.gemspec
|
73
116
|
- lib/esaj.rb
|
117
|
+
- lib/esaj/forum.rb
|
118
|
+
- lib/esaj/lawsuit.rb
|
119
|
+
- lib/esaj/metadata.rb
|
120
|
+
- lib/esaj/parser_adapter.rb
|
121
|
+
- lib/esaj/query.rb
|
122
|
+
- lib/esaj/query_page.rb
|
123
|
+
- lib/esaj/scraper.rb
|
124
|
+
- lib/esaj/url_builder.rb
|
74
125
|
- lib/esaj/version.rb
|
75
126
|
homepage: https://github.com/betogrun/esaj
|
76
127
|
licenses:
|