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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fd7709e2b0973a44b71e939798901a6fd74bc9fa25e284958948fc4fe22de51e
4
- data.tar.gz: b38397ddc0244f9035719dba7eb0fdcd844feb549e9628462da16b4aba662cf4
3
+ metadata.gz: ae1ff103a9695991ae3e0e97072c2b10731e7c18e44cfa5f715995ef0631df4f
4
+ data.tar.gz: b2bc822873a7804515d3ad06caa6c15e4177943668f6bcbb79f8c48fa87e4733
5
5
  SHA512:
6
- metadata.gz: 2d5ddb2ce60022530ffd59879d5734d4300a091eb78db13028ae10a55d8ee83981ba6d20a7c933c2b6249245f40adf7458d0687f7349fa042915445e260b2e3a
7
- data.tar.gz: 9a8c796fee2372323a405ec8962671438cbd7263b1265f31eb45a324dfcab7e33557dbf74b1f4b87fed0492467965ef7222569ee7fad2511efb41b7b52d33ed9
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
@@ -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
- ignore_errors ? nil : raise
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
 
@@ -3,6 +3,9 @@ require_relative 'errors'
3
3
 
4
4
  module DIDKit
5
5
  class ServiceRecord
6
+ class FormatError < StandardError
7
+ end
8
+
6
9
  attr_reader :key, :type, :endpoint
7
10
 
8
11
  def initialize(key, type, endpoint)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DIDKit
4
- VERSION = "0.2.2"
4
+ VERSION = "0.2.3"
5
5
  end
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.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-03-31 00:00:00.000000000 Z
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