activitypub 0.3.5 → 0.3.7

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: 8c0e1247ee89de99f86956188ce6bd17a3a5360b9abb222badc18b2671cca5b9
4
- data.tar.gz: eeede65bac6dd07a3ba9acdb9569d764448d2ff06816e59741431f9a8f3fdbff
3
+ metadata.gz: 58943510abdbebb4cce7084adcd2fd5c587abed81f103db968148248a9b1e7c1
4
+ data.tar.gz: 5ccd6bd6cff637fdc5717d064b8b02a29282c9e6d7549c8ad322bd30a0ce2503
5
5
  SHA512:
6
- metadata.gz: 62a13084316cbf4c333ab333f41639a1a41ec29e72d53c5a9ab61a82b13396a08eb553e2c147d9c2a35dc197756859f2c11d5c6dccfd8525573a2c1f9a74bbe3
7
- data.tar.gz: acdb52191d7b1fc1ca31178dc8becbeaeac3c97e4a4c14e2fba27fee3ca22722edb3c766cc3d98a9188181541a8b6384643ee3d241953558fd44360d36418c95
6
+ metadata.gz: 7a8b4a3a8cdac1be9d069c47b413d00573640ad59e0deca098bf0a0b5f06124bd3c2a43b66462b2f3bf23b3b187c0de55478878b875fa38674b7c53eac968b54
7
+ data.tar.gz: c4981e523c2754b2d83c9cf6f52fc6de61353b3373097a55b5531f325b08c1477195ba7bac58f3ee47eb3138cb743d06c1719f61e3779a06a3f9b45112011770
data/examples/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "webfinger"
6
+ gem "faraday"
@@ -0,0 +1,48 @@
1
+ GEM
2
+ remote: https://rubygems.org/
3
+ specs:
4
+ activesupport (7.1.3.4)
5
+ base64
6
+ bigdecimal
7
+ concurrent-ruby (~> 1.0, >= 1.0.2)
8
+ connection_pool (>= 2.2.5)
9
+ drb
10
+ i18n (>= 1.6, < 2)
11
+ minitest (>= 5.1)
12
+ mutex_m
13
+ tzinfo (~> 2.0)
14
+ base64 (0.2.0)
15
+ bigdecimal (3.1.8)
16
+ concurrent-ruby (1.3.3)
17
+ connection_pool (2.4.1)
18
+ drb (2.2.1)
19
+ faraday (2.10.0)
20
+ faraday-net_http (>= 2.0, < 3.2)
21
+ logger
22
+ faraday-follow_redirects (0.3.0)
23
+ faraday (>= 1, < 3)
24
+ faraday-net_http (3.1.0)
25
+ net-http
26
+ i18n (1.14.5)
27
+ concurrent-ruby (~> 1.0)
28
+ logger (1.6.0)
29
+ minitest (5.24.1)
30
+ mutex_m (0.2.0)
31
+ net-http (0.4.1)
32
+ uri
33
+ tzinfo (2.0.6)
34
+ concurrent-ruby (~> 1.0)
35
+ uri (0.13.0)
36
+ webfinger (2.1.3)
37
+ activesupport
38
+ faraday (~> 2.0)
39
+ faraday-follow_redirects
40
+
41
+ PLATFORMS
42
+ x86_64-linux
43
+
44
+ DEPENDENCIES
45
+ webfinger
46
+
47
+ BUNDLED WITH
48
+ 2.4.19
@@ -0,0 +1,39 @@
1
+
2
+ require 'pp'
3
+ $: << File.expand_path(__FILE__ + "/../../lib")
4
+ require 'activitypub'
5
+
6
+ acct = ARGV.shift || "vidar@galaxybound.com"
7
+
8
+ puts "Trying webfinger for #{acct} (to choose your own account, provide it as an argument)"
9
+ puts
10
+
11
+ wf = ActivityPub.webfinger(acct)
12
+ if !wf
13
+ puts "Unable to find #{acct}"
14
+ exit(1)
15
+ end
16
+
17
+ PP.pp wf
18
+ puts
19
+ puts "Enter to continue"
20
+ gets
21
+
22
+ href = wf.activitypub
23
+ if !href
24
+ puts "Unable to find a link to the actor"
25
+ exit(2)
26
+ end
27
+
28
+ puts "Trying to retrieve the Actor from #{href}"
29
+ puts
30
+
31
+ ob = href.get
32
+ PP.pp(ob)
33
+ puts
34
+ puts "Enter to continue"
35
+ gets
36
+
37
+ puts "Trying to retrieve outbox"
38
+ ob = ActivityPub::URI.new(ob.outbox).get
39
+ PP.pp(ob)
@@ -36,7 +36,10 @@ module ActivityPub
36
36
  av.is_a?(Hash) && av["type"] ? from_hash(av) : av
37
37
  end
38
38
  end
39
- ob.instance_variable_set("@#{attr}", v)
39
+ if attr.to_s == "href" && v.is_a?(String)
40
+ v = ActivityPub::URI.new(v)
41
+ end
42
+ ob.instance_variable_set("@#{attr}", v) if !v.nil?
40
43
  end
41
44
  end
42
45
 
@@ -51,6 +54,7 @@ module ActivityPub
51
54
  def _type = self.class.name.split("::").last
52
55
 
53
56
 
57
+ # FIXME: Allow specifying a type (e.g. URI)
54
58
  def self.ap_attr(*names)
55
59
  @ap_attributes ||= []
56
60
  @ap_attributes.concat(names)
@@ -2,6 +2,7 @@
2
2
  # https://www.w3.org/TR/activitystreams-vocabulary/
3
3
 
4
4
  require_relative 'base'
5
+ require_relative 'uri'
5
6
 
6
7
  module ActivityPub
7
8
 
@@ -0,0 +1,23 @@
1
+
2
+ require 'uri'
3
+ require 'faraday'
4
+
5
+ module ActivityPub
6
+ class URI
7
+ def initialize(href)
8
+ @href = href
9
+ end
10
+
11
+ def to_s = @href
12
+ def to_json = @href
13
+
14
+ def get
15
+ response = Faraday.get(self.to_s, {}, {"Accept": "application/activity+json"})
16
+ if response.status == 200
17
+ ActivityPub.from_json(response.body)
18
+ else
19
+ response
20
+ end
21
+ end
22
+ end
23
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActivityPub
4
- VERSION = "0.3.5"
4
+ VERSION = "0.3.7"
5
5
  end
@@ -0,0 +1,27 @@
1
+
2
+ require 'webfinger'
3
+
4
+ module ActivityPub
5
+ class WebFingerResult
6
+ def initialize(hash)
7
+ @h = hash
8
+
9
+ @h["aliases"] = @h["aliases"].map{ ActivityPub::URI.new(_1) }
10
+ @h["links"].each do |v|
11
+ if v["href"]
12
+ v["href"] = ActivityPub::URI.new(v["href"])
13
+ end
14
+ end
15
+ end
16
+
17
+ def[](i) = @h[i]
18
+
19
+ def activitypub
20
+ @activitypub ||= self["links"].find{ _1["rel"] == "self" && _1["type"] == "application/activity+json" }&.dig("href")
21
+ end
22
+ end
23
+
24
+ def self.webfinger(acct)
25
+ WebFingerResult.new(WebFinger.discover!(acct))
26
+ end
27
+ end
data/lib/activitypub.rb CHANGED
@@ -1,7 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "activitypub/version"
4
+ require_relative "activitypub/base"
4
5
  require_relative "activitypub/types"
6
+ require_relative "activitypub/uri"
7
+ require_relative "activitypub/webfinger"
5
8
 
6
9
  module ActivityPub
7
10
  class Error < StandardError; end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activitypub
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.5
4
+ version: 0.3.7
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-06 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2024-07-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: webfinger
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 2.1.3
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 2.1.3
13
27
  description:
14
28
  email:
15
29
  - vidar@hokstad.com
@@ -21,10 +35,15 @@ files:
21
35
  - LICENSE.txt
22
36
  - README.md
23
37
  - Rakefile
38
+ - examples/Gemfile
39
+ - examples/Gemfile.lock
40
+ - examples/get_actor.rb
24
41
  - lib/activitypub.rb
25
42
  - lib/activitypub/base.rb
26
43
  - lib/activitypub/types.rb
44
+ - lib/activitypub/uri.rb
27
45
  - lib/activitypub/version.rb
46
+ - lib/activitypub/webfinger.rb
28
47
  - sig/activitypub.rbs
29
48
  homepage: https://github.com/vidarh/activitypub
30
49
  licenses: