didkit 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
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