blue_factory 0.1.1 → 0.1.3
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 +4 -4
- data/CHANGELOG.md +16 -1
- data/README.md +1 -1
- data/lib/blue_factory/errors.rb +3 -0
- data/lib/blue_factory/modules/feeds.rb +15 -1
- data/lib/blue_factory/server.rb +6 -5
- data/lib/blue_factory/version.rb +1 -1
- metadata +8 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c1a078159ccaad626c030e20a9ad18e1a408cc8897c27cddb9773c1bd1a6295c
|
4
|
+
data.tar.gz: b7c45df10d3419f21745b760b586fe21e1eb262e9a12c72a5282e3ca0616eace
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3347004aff37324480e13d2c1a21b85f737a9ab8898d874ecf26dad6f1b8f74ffa621ca24d4d76098be1479e145c08745d8c86a5cfcab68e66c8148bd6f76a8c
|
7
|
+
data.tar.gz: 15fd3de8b85ecb2175c3d3ede61b73257bac08e849935ad42aad6b428d70c1fbe1fbec970887db354a6fea8f36fa93851f2909452497cc33f50419bff4cd1bea
|
data/CHANGELOG.md
CHANGED
@@ -1 +1,16 @@
|
|
1
|
-
## [
|
1
|
+
## [0.1.3] - 2023-07-27
|
2
|
+
|
3
|
+
- fixed incorrect response when reaching the end of the feed
|
4
|
+
|
5
|
+
## [0.1.2] - 2023-06-15
|
6
|
+
|
7
|
+
- added validation for feed rkey
|
8
|
+
- renamed `all_feeds` to `feed_keys`, `all_feeds` now returns an array of feeds
|
9
|
+
|
10
|
+
## [0.1.1] - 2023-06-13
|
11
|
+
|
12
|
+
- added a rake task for publishing the feed to Bluesky
|
13
|
+
|
14
|
+
## [0.1.0] - 2023-06-12
|
15
|
+
|
16
|
+
Initial release: working version that serves all required endpoints for the feed.
|
data/README.md
CHANGED
@@ -22,7 +22,7 @@ The server is configured through the `BlueFactory` module. The two required sett
|
|
22
22
|
- `publisher_did` - DID identifier of the account that you will publish the feed on (the string that starts with `did:plc:...`)
|
23
23
|
- `hostname` - the hostname on which the feed service will be run
|
24
24
|
|
25
|
-
You also need to configure at least one feed by passing a feed key and a feed object. The key is the identifier that will appear at the end of the feed URI -
|
25
|
+
You also need to configure at least one feed by passing a feed key and a feed object. The key is the identifier that will appear at the end of the feed URI - it must only contain characters that are valid in URLs (preferably all lowercase) and it can't be longer than 15 characters. The object is anything that implements the single required method `get_posts` (could be a class, a module or an instance).
|
26
26
|
|
27
27
|
So a simple setup could look like this:
|
28
28
|
|
data/lib/blue_factory/errors.rb
CHANGED
@@ -5,15 +5,29 @@ module BlueFactory
|
|
5
5
|
end
|
6
6
|
|
7
7
|
def add_feed(key, feed_class)
|
8
|
+
validate_key(key)
|
8
9
|
@feeds[key.to_s] = feed_class
|
9
10
|
end
|
10
11
|
|
11
|
-
def
|
12
|
+
def feed_keys
|
12
13
|
@feeds.keys
|
13
14
|
end
|
14
15
|
|
15
16
|
def get_feed(key)
|
16
17
|
@feeds[key.to_s]
|
17
18
|
end
|
19
|
+
|
20
|
+
def all_feeds
|
21
|
+
@feeds.values
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def validate_key(key)
|
27
|
+
raise InvalidKeyError, "Key must be a string" unless key.is_a?(String)
|
28
|
+
raise InvalidKeyError, "Key must not be empty" if key == ''
|
29
|
+
raise InvalidKeyError, "Key must not contain a slash" if key.include?('/')
|
30
|
+
raise InvalidKeyError, "Key must not be longer than 15 characters" if key.length > 15
|
31
|
+
end
|
18
32
|
end
|
19
33
|
end
|
data/lib/blue_factory/server.rb
CHANGED
@@ -69,10 +69,11 @@ module BlueFactory
|
|
69
69
|
response = feed.get_posts(params.slice(:feed, :cursor, :limit))
|
70
70
|
validate_response(response) if config.validate_responses
|
71
71
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
72
|
+
output = {}
|
73
|
+
output[:feed] = response[:posts].map { |s| { post: s }}
|
74
|
+
output[:cursor] = response[:cursor] if response[:cursor]
|
75
|
+
|
76
|
+
return json(output)
|
76
77
|
rescue InvalidRequestError => e
|
77
78
|
return json_error(e.error_type || "InvalidRequest", e.message)
|
78
79
|
rescue InvalidResponseError => e
|
@@ -83,7 +84,7 @@ module BlueFactory
|
|
83
84
|
get '/xrpc/app.bsky.feed.describeFeedGenerator' do
|
84
85
|
return json({
|
85
86
|
did: config.service_did,
|
86
|
-
feeds: config.
|
87
|
+
feeds: config.feed_keys.map { |f| { uri: feed_uri(f) }}
|
87
88
|
})
|
88
89
|
end
|
89
90
|
|
data/lib/blue_factory/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blue_factory
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.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-
|
11
|
+
date: 2023-07-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sinatra
|
@@ -24,7 +24,11 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '3.0'
|
27
|
-
description:
|
27
|
+
description: "\n BlueFactory is a Ruby library which helps you build a web service
|
28
|
+
that hosts custom feeds a.k.a. feed generators\n for the Bluesky social network.
|
29
|
+
It implements a simple HTTP server based on Sinatra which provides the required\n
|
30
|
+
\ endpoints for the feed generator interface. You need to provide the content
|
31
|
+
for the feed by making a query to your\n preferred local database.\n "
|
28
32
|
email:
|
29
33
|
- jakub.suder@gmail.com
|
30
34
|
executables: []
|
@@ -70,5 +74,5 @@ requirements: []
|
|
70
74
|
rubygems_version: 3.4.10
|
71
75
|
signing_key:
|
72
76
|
specification_version: 4
|
73
|
-
summary:
|
77
|
+
summary: A Ruby gem for hosting custom feeds for Bluesky
|
74
78
|
test_files: []
|