ecfr 1.0.14 → 1.1.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/CHANGELOG.md +5 -0
- data/lib/ecfr/client.rb +0 -1
- data/lib/ecfr/version.rb +1 -1
- data/lib/ecfr/versioner_service/base.rb +1 -0
- data/lib/ecfr/versioner_service/issue_package/issue_volume.rb +48 -0
- data/lib/ecfr/versioner_service/issue_package/sha_comparison.rb +19 -0
- data/lib/ecfr/versioner_service/issue_package/title_version.rb +18 -0
- data/lib/ecfr/versioner_service/issue_package.rb +49 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 72944625e1bcb85c29e2fff986ac16e0d6c207791abfcea2f7f10ac7ab12b298
|
4
|
+
data.tar.gz: 7171f1a6e17465201664a6eedd6fe0d8bbf085d9fec531948110f90ef381354c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 72f8d38d3bcc820235bc816d14fcd761ab522131c887b0e0f4733c3001bbc69ece5cb64d1d280d98df7176a4d90dc59d16d379948437a6666f1d18270e936ead
|
7
|
+
data.tar.gz: d3b64de1ab08d60ee5fca9117f35a9d74545117b8f6a3b89aaf18b2eae75a951249d11e0a1249df75b5d8c45e1d5bf5a3d3887e123c238bf928a38871c893f67
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
## [Unreleased]
|
2
2
|
|
3
|
+
## [1.1.0] - 2024-06-28
|
4
|
+
### Updates
|
5
|
+
- Add classes to versioner service for SGML issue packages (e7743eeb)
|
6
|
+
- NOTE: this is an internal only endpoint
|
7
|
+
|
3
8
|
## [1.0.14] - 2024-02-13
|
4
9
|
### Updates
|
5
10
|
- Update path to admin API endpoints (eb267f08)
|
data/lib/ecfr/client.rb
CHANGED
@@ -87,7 +87,6 @@ module Ecfr
|
|
87
87
|
faraday.use Faraday::UserAgent::Middleware, Ecfr.config.user_agent
|
88
88
|
|
89
89
|
if Ecfr.config.log_http_requests
|
90
|
-
# https://lostisland.github.io/faraday/middleware/instrumentation
|
91
90
|
faraday.request :instrumentation
|
92
91
|
|
93
92
|
faraday.response :logger, Ecfr.config.logger, Ecfr.config.logger_options
|
data/lib/ecfr/version.rb
CHANGED
@@ -0,0 +1,48 @@
|
|
1
|
+
module Ecfr
|
2
|
+
module VersionerService
|
3
|
+
class IssuePackage
|
4
|
+
# Represents a single volume of a title from a specific issue. Only
|
5
|
+
# volumes that have changes are sent over as part of the issue for
|
6
|
+
# publication. These changed volumes are combined to create a final XML
|
7
|
+
# file representing the title for that issue date.
|
8
|
+
class IssueVolume
|
9
|
+
require_relative "sha_comparison"
|
10
|
+
require_relative "title_version"
|
11
|
+
|
12
|
+
include AttributeMethodDefinition
|
13
|
+
extend Extensible
|
14
|
+
|
15
|
+
attribute :id,
|
16
|
+
type: :integer,
|
17
|
+
desc: "issue package database id"
|
18
|
+
|
19
|
+
attribute :converted_title_xml,
|
20
|
+
type: ShaComparison,
|
21
|
+
desc: ""
|
22
|
+
|
23
|
+
attribute :converted_xml,
|
24
|
+
type: ShaComparison,
|
25
|
+
desc: "sha after conversion to GPO bulk XML format"
|
26
|
+
|
27
|
+
attribute :extracted_xml,
|
28
|
+
type: ShaComparison,
|
29
|
+
desc: "base sha for the volume extracted from the GPO bulk data XML"
|
30
|
+
|
31
|
+
attribute :title,
|
32
|
+
type: :integer,
|
33
|
+
desc: "Title number"
|
34
|
+
|
35
|
+
attribute :title_version,
|
36
|
+
type: TitleVersion,
|
37
|
+
desc: "the version record for the title associated with this volume"
|
38
|
+
|
39
|
+
attribute :volume,
|
40
|
+
type: :integer,
|
41
|
+
desc: "volume number"
|
42
|
+
|
43
|
+
attribute :volume_file_sha,
|
44
|
+
desc: "file sha for this volume"
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Ecfr
|
2
|
+
module VersionerService
|
3
|
+
class IssuePackage
|
4
|
+
# A wrapper for sha values after various types of processing
|
5
|
+
class ShaComparison
|
6
|
+
include AttributeMethodDefinition
|
7
|
+
|
8
|
+
attribute :sha,
|
9
|
+
desc: "base file sha"
|
10
|
+
|
11
|
+
attribute :some_blanks_sha,
|
12
|
+
desc: "file sha with some whitespace removed"
|
13
|
+
|
14
|
+
attribute :no_blanks_sha,
|
15
|
+
desc: "file sha with all whitespace removed"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Ecfr
|
2
|
+
module VersionerService
|
3
|
+
class IssuePackage
|
4
|
+
# TitleVersion represents the full XML for a specific title for a single
|
5
|
+
# issue date.
|
6
|
+
class TitleVersion
|
7
|
+
include AttributeMethodDefinition
|
8
|
+
|
9
|
+
attribute :id,
|
10
|
+
type: :integer,
|
11
|
+
desc: "title version database id"
|
12
|
+
|
13
|
+
attribute :sgml_sourced_xml_sha,
|
14
|
+
desc: "sha of of xml file converted from SGML with tables converted from the GPO table format"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module Ecfr
|
2
|
+
module VersionerService
|
3
|
+
# NOTE: IssuePackages are an internal API and are not publicly accessible
|
4
|
+
#
|
5
|
+
# Issue packages represent the data we receive from our upstream datasource
|
6
|
+
# and we then process into XML for ingestion.
|
7
|
+
# Various SHAs are calculated to allow for error checking and discrepency
|
8
|
+
# identification against the GPO bulk data XML.
|
9
|
+
#
|
10
|
+
# Each issue package will contain a file for each volume in each title that
|
11
|
+
# are changing in that issue.
|
12
|
+
class IssuePackage < Base
|
13
|
+
require_relative "issue_package/issue_volume"
|
14
|
+
|
15
|
+
result_key :issue_packages
|
16
|
+
|
17
|
+
attribute :id,
|
18
|
+
type: :integer,
|
19
|
+
desc: "issue pacakge database id"
|
20
|
+
|
21
|
+
attribute :issue_date,
|
22
|
+
type: :date,
|
23
|
+
desc: "issue date this package represents"
|
24
|
+
|
25
|
+
attribute :issue_volumes,
|
26
|
+
type: Array(IssueVolume),
|
27
|
+
desc: "array of the volumes in this issue package"
|
28
|
+
|
29
|
+
attribute :received_at,
|
30
|
+
type: :datetime,
|
31
|
+
desc: "when this issue package was received"
|
32
|
+
|
33
|
+
ISSUE_PACKAGES_PATH = "v1/issue_packages"
|
34
|
+
|
35
|
+
#
|
36
|
+
# Retreives the list of Issue Packages from the last 30 days
|
37
|
+
#
|
38
|
+
# @return [<IssuePackage>] array of Issue Packages and associated
|
39
|
+
# Issue Volumes
|
40
|
+
#
|
41
|
+
def self.all
|
42
|
+
perform(
|
43
|
+
:get,
|
44
|
+
ISSUE_PACKAGES_PATH
|
45
|
+
)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ecfr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peregrinator
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-07-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -349,6 +349,10 @@ files:
|
|
349
349
|
- lib/ecfr/versioner_service/ancestors/node_summary.rb
|
350
350
|
- lib/ecfr/versioner_service/api_documentation.rb
|
351
351
|
- lib/ecfr/versioner_service/base.rb
|
352
|
+
- lib/ecfr/versioner_service/issue_package.rb
|
353
|
+
- lib/ecfr/versioner_service/issue_package/issue_volume.rb
|
354
|
+
- lib/ecfr/versioner_service/issue_package/sha_comparison.rb
|
355
|
+
- lib/ecfr/versioner_service/issue_package/title_version.rb
|
352
356
|
- lib/ecfr/versioner_service/status.rb
|
353
357
|
- lib/ecfr/versioner_service/structure.rb
|
354
358
|
- lib/ecfr/versioner_service/title.rb
|