ecfs 0.3.0 → 0.3.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 +4 -4
- data/.gitignore +1 -0
- data/README.md +31 -0
- data/ecfs.gemspec +1 -0
- data/fixtures/vcr_cassettes/bulk_cassette.yml +3655 -669
- data/fixtures/vcr_cassettes/main_cassette.yml +1187 -683
- data/lib/ecfs.rb +1 -0
- data/lib/ecfs/daily_release.rb +35 -0
- data/lib/ecfs/daily_releases_query.rb +28 -0
- data/lib/ecfs/version.rb +1 -1
- data/test/test_daily_releases.rb +21 -0
- data/test/test_large_proceeding.rb +22 -22
- data/test/test_proceeding.rb +40 -40
- data/test/test_proceedings_query.rb +19 -19
- metadata +19 -1
data/lib/ecfs.rb
CHANGED
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'pry'
|
2
|
+
|
3
|
+
module ECFS
|
4
|
+
class DailyRelease
|
5
|
+
attr_reader :pdfs
|
6
|
+
attr_reader :txts
|
7
|
+
attr_reader :docxs
|
8
|
+
|
9
|
+
def initialize(links, query_url)
|
10
|
+
@query_url = query_url
|
11
|
+
@links = links
|
12
|
+
@pdfs = find_links_by_type('pdf')
|
13
|
+
@txts = find_links_by_type('txt')
|
14
|
+
@docxs = find_links_by_type('docx')
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def find_links_by_type(type)
|
20
|
+
@links.select do |link|
|
21
|
+
link.attributes["href"].value.end_with?(".#{type}")
|
22
|
+
end.map do |link|
|
23
|
+
link_to_s(link)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def link_to_s(link)
|
28
|
+
href_val = link.attributes["href"].value
|
29
|
+
{
|
30
|
+
title: href_val,
|
31
|
+
url: @query_url + href_val
|
32
|
+
}
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require "pp"
|
2
|
+
require "pry"
|
3
|
+
require "mechanize"
|
4
|
+
require "ecfs/daily_release"
|
5
|
+
|
6
|
+
module ECFS
|
7
|
+
|
8
|
+
class DailyReleasesQuery
|
9
|
+
attr_accessor :day
|
10
|
+
attr_accessor :month
|
11
|
+
attr_accessor :year
|
12
|
+
|
13
|
+
def initialize
|
14
|
+
end
|
15
|
+
|
16
|
+
def get
|
17
|
+
url = "http://transition.fcc.gov/Daily_Releases/Daily_Business/#{@year}/db#{@month}#{@day}/"
|
18
|
+
agent = Mechanize.new
|
19
|
+
page = agent.get(url)
|
20
|
+
|
21
|
+
links = page.search('a')
|
22
|
+
links.shift
|
23
|
+
|
24
|
+
ECFS::DailyRelease.new(links, url)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
data/lib/ecfs/version.rb
CHANGED
@@ -0,0 +1,21 @@
|
|
1
|
+
require "helper"
|
2
|
+
require "pp"
|
3
|
+
|
4
|
+
class TestDailyReleases < MiniTest::Unit::TestCase
|
5
|
+
|
6
|
+
def test_synopsis
|
7
|
+
VCR.use_cassette('main_cassette') do
|
8
|
+
releases = ECFS::DailyReleasesQuery.new.tap do |q|
|
9
|
+
q.month = '12'
|
10
|
+
q.day = '17'
|
11
|
+
q.year = '2014'
|
12
|
+
end.get
|
13
|
+
|
14
|
+
assert releases.is_a?(ECFS::DailyRelease)
|
15
|
+
assert releases.respond_to?(:pdfs)
|
16
|
+
assert releases.respond_to?(:docxs)
|
17
|
+
assert releases.respond_to?(:txts)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
@@ -5,28 +5,28 @@ class TestLargeProceeding < MiniTest::Unit::TestCase
|
|
5
5
|
|
6
6
|
attr_accessor :results
|
7
7
|
|
8
|
-
def test_throws_error
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_bulk_filings_query
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
end
|
8
|
+
# def test_throws_error
|
9
|
+
# VCR.use_cassette('bulk_cassette') do
|
10
|
+
# docket_number = "09-191"
|
11
|
+
# query = ECFS::Filing.query.tap do |q|
|
12
|
+
# q.docket_number = docket_number
|
13
|
+
# end
|
14
|
+
# assert_raises ECFS::TooManyFilingsError do
|
15
|
+
# results = query.get
|
16
|
+
# end
|
17
|
+
# end
|
18
|
+
# end
|
19
|
+
#
|
20
|
+
# def test_bulk_filings_query
|
21
|
+
# VCR.use_cassette('bulk_cassette') do
|
22
|
+
# docket_number = "11-109"
|
23
|
+
# query = ECFS::BulkFilingsQuery.new(docket_number)
|
24
|
+
# filings = query.get
|
25
|
+
# proceeding = ECFS::Proceeding.find(docket_number)
|
26
|
+
#
|
27
|
+
# assert_equal proceeding["total_filings"].to_i, filings.length
|
28
|
+
# end
|
29
|
+
# end
|
30
30
|
|
31
31
|
#def test_bulk_filings_query_xxl
|
32
32
|
# VCR.use_cassette('bulk_cassette') do
|
data/test/test_proceeding.rb
CHANGED
@@ -18,45 +18,45 @@ class TestProceeding < MiniTest::Unit::TestCase
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
def test_search
|
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
|
-
|
21
|
+
# def test_search
|
22
|
+
# VCR.use_cassette('main_cassette') do
|
23
|
+
#
|
24
|
+
# proceedings = ECFS::Proceeding.query.tap do |q|
|
25
|
+
# q.bureau_code = "WC"
|
26
|
+
# q.page_number = "1"
|
27
|
+
# q.per_page = "100"
|
28
|
+
# end.get
|
29
|
+
#
|
30
|
+
# %w[
|
31
|
+
# total_pages first_result last_result total_results
|
32
|
+
# current_page constraints fcc_url results
|
33
|
+
# ].each do |key|
|
34
|
+
# assert proceedings.keys.include?(key)
|
35
|
+
# assert proceedings[key]
|
36
|
+
# end
|
37
|
+
#
|
38
|
+
# assert_equal ECFS::Proceeding::ResultSet, proceedings.class
|
39
|
+
# assert_equal ECFS::ProceedingsQuery, proceedings.next_query.class
|
40
|
+
# next_proceedings = proceedings.next
|
41
|
+
# assert_equal ECFS::Proceeding::ResultSet, next_proceedings.class
|
42
|
+
#
|
43
|
+
# prison_phones = proceedings["results"].select {|p| p["docket_number"] == "12-375"}.first
|
44
|
+
# prison_phones.fetch_filings!
|
45
|
+
#
|
46
|
+
# assert_equal Array, prison_phones["filings"].class
|
47
|
+
#
|
48
|
+
# prison_phones = proceedings["results"].select {|p| p["docket_number"] == "12-375"}.first
|
49
|
+
# assert_equal ECFS::Proceeding, prison_phones.class
|
50
|
+
# fetched = prison_phones.fetch_info!
|
51
|
+
# assert_equal ECFS::Proceeding, prison_phones.class
|
52
|
+
# %w[
|
53
|
+
# bureau_name subject date_created status
|
54
|
+
# total_filings filings_in_last_30_days
|
55
|
+
# ].each do |key|
|
56
|
+
# assert prison_phones.keys.include?(key)
|
57
|
+
# end
|
58
|
+
#
|
59
|
+
# end
|
60
|
+
# end
|
61
61
|
|
62
62
|
end
|
@@ -44,24 +44,24 @@ class TestProceedingsQuery < MiniTest::Unit::TestCase
|
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
47
|
-
def test_search_proceedings
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
end
|
47
|
+
# def test_search_proceedings
|
48
|
+
# VCR.use_cassette('main_cassette') do
|
49
|
+
# proceedings_query = ECFS::ProceedingsQuery.new
|
50
|
+
# proceedings_query.eq("bureau_code", "WC")
|
51
|
+
# proceedings_query.eq("page_number", "1")
|
52
|
+
# proceedings_query.eq("per_page", "100")
|
53
|
+
# results = proceedings_query.get
|
54
|
+
# %w[
|
55
|
+
# total_pages first_result last_result total_results
|
56
|
+
# current_page results
|
57
|
+
# ].each do |key|
|
58
|
+
# assert results.keys.include?(key)
|
59
|
+
# assert results[key]
|
60
|
+
# end
|
61
|
+
#
|
62
|
+
# result = results["results"].first
|
63
|
+
# assert_equal Fixnum, result["filings_in_last_30_days"].class
|
64
|
+
# end
|
65
|
+
# end
|
66
66
|
|
67
67
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ecfs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alan deLevie
|
@@ -94,6 +94,20 @@ dependencies:
|
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: m
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 1.3.1
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 1.3.1
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: pdf-reader
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -173,6 +187,8 @@ files:
|
|
173
187
|
- fixtures/vcr_cassettes/test_proceedings_query_test_get_proceeding_info.yml
|
174
188
|
- lib/ecfs.rb
|
175
189
|
- lib/ecfs/bulk_filings_query.rb
|
190
|
+
- lib/ecfs/daily_release.rb
|
191
|
+
- lib/ecfs/daily_releases_query.rb
|
176
192
|
- lib/ecfs/document.rb
|
177
193
|
- lib/ecfs/error.rb
|
178
194
|
- lib/ecfs/filing.rb
|
@@ -185,6 +201,7 @@ files:
|
|
185
201
|
- lib/ecfs/util.rb
|
186
202
|
- lib/ecfs/version.rb
|
187
203
|
- test/helper.rb
|
204
|
+
- test/test_daily_releases.rb
|
188
205
|
- test/test_filing.rb
|
189
206
|
- test/test_filings_query.rb
|
190
207
|
- test/test_large_proceeding.rb
|
@@ -217,6 +234,7 @@ summary: ECFS helps you obtain comments and other filings from the FCC's Electro
|
|
217
234
|
Comment Filing System
|
218
235
|
test_files:
|
219
236
|
- test/helper.rb
|
237
|
+
- test/test_daily_releases.rb
|
220
238
|
- test/test_filing.rb
|
221
239
|
- test/test_filings_query.rb
|
222
240
|
- test/test_large_proceeding.rb
|