diaspora_federation 0.1.9 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Changelog.md +34 -0
- data/lib/diaspora_federation/discovery/discovery.rb +2 -2
- data/lib/diaspora_federation/discovery/h_card.rb +2 -10
- data/lib/diaspora_federation/discovery/host_meta.rb +1 -1
- data/lib/diaspora_federation/discovery/web_finger.rb +47 -87
- data/lib/diaspora_federation/discovery/xrd_document.rb +20 -7
- data/lib/diaspora_federation/entities/account_migration.rb +74 -0
- data/lib/diaspora_federation/entities/comment.rb +0 -4
- data/lib/diaspora_federation/entities/event_participation.rb +0 -8
- data/lib/diaspora_federation/entities/like.rb +6 -10
- data/lib/diaspora_federation/entities/message.rb +14 -49
- data/lib/diaspora_federation/entities/participation.rb +23 -13
- data/lib/diaspora_federation/entities/poll_participation.rb +0 -4
- data/lib/diaspora_federation/entities/profile.rb +5 -0
- data/lib/diaspora_federation/entities/related_entity.rb +17 -0
- data/lib/diaspora_federation/entities/relayable.rb +82 -113
- data/lib/diaspora_federation/entities/relayable_retraction.rb +4 -43
- data/lib/diaspora_federation/entities/request.rb +4 -12
- data/lib/diaspora_federation/entities/reshare.rb +11 -7
- data/lib/diaspora_federation/entities/retraction.rb +4 -5
- data/lib/diaspora_federation/entities/signable.rb +54 -0
- data/lib/diaspora_federation/entities/signed_retraction.rb +4 -44
- data/lib/diaspora_federation/entities.rb +2 -0
- data/lib/diaspora_federation/entity.rb +74 -96
- data/lib/diaspora_federation/federation/fetcher.rb +1 -1
- data/lib/diaspora_federation/federation/receiver.rb +1 -1
- data/lib/diaspora_federation/federation/sender/hydra_wrapper.rb +37 -12
- data/lib/diaspora_federation/federation/sender.rb +2 -2
- data/lib/diaspora_federation/parsers/base_parser.rb +61 -0
- data/lib/diaspora_federation/parsers/json_parser.rb +60 -0
- data/lib/diaspora_federation/parsers/relayable_json_parser.rb +25 -0
- data/lib/diaspora_federation/parsers/relayable_xml_parser.rb +22 -0
- data/lib/diaspora_federation/parsers/xml_parser.rb +84 -0
- data/lib/diaspora_federation/parsers.rb +13 -0
- data/lib/diaspora_federation/properties_dsl.rb +1 -1
- data/lib/diaspora_federation/salmon/encrypted_magic_envelope.rb +1 -1
- data/lib/diaspora_federation/salmon/encrypted_slap.rb +2 -99
- data/lib/diaspora_federation/salmon/magic_envelope.rb +3 -19
- data/lib/diaspora_federation/salmon/slap.rb +1 -42
- data/lib/diaspora_federation/salmon/xml_payload.rb +0 -19
- data/lib/diaspora_federation/schemas/federation_entities.json +379 -0
- data/lib/diaspora_federation/validators/account_deletion_validator.rb +1 -1
- data/lib/diaspora_federation/validators/account_migration_validator.rb +12 -0
- data/lib/diaspora_federation/validators/contact_validator.rb +2 -2
- data/lib/diaspora_federation/validators/conversation_validator.rb +1 -1
- data/lib/diaspora_federation/validators/event_validator.rb +1 -1
- data/lib/diaspora_federation/validators/h_card_validator.rb +2 -5
- data/lib/diaspora_federation/validators/message_validator.rb +1 -1
- data/lib/diaspora_federation/validators/participation_validator.rb +1 -1
- data/lib/diaspora_federation/validators/person_validator.rb +2 -2
- data/lib/diaspora_federation/validators/photo_validator.rb +1 -1
- data/lib/diaspora_federation/validators/profile_validator.rb +1 -1
- data/lib/diaspora_federation/validators/related_entity_validator.rb +1 -1
- data/lib/diaspora_federation/validators/relayable_validator.rb +1 -1
- data/lib/diaspora_federation/validators/reshare_validator.rb +2 -2
- data/lib/diaspora_federation/validators/retraction_validator.rb +1 -1
- data/lib/diaspora_federation/validators/rules/boolean.rb +2 -2
- data/lib/diaspora_federation/validators/status_message_validator.rb +1 -1
- data/lib/diaspora_federation/validators/web_finger_validator.rb +5 -6
- data/lib/diaspora_federation/validators.rb +1 -5
- data/lib/diaspora_federation/version.rb +1 -1
- data/lib/diaspora_federation.rb +6 -2
- metadata +14 -11
- data/lib/diaspora_federation/validators/relayable_retraction_validator.rb +0 -15
- data/lib/diaspora_federation/validators/request_validator.rb +0 -12
- data/lib/diaspora_federation/validators/signed_retraction_validator.rb +0 -15
- data/lib/tasks/build.rake +0 -14
- data/lib/tasks/diaspora_federation_tasks.rake +0 -4
- data/lib/tasks/rails4.rake +0 -15
- data/lib/tasks/tests.rake +0 -18
@@ -2,14 +2,11 @@ module DiasporaFederation
|
|
2
2
|
module Validators
|
3
3
|
# This validates a {Discovery::HCard}.
|
4
4
|
#
|
5
|
-
# @todo activate guid and public key validation after all pod have it in
|
6
|
-
# the hcard.
|
7
|
-
#
|
8
5
|
# @note
|
9
6
|
class HCardValidator < Validation::Validator
|
10
7
|
include Validation
|
11
8
|
|
12
|
-
|
9
|
+
rule :guid, :guid
|
13
10
|
|
14
11
|
# The name must not contain a semicolon because of mentions.
|
15
12
|
# @{<full_name> ; <diaspora_id>}
|
@@ -22,7 +19,7 @@ module DiasporaFederation
|
|
22
19
|
rule :photo_medium_url, [:not_nil, URI: [:path]]
|
23
20
|
rule :photo_small_url, [:not_nil, URI: [:path]]
|
24
21
|
|
25
|
-
|
22
|
+
rule :public_key, :public_key
|
26
23
|
|
27
24
|
rule :searchable, :boolean
|
28
25
|
end
|
@@ -4,7 +4,7 @@ module DiasporaFederation
|
|
4
4
|
class ParticipationValidator < Validation::Validator
|
5
5
|
include Validation
|
6
6
|
|
7
|
-
rule :author, %i
|
7
|
+
rule :author, %i[not_empty diaspora_id]
|
8
8
|
rule :guid, :guid
|
9
9
|
rule :parent_guid, :guid
|
10
10
|
rule :parent_type, [:not_empty, regular_expression: {regex: /\APost\z/}]
|
@@ -6,7 +6,7 @@ module DiasporaFederation
|
|
6
6
|
# @param [Validation::Validator] validator the validator in which it is included
|
7
7
|
def self.included(validator)
|
8
8
|
validator.class_eval do
|
9
|
-
rule :author, %i
|
9
|
+
rule :author, %i[not_empty diaspora_id]
|
10
10
|
rule :guid, :guid
|
11
11
|
rule :parent_guid, :guid
|
12
12
|
rule :parent, :not_nil
|
@@ -4,11 +4,11 @@ module DiasporaFederation
|
|
4
4
|
class ReshareValidator < Validation::Validator
|
5
5
|
include Validation
|
6
6
|
|
7
|
-
rule :root_author, %i
|
7
|
+
rule :root_author, %i[not_empty diaspora_id]
|
8
8
|
|
9
9
|
rule :root_guid, :guid
|
10
10
|
|
11
|
-
rule :author, %i
|
11
|
+
rule :author, %i[not_empty diaspora_id]
|
12
12
|
|
13
13
|
rule :guid, :guid
|
14
14
|
|
@@ -20,8 +20,8 @@ module Validation
|
|
20
20
|
if value.is_a?(String)
|
21
21
|
true if value =~ /\A(true|false|t|f|yes|no|y|n|1|0)\z/i
|
22
22
|
elsif value.is_a?(Integer)
|
23
|
-
true if
|
24
|
-
elsif [true, false].include?
|
23
|
+
true if [1, 0].include?(value)
|
24
|
+
elsif [true, false].include?(value)
|
25
25
|
true
|
26
26
|
else
|
27
27
|
false
|
@@ -9,12 +9,11 @@ module DiasporaFederation
|
|
9
9
|
|
10
10
|
rule :acct_uri, :not_empty
|
11
11
|
|
12
|
-
rule :
|
13
|
-
rule :
|
14
|
-
rule :
|
15
|
-
rule :
|
16
|
-
rule :
|
17
|
-
rule :salmon_url, URI: %i(host path)
|
12
|
+
rule :hcard_url, [:not_nil, URI: %i[host path]]
|
13
|
+
rule :seed_url, %i[not_nil URI]
|
14
|
+
rule :profile_url, URI: %i[host path]
|
15
|
+
rule :atom_url, URI: %i[host path]
|
16
|
+
rule :salmon_url, URI: %i[host path]
|
18
17
|
end
|
19
18
|
end
|
20
19
|
end
|
@@ -41,6 +41,7 @@ require "diaspora_federation/validators/relayable_validator"
|
|
41
41
|
|
42
42
|
# types
|
43
43
|
require "diaspora_federation/validators/account_deletion_validator"
|
44
|
+
require "diaspora_federation/validators/account_migration_validator"
|
44
45
|
require "diaspora_federation/validators/comment_validator"
|
45
46
|
require "diaspora_federation/validators/contact_validator"
|
46
47
|
require "diaspora_federation/validators/conversation_validator"
|
@@ -61,8 +62,3 @@ require "diaspora_federation/validators/reshare_validator"
|
|
61
62
|
require "diaspora_federation/validators/retraction_validator"
|
62
63
|
require "diaspora_federation/validators/status_message_validator"
|
63
64
|
require "diaspora_federation/validators/web_finger_validator"
|
64
|
-
|
65
|
-
# deprecated
|
66
|
-
require "diaspora_federation/validators/relayable_retraction_validator"
|
67
|
-
require "diaspora_federation/validators/request_validator"
|
68
|
-
require "diaspora_federation/validators/signed_retraction_validator"
|
data/lib/diaspora_federation.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
require "nokogiri"
|
2
|
+
require "openssl"
|
3
|
+
|
1
4
|
require "diaspora_federation/version"
|
2
5
|
|
3
6
|
require "diaspora_federation/logging"
|
@@ -10,6 +13,7 @@ require "diaspora_federation/validators"
|
|
10
13
|
require "diaspora_federation/http_client"
|
11
14
|
|
12
15
|
require "diaspora_federation/entities"
|
16
|
+
require "diaspora_federation/parsers"
|
13
17
|
|
14
18
|
require "diaspora_federation/discovery"
|
15
19
|
require "diaspora_federation/salmon"
|
@@ -19,7 +23,7 @@ require "diaspora_federation/federation"
|
|
19
23
|
module DiasporaFederation
|
20
24
|
extend Logging
|
21
25
|
|
22
|
-
@callbacks = Callbacks.new %i
|
26
|
+
@callbacks = Callbacks.new %i[
|
23
27
|
fetch_person_for_webfinger
|
24
28
|
fetch_person_for_hcard
|
25
29
|
save_person_after_webfinger
|
@@ -32,7 +36,7 @@ module DiasporaFederation
|
|
32
36
|
fetch_public_entity
|
33
37
|
fetch_person_url_to
|
34
38
|
update_pod
|
35
|
-
|
39
|
+
]
|
36
40
|
|
37
41
|
# defaults
|
38
42
|
@http_concurrency = 20
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: diaspora_federation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Benjamin Neff
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-07-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -39,7 +39,7 @@ dependencies:
|
|
39
39
|
version: 0.9.0
|
40
40
|
- - "<"
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: 0.
|
42
|
+
version: 0.13.0
|
43
43
|
type: :runtime
|
44
44
|
prerelease: false
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -49,7 +49,7 @@ dependencies:
|
|
49
49
|
version: 0.9.0
|
50
50
|
- - "<"
|
51
51
|
- !ruby/object:Gem::Version
|
52
|
-
version: 0.
|
52
|
+
version: 0.13.0
|
53
53
|
- !ruby/object:Gem::Dependency
|
54
54
|
name: faraday_middleware
|
55
55
|
requirement: !ruby/object:Gem::Requirement
|
@@ -121,6 +121,7 @@ files:
|
|
121
121
|
- lib/diaspora_federation/discovery/xrd_document.rb
|
122
122
|
- lib/diaspora_federation/entities.rb
|
123
123
|
- lib/diaspora_federation/entities/account_deletion.rb
|
124
|
+
- lib/diaspora_federation/entities/account_migration.rb
|
124
125
|
- lib/diaspora_federation/entities/comment.rb
|
125
126
|
- lib/diaspora_federation/entities/contact.rb
|
126
127
|
- lib/diaspora_federation/entities/conversation.rb
|
@@ -143,6 +144,7 @@ files:
|
|
143
144
|
- lib/diaspora_federation/entities/request.rb
|
144
145
|
- lib/diaspora_federation/entities/reshare.rb
|
145
146
|
- lib/diaspora_federation/entities/retraction.rb
|
147
|
+
- lib/diaspora_federation/entities/signable.rb
|
146
148
|
- lib/diaspora_federation/entities/signed_retraction.rb
|
147
149
|
- lib/diaspora_federation/entities/status_message.rb
|
148
150
|
- lib/diaspora_federation/entity.rb
|
@@ -157,6 +159,12 @@ files:
|
|
157
159
|
- lib/diaspora_federation/federation/sender/hydra_wrapper.rb
|
158
160
|
- lib/diaspora_federation/http_client.rb
|
159
161
|
- lib/diaspora_federation/logging.rb
|
162
|
+
- lib/diaspora_federation/parsers.rb
|
163
|
+
- lib/diaspora_federation/parsers/base_parser.rb
|
164
|
+
- lib/diaspora_federation/parsers/json_parser.rb
|
165
|
+
- lib/diaspora_federation/parsers/relayable_json_parser.rb
|
166
|
+
- lib/diaspora_federation/parsers/relayable_xml_parser.rb
|
167
|
+
- lib/diaspora_federation/parsers/xml_parser.rb
|
160
168
|
- lib/diaspora_federation/properties_dsl.rb
|
161
169
|
- lib/diaspora_federation/salmon.rb
|
162
170
|
- lib/diaspora_federation/salmon/aes.rb
|
@@ -166,8 +174,10 @@ files:
|
|
166
174
|
- lib/diaspora_federation/salmon/magic_envelope.rb
|
167
175
|
- lib/diaspora_federation/salmon/slap.rb
|
168
176
|
- lib/diaspora_federation/salmon/xml_payload.rb
|
177
|
+
- lib/diaspora_federation/schemas/federation_entities.json
|
169
178
|
- lib/diaspora_federation/validators.rb
|
170
179
|
- lib/diaspora_federation/validators/account_deletion_validator.rb
|
180
|
+
- lib/diaspora_federation/validators/account_migration_validator.rb
|
171
181
|
- lib/diaspora_federation/validators/comment_validator.rb
|
172
182
|
- lib/diaspora_federation/validators/contact_validator.rb
|
173
183
|
- lib/diaspora_federation/validators/conversation_validator.rb
|
@@ -185,9 +195,7 @@ files:
|
|
185
195
|
- lib/diaspora_federation/validators/poll_validator.rb
|
186
196
|
- lib/diaspora_federation/validators/profile_validator.rb
|
187
197
|
- lib/diaspora_federation/validators/related_entity_validator.rb
|
188
|
-
- lib/diaspora_federation/validators/relayable_retraction_validator.rb
|
189
198
|
- lib/diaspora_federation/validators/relayable_validator.rb
|
190
|
-
- lib/diaspora_federation/validators/request_validator.rb
|
191
199
|
- lib/diaspora_federation/validators/reshare_validator.rb
|
192
200
|
- lib/diaspora_federation/validators/retraction_validator.rb
|
193
201
|
- lib/diaspora_federation/validators/rules/birthday.rb
|
@@ -198,14 +206,9 @@ files:
|
|
198
206
|
- lib/diaspora_federation/validators/rules/not_nil.rb
|
199
207
|
- lib/diaspora_federation/validators/rules/public_key.rb
|
200
208
|
- lib/diaspora_federation/validators/rules/tag_count.rb
|
201
|
-
- lib/diaspora_federation/validators/signed_retraction_validator.rb
|
202
209
|
- lib/diaspora_federation/validators/status_message_validator.rb
|
203
210
|
- lib/diaspora_federation/validators/web_finger_validator.rb
|
204
211
|
- lib/diaspora_federation/version.rb
|
205
|
-
- lib/tasks/build.rake
|
206
|
-
- lib/tasks/diaspora_federation_tasks.rake
|
207
|
-
- lib/tasks/rails4.rake
|
208
|
-
- lib/tasks/tests.rake
|
209
212
|
homepage: https://github.com/diaspora/diaspora_federation
|
210
213
|
licenses:
|
211
214
|
- AGPL-3.0
|
@@ -1,15 +0,0 @@
|
|
1
|
-
module DiasporaFederation
|
2
|
-
module Validators
|
3
|
-
# This validates a {Entities::RelayableRetraction}.
|
4
|
-
# @deprecated The {Entities::RelayableRetraction} will be replaced with {Entities::Retraction}.
|
5
|
-
class RelayableRetractionValidator < Validation::Validator
|
6
|
-
include Validation
|
7
|
-
|
8
|
-
rule :target_guid, :guid
|
9
|
-
rule :target_type, :not_empty
|
10
|
-
rule :target, :not_nil
|
11
|
-
|
12
|
-
rule :author, %i(not_empty diaspora_id)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
@@ -1,12 +0,0 @@
|
|
1
|
-
module DiasporaFederation
|
2
|
-
module Validators
|
3
|
-
# This validates a {Entities::Request}.
|
4
|
-
# @deprecated The {Entities::Request} will be replaced with {Entities::Contact}.
|
5
|
-
class RequestValidator < Validation::Validator
|
6
|
-
include Validation
|
7
|
-
|
8
|
-
rule :author, %i(not_empty diaspora_id)
|
9
|
-
rule :recipient, %i(not_empty diaspora_id)
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
module DiasporaFederation
|
2
|
-
module Validators
|
3
|
-
# This validates a {Entities::SignedRetraction}.
|
4
|
-
# @deprecated The {Entities::RelayableRetraction} will be replaced with {Entities::Retraction}.
|
5
|
-
class SignedRetractionValidator < Validation::Validator
|
6
|
-
include Validation
|
7
|
-
|
8
|
-
rule :target_guid, :guid
|
9
|
-
rule :target_type, :not_empty
|
10
|
-
rule :target, :not_nil
|
11
|
-
|
12
|
-
rule :author, %i(not_empty diaspora_id)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
data/lib/tasks/build.rake
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
desc "Build gem into the pkg directory"
|
2
|
-
task build: :test do
|
3
|
-
FileUtils.rm_rf("pkg")
|
4
|
-
Dir["*.gemspec"].each do |gemspec|
|
5
|
-
system "gem build #{gemspec}"
|
6
|
-
end
|
7
|
-
FileUtils.mkdir_p("pkg")
|
8
|
-
FileUtils.mv(Dir["*.gem"], "pkg")
|
9
|
-
end
|
10
|
-
|
11
|
-
desc "Tags version, pushes to remote, and pushes gem"
|
12
|
-
task release: :build do
|
13
|
-
sh "ls pkg/diaspora_federation-*-*.gem | xargs -n 1 gem push"
|
14
|
-
end
|
data/lib/tasks/rails4.rake
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
if defined?(RSpec)
|
2
|
-
namespace :rails4 do
|
3
|
-
desc "Run all specs that generate fixtures for rspec with rails 4"
|
4
|
-
RSpec::Core::RakeTask.new(:generate_fixtures) do |t|
|
5
|
-
t.rspec_opts = ["--tag fixture4"]
|
6
|
-
end
|
7
|
-
|
8
|
-
desc "Run all specs in spec directory (exluding controller specs)"
|
9
|
-
RSpec::Core::RakeTask.new(:spec) do |task|
|
10
|
-
task.pattern = FileList["spec/**/*_spec.rb"].exclude("spec/controllers/**/*_spec.rb")
|
11
|
-
end
|
12
|
-
|
13
|
-
task test: %w(spec:prepare_db generate_fixtures spec)
|
14
|
-
end
|
15
|
-
end
|
data/lib/tasks/tests.rake
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
if defined?(RSpec)
|
2
|
-
namespace :spec do
|
3
|
-
task prepare_db: %w(db:create db:test:load)
|
4
|
-
task :prepare_fixtures do
|
5
|
-
ENV["NO_COVERAGE"] = "true"
|
6
|
-
Rake::Task["spec:generate_fixtures"].invoke
|
7
|
-
ENV["NO_COVERAGE"] = "false"
|
8
|
-
end
|
9
|
-
|
10
|
-
desc "Prepare for rspec"
|
11
|
-
task prepare: %w(db:environment:set prepare_db prepare_fixtures)
|
12
|
-
|
13
|
-
desc "Run all specs that generate fixtures for rspec"
|
14
|
-
RSpec::Core::RakeTask.new(:generate_fixtures) do |t|
|
15
|
-
t.rspec_opts = ["--tag fixture"]
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|