skyfall 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 +4 -4
- data/CHANGELOG.md +6 -0
- data/lib/skyfall/car_archive.rb +20 -10
- data/lib/skyfall/collection.rb +11 -8
- data/lib/skyfall/operation.rb +11 -8
- data/lib/skyfall/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3917568c1283d599d3103b428599141e04d0df2cce33c4b17291bc935b8add4d
|
4
|
+
data.tar.gz: 329dd70a2f17bb689fa0a10c6646c7f522c1ac165b1e0ef49f96cd5b6d746d57
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '09e6812b1234a0f7e4aeab3dee4fe962b47a781d7ddcf1151b1f310558e72837808caee9c1ca0d4e98f7e137e7147b72c8bdcd9ae17501c48f1d1dcc1a32ca35'
|
7
|
+
data.tar.gz: 5c558d41a7fc49ecc34273a791dc26a706c00708ca0b00b09a59d5bdc4684ff4f14611c065e35343f65d7989a948e5294b7c9edc55b41426f5b2eae893bea392
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
## [0.2.3] - 2023-09-28
|
2
|
+
|
3
|
+
- fixed encoding of image CIDs again (they should be wrapped in a `$link` object)
|
4
|
+
- binary strings are now correctly returned as `$bytes` objects
|
5
|
+
- added `list`, `listblock` and `threadgate` to record type symbols and collection constants
|
6
|
+
|
1
7
|
## [0.2.2] - 2023-09-06
|
2
8
|
|
3
9
|
- fixed image CIDs returned in the record JSON as CBOR tag objects (they are now returned decoded to the string form)
|
data/lib/skyfall/car_archive.rb
CHANGED
@@ -2,6 +2,7 @@ require_relative 'cid'
|
|
2
2
|
require_relative 'errors'
|
3
3
|
require_relative 'extensions'
|
4
4
|
|
5
|
+
require 'base64'
|
5
6
|
require 'cbor'
|
6
7
|
require 'stringio'
|
7
8
|
|
@@ -33,30 +34,30 @@ module Skyfall
|
|
33
34
|
|
34
35
|
def section_with_cid(cid)
|
35
36
|
section = @sections.detect { |s| s.cid == cid }
|
36
|
-
|
37
|
-
if section
|
38
|
-
convert_cids(section.body)
|
39
|
-
section.body
|
40
|
-
end
|
37
|
+
section && section.body
|
41
38
|
end
|
42
39
|
|
43
40
|
private
|
44
41
|
|
45
|
-
def
|
42
|
+
def convert_data(object)
|
46
43
|
if object.is_a?(Hash)
|
47
44
|
object.each do |k, v|
|
48
45
|
if v.is_a?(Hash) || v.is_a?(Array)
|
49
|
-
|
46
|
+
convert_data(v)
|
50
47
|
elsif v.is_a?(CBOR::Tagged)
|
51
|
-
object[k] =
|
48
|
+
object[k] = make_cid_link(v)
|
49
|
+
elsif v.is_a?(String) && v.encoding == Encoding::ASCII_8BIT
|
50
|
+
object[k] = make_bytes(v)
|
52
51
|
end
|
53
52
|
end
|
54
53
|
elsif object.is_a?(Array)
|
55
54
|
object.each_with_index do |v, i|
|
56
55
|
if v.is_a?(Hash) || v.is_a?(Array)
|
57
|
-
|
56
|
+
convert_data(v)
|
58
57
|
elsif v.is_a?(CBOR::Tagged)
|
59
|
-
object[i] =
|
58
|
+
object[i] = make_cid_link(v)
|
59
|
+
elsif v.is_a?(String) && v.encoding == Encoding::ASCII_8BIT
|
60
|
+
object[i] = make_bytes(v)
|
60
61
|
end
|
61
62
|
end
|
62
63
|
else
|
@@ -64,6 +65,14 @@ module Skyfall
|
|
64
65
|
end
|
65
66
|
end
|
66
67
|
|
68
|
+
def make_cid_link(cid)
|
69
|
+
{ '$link' => CID.from_cbor_tag(cid) }
|
70
|
+
end
|
71
|
+
|
72
|
+
def make_bytes(data)
|
73
|
+
{ '$bytes' => Base64.encode64(data).chomp.gsub(/=+$/, '') }
|
74
|
+
end
|
75
|
+
|
67
76
|
def read_header(buffer)
|
68
77
|
len = buffer.read_varint
|
69
78
|
|
@@ -104,6 +113,7 @@ module Skyfall
|
|
104
113
|
|
105
114
|
body_data = sbuffer.read
|
106
115
|
body = CBOR.decode(body_data)
|
116
|
+
convert_data(body)
|
107
117
|
|
108
118
|
@sections << CarSection.new(cid, body)
|
109
119
|
end
|
data/lib/skyfall/collection.rb
CHANGED
@@ -1,12 +1,15 @@
|
|
1
1
|
module Skyfall
|
2
2
|
module Collection
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
3
|
+
BSKY_PROFILE = "app.bsky.actor.profile"
|
4
|
+
BSKY_FEED = "app.bsky.feed.generator"
|
5
|
+
BSKY_LIKE = "app.bsky.feed.like"
|
6
|
+
BSKY_POST = "app.bsky.feed.post"
|
7
|
+
BSKY_REPOST = "app.bsky.feed.repost"
|
8
|
+
BSKY_THREADGATE = "app.bsky.feed.threadgate"
|
9
|
+
BSKY_BLOCK = "app.bsky.graph.block"
|
10
|
+
BSKY_FOLLOW = "app.bsky.graph.follow"
|
11
|
+
BSKY_LIST = "app.bsky.graph.list"
|
12
|
+
BSKY_LISTBLOCK = "app.bsky.graph.listblock"
|
13
|
+
BSKY_LISTITEM = "app.bsky.graph.listitem"
|
11
14
|
end
|
12
15
|
end
|
data/lib/skyfall/operation.rb
CHANGED
@@ -41,14 +41,17 @@ module Skyfall
|
|
41
41
|
|
42
42
|
def type
|
43
43
|
case collection
|
44
|
-
when Collection::
|
45
|
-
when Collection::
|
46
|
-
when Collection::BSKY_FOLLOW
|
47
|
-
when Collection::
|
48
|
-
when Collection::
|
49
|
-
when Collection::
|
50
|
-
when Collection::BSKY_LISTITEM
|
51
|
-
when Collection::
|
44
|
+
when Collection::BSKY_BLOCK then :bsky_block
|
45
|
+
when Collection::BSKY_FEED then :bsky_feed
|
46
|
+
when Collection::BSKY_FOLLOW then :bsky_follow
|
47
|
+
when Collection::BSKY_LIKE then :bsky_like
|
48
|
+
when Collection::BSKY_LIST then :bsky_list
|
49
|
+
when Collection::BSKY_LISTBLOCK then :bsky_listblock
|
50
|
+
when Collection::BSKY_LISTITEM then :bsky_listitem
|
51
|
+
when Collection::BSKY_POST then :bsky_post
|
52
|
+
when Collection::BSKY_PROFILE then :bsky_profile
|
53
|
+
when Collection::BSKY_REPOST then :bsky_repost
|
54
|
+
when Collection::BSKY_THREADGATE then :bsky_threadgate
|
52
55
|
else :unknown
|
53
56
|
end
|
54
57
|
end
|
data/lib/skyfall/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: skyfall
|
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: 2023-09-
|
11
|
+
date: 2023-09-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: base32
|