distributed-press-api-client 0.4.0rc3 → 0.4.0

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: ee95dc9deb3cb19084a66ee33ee4970906619c6489ce0bf29b0aa9f90ae99d93
4
- data.tar.gz: abcb6a90f1e16ad51aac21f15b79067c141f4cdc45edfbddc69704dd235adac7
3
+ metadata.gz: 1a027ef2456449498ff03679402ac4a0f3689656cd5990e0aa9498b07e86beea
4
+ data.tar.gz: 1117e426318b07a0bbb833713b6e15fd5c614490d4ff05d1c29cac4cbbb8fc1a
5
5
  SHA512:
6
- metadata.gz: 5d3e98400b29ee2258a29beb1c47fab70a07d1cbdd43a96df9842a507d2ee3f3aaf9d3eeef1dee381967363227fb8af68b0b9f080861feac67595b1a081c43b0
7
- data.tar.gz: 55291cec6e026520a3e9f111fd80e55b4762aa551f1dcae12015951a01d9d6dd55bbda07394f5f36566e3500abed7673e2a71c90feaf2f4092ef838361d3c8e8
6
+ metadata.gz: c462c24bd87a73557218beefe37b3194016ee1462fbd061155018b09c068fba019027512c17eee71c8096f83bd10a14a81aaca06d6597efa9218e615341f24de
7
+ data.tar.gz: b9424cca5bf2d55085298e5205df63bfe6813b1a3874f3854c85a1cd9019a4207284468b5337081e2e73b7fbe7b9e8f6ceccc1e289d7a7a28fd856674ca5acb1
@@ -202,7 +202,7 @@ class DistributedPress
202
202
  # after the request is instantiated. No need to process
203
203
  # cookies for now. Uses the public key URL as a caching key so
204
204
  # we revalidate access on shared caches.
205
- options = { body: body, headers: headers, base_uri: url, parser: parser, stream_body: true, cache_key: public_key_url }
205
+ options = { body: body, headers: headers, base_uri: url, parser: parser, stream_body: true }
206
206
  options = HTTParty::ModuleInheritableAttributes.hash_deep_dup(self.class.default_options).merge(options)
207
207
  response_body = ''.dup
208
208
 
@@ -21,6 +21,23 @@ class DistributedPress
21
21
  @actor = actor
22
22
  end
23
23
 
24
+ # Creates a Social Inbox by uploading the keypair to it.
25
+ #
26
+ # @param actor_url [String] The URL where the Actor profile is hosted
27
+ # @return [HTTParty::Response]
28
+ def create(actor_url)
29
+ inbox_body = {
30
+ 'actorUrl' => actor_url,
31
+ 'publicKeyId' => "#{actor_url}#main-key",
32
+ 'keypair' => {
33
+ 'publicKeyPem' => client.public_key.public_to_pem,
34
+ 'privateKeyPem' => client.private_key.export
35
+ }
36
+ }
37
+
38
+ client.post(endpoint: "/v1/#{actor}", body: inbox_body)
39
+ end
40
+
24
41
  # Get the actor's inbox
25
42
  #
26
43
  # @return [HTTParty::Response]
@@ -3,5 +3,5 @@
3
3
  # API client
4
4
  class DistributedPress
5
5
  # Version
6
- VERSION = '0.4.0rc3'
6
+ VERSION = '0.4.0'
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: distributed-press-api-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0rc3
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - f
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-03-01 00:00:00.000000000 Z
11
+ date: 2024-03-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -311,7 +311,6 @@ files:
311
311
  - lib/distributed_press/v1/social/blocklist.rb
312
312
  - lib/distributed_press/v1/social/client.rb
313
313
  - lib/distributed_press/v1/social/dereferencer.rb
314
- - lib/distributed_press/v1/social/dereferencer.rb.orig
315
314
  - lib/distributed_press/v1/social/hook.rb
316
315
  - lib/distributed_press/v1/social/inbox.rb
317
316
  - lib/distributed_press/v1/social/outbox.rb
@@ -351,9 +350,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
351
350
  version: '2.7'
352
351
  required_rubygems_version: !ruby/object:Gem::Requirement
353
352
  requirements:
354
- - - ">"
353
+ - - ">="
355
354
  - !ruby/object:Gem::Version
356
- version: 1.3.1
355
+ version: '0'
357
356
  requirements: []
358
357
  rubygems_version: 3.3.26
359
358
  signing_key:
@@ -1,132 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'addressable'
4
- require_relative 'reference'
5
-
6
- class DistributedPress
7
- module V1
8
- module Social
9
- # Fetches ActivityStreams from different instances by
10
- # instantiating clients.
11
- class Dereferencer
12
- # @return [DistributedPress::V1::Social::Client]
13
- attr_reader :client
14
-
15
- REFERENTIABLE_ATTRIBUTES =
16
- %w[
17
- actor
18
- owner
19
- attributedTo
20
- cc
21
- inReplyTo
22
- object
23
- replies
24
- to
25
- publicKey
26
-
27
- alsoKnownAs
28
- devices
29
- featured
30
- featuredTags
31
- followers
32
- following
33
- inbox
34
- movedTo
35
- outbox
36
-
37
- first
38
- items
39
- next
40
- orderedItems
41
- partOf
42
- prev
43
- ].freeze
44
-
45
- # @param :client [DistributedPress::V1::Social::Client]
46
- def initialize(client:)
47
- @client = client
48
- @parser =
49
- proc do |body, format|
50
- next HTTParty::Parser.call(body, format || :plain) unless body&.starts_with? '{'
51
-
52
- HTTParty::Parser.call(body, :json).tap do |object|
53
- reference_object! object
54
- end
55
- end
56
- end
57
-
58
- # Fetch a URI
59
- #
60
- # @param :uri [String, Addressable::URI]
61
- # @return [HTTParty::Response]
62
- def get(uri:)
63
- uri = uris(uri)
64
-
65
- clients(uri).get(endpoint: uri.path, parser: @parser)
66
- end
67
-
68
- # Gets a client for a URI
69
- #
70
- # @param :uri [Addressable::URI]
71
- # @return [DistributedPress::V1::Social::Client]
72
- def clients(uri)
73
- @clients ||= {}
74
- @clients[uri.origin] ||=
75
- client.class.new(
76
- url: uri.origin,
77
- public_key_url: client.public_key_url,
78
- private_key_pem: client.private_key.to_s,
79
- logger: client.logger,
80
- cache_store: client.class.cache_store
81
- )
82
- end
83
-
84
- # Gets a reference for a URI and indexes it by the complete
85
- # and normalized URI
86
- #
87
- # @param :uri [String, Addressable::URI]
88
- # @return [DistributedPress::V1::Social::Reference]
89
- def references(uri)
90
- @references ||= {}
91
- @references[uri.to_s] ||= Reference.new(uri: uri.to_s, dereferencer: self)
92
- end
93
-
94
- # Make sure we're getting a normalized Addressable::URI
95
- #
96
- # @param :uri [String, Addressable::URI]
97
- # @return [Addressable::URI]
98
- def uris(uri)
99
- @uris ||= {}
100
- @uris[uri.to_s] ||=
101
- (if uri.is_a? Addressable::URI
102
- uri
103
- else
104
- Addressable::URI.parse(uri)
105
- end).normalize
106
- end
107
-
108
- def reference_object!(object)
109
- REFERENTIABLE_ATTRIBUTES.each do |attribute|
110
- next unless object.key? attribute
111
-
112
- case object[attribute]
113
- when Array
114
- object[attribute].map! do |o|
115
- case o
116
- when Hash
117
- reference_object!(o)
118
- o
119
- when String then references(uris(o))
120
- end
121
- end
122
- when Hash
123
- reference_object!(object[attribute])
124
- when String
125
- object[attribute] = references(uris(object[attribute]))
126
- end
127
- end
128
- end
129
- end
130
- end
131
- end
132
- end