activitypub 0.4.0 → 0.4.2

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: 1c8cae4b7204912811e11efa38d689ee0cb418c480a7e3240a70a8d4dcafd699
4
- data.tar.gz: 4c732f4669c8ed60428d75b45bda5aac7ffa24e439d9fc4f8c733e51241438f3
3
+ metadata.gz: 56987420fcce47e1c1c7e1244f804a49bd9e83d80d161c63f90af8ad05c0b669
4
+ data.tar.gz: a80c527aa688521d97671dcfdbcb3eb55d2b35168fb2dcf1bee5c9ef92123d01
5
5
  SHA512:
6
- metadata.gz: 3f5e26e20e624d3c9ae77f66832e8ed6bee1516c84ec4cc1ef2d24f47b468c2e473ee15e4ecab7e000e910adef998870df26650aa7060753d5430dfb699c8717
7
- data.tar.gz: 40cfe87f071e5b8be1e6848f86232523f206e90b8b78c25ad9be0b7aa29c7b72f3da6c64da669edc384424c1e7ea9b4b5f813a15c0b1816ee3360568ec5d40cf
6
+ metadata.gz: 1e6b1f21ab13dfa05f3d9c44f1b3ccf71cc09b83af207800f99dd1ed1d89876cbd3c123385232652285a0e9227edc762a2f8010050f194930d783d11efa4a929
7
+ data.tar.gz: 9cfdb2e7f56a4b01dfd46f376adbf40843d28347af49d7f281f7588c7650920f29fc1df0b411b45ee9c867c709e71a87d92d3f7d73cf0b133d1375d98db02308
data/README.md CHANGED
@@ -1,7 +1,12 @@
1
1
  # ActivityPub
2
2
 
3
- *Very* early start on a set of classes to serialize/deserialize
4
- ActivityPub/ActivityStream objects.
3
+ A Ruby gem to make it easy to retrieve and work with ActivityPub/
4
+ ActivityStreams objects, as used in Mastodon, Lemmy, Pixelfed and
5
+ similar.
6
+
7
+ CAUTION: This is early days and the API is likely to change quickly.
8
+ If you want to start using this, please follow the project and/or let
9
+ me know.
5
10
 
6
11
  ## Goals
7
12
 
@@ -28,7 +33,10 @@ If bundler is not being used to manage dependencies, install the gem by executin
28
33
 
29
34
  ## Usage
30
35
 
31
- TODO: Write usage instructions here
36
+ TODO: Write usage instructions here.
37
+
38
+ For now your best bet is to look at the examples/ dir and the unit
39
+ tests.
32
40
 
33
41
  ## Development
34
42
 
@@ -30,7 +30,7 @@ puts
30
30
 
31
31
  ob = href.get
32
32
  PP.pp(ob)
33
- puts ob.to_json
33
+ #puts ob.to_json
34
34
  puts
35
35
  puts "Enter to continue"
36
36
  gets
@@ -38,3 +38,17 @@ gets
38
38
  puts "Trying to retrieve outbox"
39
39
  ob = ob.outbox.get
40
40
  PP.pp(ob)
41
+ puts
42
+ puts "Enter to continue"
43
+ gets
44
+
45
+ puts
46
+ puts "PAGE: #{ob.first}"
47
+ ob = ob.first.get
48
+ PP.pp(ob)
49
+
50
+ # For now, this will let you iterate through the collection.
51
+ # while ob && ob.orderedItems.length > 0
52
+ # PP.pp ob.id
53
+ # ob = ob.next&.get
54
+ # end
@@ -22,6 +22,9 @@ module ActivityPub
22
22
 
23
23
  ob = klass ? klass.new : nil
24
24
 
25
+ # FIXME: Useful for debug. Add flag to allow enabling.
26
+ # ob.instance_variable_set("@_raw",h)
27
+
25
28
  if ob
26
29
  context = h.dig("@context")
27
30
  ob.instance_variable_set("@_context", context) if context
@@ -38,7 +41,7 @@ module ActivityPub
38
41
  end
39
42
 
40
43
  if t = klass.ap_types[attr]
41
- v = t.new(v)
44
+ v = t.new(v) if v
42
45
  end
43
46
  ob.instance_variable_set("@#{attr}", v) if !v.nil?
44
47
  end
@@ -7,8 +7,13 @@ require_relative 'uri'
7
7
  module ActivityPub
8
8
 
9
9
  class Link < Base
10
- ap_attr :href
10
+ ap_attr :href, URI
11
+
12
+ # We don't mark "rel" as a URI as it's effectively
13
+ # used as an identifier for comparison rather than to
14
+ # dereference
11
15
  ap_attr :rel
16
+
12
17
  ap_attr :mediaType
13
18
  ap_attr :name
14
19
  ap_attr :hreflang
@@ -29,7 +34,7 @@ module ActivityPub
29
34
  ap_attr :generator
30
35
  ap_attr :icon
31
36
  ap_attr :image
32
- ap_attr :inReplyTo
37
+ ap_attr :inReplyTo, URI
33
38
  ap_attr :location
34
39
  ap_attr :preview
35
40
  ap_attr :published
@@ -38,7 +43,7 @@ module ActivityPub
38
43
  ap_attr :summary
39
44
  ap_attr :tag
40
45
  ap_attr :updated
41
- ap_attr :url
46
+ ap_attr :url, URI
42
47
  ap_attr :to
43
48
  ap_attr :bto
44
49
  ap_attr :cc
@@ -63,9 +68,12 @@ module ActivityPub
63
68
  class Collection < Object
64
69
  ap_attr :totalItems
65
70
  ap_attr :current
66
- ap_attr :first
67
- ap_attr :last
71
+ ap_attr :first, URI
72
+ ap_attr :last, URI
68
73
  ap_attr :items
74
+
75
+ def each(...) = Array(items).each(...)
76
+ def map(...) = Array(items).map(...)
69
77
  end
70
78
 
71
79
  class OrderedCollection < Collection
@@ -76,15 +84,24 @@ module ActivityPub
76
84
  #
77
85
  # FIXME: Review/consider whether to marge orderedItems/items internally.
78
86
  ap_attr :orderedItems
87
+
88
+ def each(...) = Array(orderedItems).each(...)
89
+ def map(...) = Array(orderedItems).map(...)
79
90
  end
80
91
 
81
92
  class CollectionPage < Collection
82
- ap_attr :partOf
83
- ap_attr :next
84
- ap_attr :prev
93
+ ap_attr :partOf, URI
94
+ ap_attr :next, URI
95
+ ap_attr :prev, URI
85
96
  end
86
-
87
- class OrderedCollectionPage < CollectionPage
97
+
98
+ # FIXME: OrderedCollectionPage inherits both CollectionPage and
99
+ # OrderedCollection.
100
+ #
101
+ class OrderedCollectionPage < OrderedCollection
102
+ ap_attr :partOf, URI
103
+ ap_attr :next, URI
104
+ ap_attr :prev, URI
88
105
  ap_attr :startIndex
89
106
  end
90
107
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActivityPub
4
- VERSION = "0.4.0"
4
+ VERSION = "0.4.2"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activitypub
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vidar Hokstad
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-07-15 00:00:00.000000000 Z
11
+ date: 2024-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: webfinger