didkit 0.2.2 → 0.2.3
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 +7 -0
- data/README.md +5 -2
- data/lib/didkit/did.rb +8 -0
- data/lib/didkit/plc_importer.rb +19 -5
- data/lib/didkit/service_record.rb +3 -0
- data/lib/didkit/version.rb +1 -1
- metadata +3 -87
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ae1ff103a9695991ae3e0e97072c2b10731e7c18e44cfa5f715995ef0631df4f
|
4
|
+
data.tar.gz: b2bc822873a7804515d3ad06caa6c15e4177943668f6bcbb79f8c48fa87e4733
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5e4bbd991480a0a98c13c514e52a65bdceafd1c1a4feb75d60db07b22af10f376edaaea89bd98122c94c902c718c241a01965abaa801433b2a48162bb86d6ec1
|
7
|
+
data.tar.gz: 791481ed39520a72eb750e2d511f6017ca476a1386c15d6d6a667e2a170a7e63d0723e868b2d843c87d66d3d33306fcc6bd5cd3d359cbea8e213e6ba8a401f99
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
## [0.2.3] - 2024-07-02
|
2
|
+
|
3
|
+
- added a `DID#get_audit_log` method that fetches the PLC audit log for a DID
|
4
|
+
- added a way to set an error handler in `PLCImporter`
|
5
|
+
- reverted the change from 0.2.1 that added Ruby stdlib dependencies explicitly to the gemspec, since this causes more problems than it's worth
|
6
|
+
- minor bug fixes
|
7
|
+
|
1
8
|
## [0.2.2] - 2024-04-01
|
2
9
|
|
3
10
|
- added helpers for checking if a DID is known by (federated with) a relay or if the repo exists on its assigned PDS
|
data/README.md
CHANGED
@@ -1,6 +1,9 @@
|
|
1
|
-
# DIDKit
|
1
|
+
# DIDKit 🪪
|
2
2
|
|
3
|
-
A small Ruby gem for handling Distributed Identifiers (DIDs) in Bluesky / AT Protocol
|
3
|
+
A small Ruby gem for handling Distributed Identifiers (DIDs) in Bluesky / AT Protocol.
|
4
|
+
|
5
|
+
> [!NOTE]
|
6
|
+
> ATProto Ruby gems collection: [skyfall](https://github.com/mackuba/skyfall) | [blue_factory](https://github.com/mackuba/blue_factory) | [minisky](https://github.com/mackuba/minisky) | [didkit](https://github.com/mackuba/didkit)
|
4
7
|
|
5
8
|
|
6
9
|
## What does it do
|
data/lib/didkit/did.rb
CHANGED
@@ -37,6 +37,14 @@ module DIDKit
|
|
37
37
|
Resolver.new.get_validated_handle(self)
|
38
38
|
end
|
39
39
|
|
40
|
+
def get_audit_log
|
41
|
+
if @type == :plc
|
42
|
+
PLCImporter.new.fetch_audit_log(self)
|
43
|
+
else
|
44
|
+
raise DIDError.new("Audit log not supported for did:#{@type}")
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
40
48
|
def web_domain
|
41
49
|
did.gsub(/^did\:web\:/, '') if type == :web
|
42
50
|
end
|
data/lib/didkit/plc_importer.rb
CHANGED
@@ -9,7 +9,7 @@ module DIDKit
|
|
9
9
|
PLC_SERVICE = 'plc.directory'
|
10
10
|
MAX_PAGE = 1000
|
11
11
|
|
12
|
-
attr_accessor :ignore_errors, :last_date
|
12
|
+
attr_accessor :ignore_errors, :last_date, :error_handler
|
13
13
|
|
14
14
|
def initialize(since: nil)
|
15
15
|
if since.to_s == 'beginning'
|
@@ -22,14 +22,22 @@ module DIDKit
|
|
22
22
|
@last_date = Time.now
|
23
23
|
@eof = true
|
24
24
|
end
|
25
|
-
|
26
|
-
@ignore_errors = false
|
27
25
|
end
|
28
26
|
|
29
27
|
def plc_service
|
30
28
|
PLC_SERVICE
|
31
29
|
end
|
32
30
|
|
31
|
+
def ignore_errors=(val)
|
32
|
+
@ignore_errors = val
|
33
|
+
|
34
|
+
if val
|
35
|
+
@error_handler = proc { |e, j| "(ignore error)" }
|
36
|
+
else
|
37
|
+
@error_handler = nil
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
33
41
|
def get_export(args = {})
|
34
42
|
url = URI("https://#{plc_service}/export")
|
35
43
|
url.query = URI.encode_www_form(args)
|
@@ -38,6 +46,11 @@ module DIDKit
|
|
38
46
|
data.lines.map(&:strip).reject(&:empty?).map { |x| JSON.parse(x) }
|
39
47
|
end
|
40
48
|
|
49
|
+
def fetch_audit_log(did)
|
50
|
+
response = URI.open("https://#{plc_service}/#{did}/log/audit").read
|
51
|
+
JSON.parse(response).map { |j| PLCOperation.new(j) }
|
52
|
+
end
|
53
|
+
|
41
54
|
def fetch_page
|
42
55
|
request_time = Time.now
|
43
56
|
|
@@ -47,8 +60,9 @@ module DIDKit
|
|
47
60
|
operations = rows.filter_map do |json|
|
48
61
|
begin
|
49
62
|
PLCOperation.new(json)
|
50
|
-
rescue PLCOperation::FormatError => e
|
51
|
-
|
63
|
+
rescue PLCOperation::FormatError, AtHandles::FormatError, ServiceRecord::FormatError => e
|
64
|
+
@error_handler ? @error_handler.call(e, json) : raise
|
65
|
+
nil
|
52
66
|
end
|
53
67
|
end
|
54
68
|
|
data/lib/didkit/version.rb
CHANGED
metadata
CHANGED
@@ -1,99 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: didkit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kuba Suder
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
12
|
-
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: json
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '2.5'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '2.5'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: net-http
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0.1'
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0.1'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: open-uri
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0.1'
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0.1'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: resolv
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0.1'
|
62
|
-
type: :runtime
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0.1'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: time
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0.3'
|
76
|
-
type: :runtime
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0.3'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: uri
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - "~>"
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0.13'
|
90
|
-
type: :runtime
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - "~>"
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0.13'
|
11
|
+
date: 2024-07-02 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
97
13
|
description:
|
98
14
|
email:
|
99
15
|
- jakub.suder@gmail.com
|