diaspora_federation 0.1.1 → 0.1.2
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 +28 -0
- data/README.md +2 -1
- data/lib/diaspora_federation.rb +14 -14
- data/lib/diaspora_federation/callbacks.rb +4 -4
- data/lib/diaspora_federation/discovery.rb +1 -1
- data/lib/diaspora_federation/discovery/discovery.rb +8 -8
- data/lib/diaspora_federation/discovery/h_card.rb +11 -12
- data/lib/diaspora_federation/discovery/host_meta.rb +2 -2
- data/lib/diaspora_federation/discovery/web_finger.rb +10 -13
- data/lib/diaspora_federation/discovery/xrd_document.rb +1 -1
- data/lib/diaspora_federation/entities.rb +2 -2
- data/lib/diaspora_federation/entities/account_deletion.rb +4 -4
- data/lib/diaspora_federation/entities/comment.rb +3 -3
- data/lib/diaspora_federation/entities/contact.rb +4 -4
- data/lib/diaspora_federation/entities/conversation.rb +13 -13
- data/lib/diaspora_federation/entities/like.rb +5 -5
- data/lib/diaspora_federation/entities/location.rb +1 -1
- data/lib/diaspora_federation/entities/message.rb +5 -5
- data/lib/diaspora_federation/entities/participation.rb +6 -6
- data/lib/diaspora_federation/entities/person.rb +6 -6
- data/lib/diaspora_federation/entities/photo.rb +10 -10
- data/lib/diaspora_federation/entities/poll.rb +3 -3
- data/lib/diaspora_federation/entities/poll_answer.rb +2 -2
- data/lib/diaspora_federation/entities/poll_participation.rb +3 -3
- data/lib/diaspora_federation/entities/post.rb +7 -7
- data/lib/diaspora_federation/entities/profile.rb +6 -6
- data/lib/diaspora_federation/entities/related_entity.rb +4 -4
- data/lib/diaspora_federation/entities/relayable.rb +32 -24
- data/lib/diaspora_federation/entities/relayable_retraction.rb +17 -17
- data/lib/diaspora_federation/entities/request.rb +5 -5
- data/lib/diaspora_federation/entities/reshare.rb +7 -7
- data/lib/diaspora_federation/entities/retraction.rb +6 -6
- data/lib/diaspora_federation/entities/signed_retraction.rb +8 -8
- data/lib/diaspora_federation/entities/status_message.rb +8 -8
- data/lib/diaspora_federation/entity.rb +7 -7
- data/lib/diaspora_federation/federation/fetcher.rb +3 -3
- data/lib/diaspora_federation/federation/receiver.rb +3 -3
- data/lib/diaspora_federation/federation/receiver/abstract_receiver.rb +3 -3
- data/lib/diaspora_federation/federation/receiver/private.rb +1 -1
- data/lib/diaspora_federation/federation/receiver/public.rb +1 -1
- data/lib/diaspora_federation/federation/sender/hydra_wrapper.rb +7 -6
- data/lib/diaspora_federation/http_client.rb +2 -2
- data/lib/diaspora_federation/logging.rb +7 -7
- data/lib/diaspora_federation/properties_dsl.rb +3 -3
- data/lib/diaspora_federation/salmon.rb +1 -1
- data/lib/diaspora_federation/salmon/aes.rb +4 -4
- data/lib/diaspora_federation/salmon/encrypted_slap.rb +9 -9
- data/lib/diaspora_federation/salmon/magic_envelope.rb +16 -16
- data/lib/diaspora_federation/salmon/slap.rb +2 -2
- data/lib/diaspora_federation/validators.rb +1 -1
- data/lib/diaspora_federation/validators/account_deletion_validator.rb +1 -1
- data/lib/diaspora_federation/validators/comment_validator.rb +1 -1
- data/lib/diaspora_federation/validators/contact_validator.rb +1 -1
- data/lib/diaspora_federation/validators/conversation_validator.rb +4 -4
- data/lib/diaspora_federation/validators/h_card_validator.rb +2 -2
- data/lib/diaspora_federation/validators/like_validator.rb +1 -1
- data/lib/diaspora_federation/validators/location_validator.rb +1 -1
- data/lib/diaspora_federation/validators/message_validator.rb +4 -1
- data/lib/diaspora_federation/validators/participation_validator.rb +1 -1
- data/lib/diaspora_federation/validators/person_validator.rb +1 -1
- data/lib/diaspora_federation/validators/photo_validator.rb +3 -1
- data/lib/diaspora_federation/validators/poll_answer_validator.rb +1 -1
- data/lib/diaspora_federation/validators/poll_participation_validator.rb +1 -1
- data/lib/diaspora_federation/validators/poll_validator.rb +1 -1
- data/lib/diaspora_federation/validators/profile_validator.rb +3 -3
- data/lib/diaspora_federation/validators/related_entity_validator.rb +1 -1
- data/lib/diaspora_federation/validators/relayable_retraction_validator.rb +2 -2
- data/lib/diaspora_federation/validators/relayable_validator.rb +2 -2
- data/lib/diaspora_federation/validators/request_validator.rb +2 -2
- data/lib/diaspora_federation/validators/reshare_validator.rb +1 -1
- data/lib/diaspora_federation/validators/retraction_validator.rb +1 -1
- data/lib/diaspora_federation/validators/rules/birthday.rb +2 -2
- data/lib/diaspora_federation/validators/rules/boolean.rb +1 -1
- data/lib/diaspora_federation/validators/rules/diaspora_id.rb +5 -5
- data/lib/diaspora_federation/validators/rules/diaspora_id_count.rb +3 -3
- data/lib/diaspora_federation/validators/rules/guid.rb +4 -4
- data/lib/diaspora_federation/validators/rules/not_nil.rb +1 -1
- data/lib/diaspora_federation/validators/rules/public_key.rb +1 -1
- data/lib/diaspora_federation/validators/rules/tag_count.rb +2 -2
- data/lib/diaspora_federation/validators/signed_retraction_validator.rb +2 -2
- data/lib/diaspora_federation/validators/status_message_validator.rb +3 -1
- data/lib/diaspora_federation/validators/web_finger_validator.rb +3 -3
- data/lib/diaspora_federation/version.rb +1 -1
- metadata +3 -2
@@ -9,7 +9,7 @@ require "validation/rule/numeric"
|
|
9
9
|
module Validation
|
10
10
|
# This module contains custom validation rules for various data field types.
|
11
11
|
# That includes types for which there are no provided rules by the +valid+ gem
|
12
|
-
# or types that are very specific to
|
12
|
+
# or types that are very specific to diaspora* federation and need special handling.
|
13
13
|
# The rules are used inside the {DiasporaFederation::Validators validator classes}
|
14
14
|
# to perform basic sanity-checks on {DiasporaFederation::Entities federation entities}.
|
15
15
|
module Rule
|
@@ -1,16 +1,16 @@
|
|
1
1
|
module DiasporaFederation
|
2
2
|
module Validators
|
3
|
-
# This validates a {Entities::Conversation}
|
3
|
+
# This validates a {Entities::Conversation}.
|
4
4
|
class ConversationValidator < Validation::Validator
|
5
5
|
include Validation
|
6
6
|
|
7
|
+
rule :author, %i(not_empty diaspora_id)
|
7
8
|
rule :guid, :guid
|
8
9
|
|
9
|
-
rule :
|
10
|
-
|
11
|
-
rule :author, %i(not_empty diaspora_id)
|
10
|
+
rule :subject, [:not_empty, length: {maximum: 255}]
|
12
11
|
|
13
12
|
rule :participants, diaspora_id_count: {maximum: 20}
|
13
|
+
rule :messages, :not_nil
|
14
14
|
end
|
15
15
|
end
|
16
16
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module DiasporaFederation
|
2
2
|
module Validators
|
3
|
-
# This validates a {Discovery::HCard}
|
3
|
+
# This validates a {Discovery::HCard}.
|
4
4
|
#
|
5
5
|
# @todo activate guid and public key validation after all pod have it in
|
6
6
|
# the hcard.
|
@@ -11,7 +11,7 @@ module DiasporaFederation
|
|
11
11
|
|
12
12
|
# rule :guid, :guid
|
13
13
|
|
14
|
-
#
|
14
|
+
# The name must not contain a semicolon because of mentions.
|
15
15
|
# @{<full_name> ; <diaspora_id>}
|
16
16
|
rule :full_name, regular_expression: {regex: /\A[^;]{,70}\z/}
|
17
17
|
rule :first_name, regular_expression: {regex: /\A[^;]{,32}\z/}
|
@@ -1,12 +1,15 @@
|
|
1
1
|
module DiasporaFederation
|
2
2
|
module Validators
|
3
|
-
# This validates a {Entities::Message}
|
3
|
+
# This validates a {Entities::Message}.
|
4
4
|
class MessageValidator < Validation::Validator
|
5
5
|
include Validation
|
6
6
|
|
7
7
|
rule :author, %i(not_empty diaspora_id)
|
8
8
|
rule :guid, :guid
|
9
9
|
rule :conversation_guid, :guid
|
10
|
+
|
11
|
+
rule :text, [:not_empty,
|
12
|
+
length: {maximum: 65_535}]
|
10
13
|
end
|
11
14
|
end
|
12
15
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module DiasporaFederation
|
2
2
|
module Validators
|
3
|
-
# This validates a {Entities::Photo}
|
3
|
+
# This validates a {Entities::Photo}.
|
4
4
|
class PhotoValidator < Validation::Validator
|
5
5
|
include Validation
|
6
6
|
|
@@ -16,6 +16,8 @@ module DiasporaFederation
|
|
16
16
|
|
17
17
|
rule :status_message_guid, guid: {nilable: true}
|
18
18
|
|
19
|
+
rule :text, length: {maximum: 65_535}
|
20
|
+
|
19
21
|
rule :height, :numeric
|
20
22
|
|
21
23
|
rule :width, :numeric
|
@@ -1,17 +1,17 @@
|
|
1
1
|
module DiasporaFederation
|
2
2
|
module Validators
|
3
|
-
# This validates a {Entities::Profile}
|
3
|
+
# This validates a {Entities::Profile}.
|
4
4
|
class ProfileValidator < Validation::Validator
|
5
5
|
include Validation
|
6
6
|
|
7
7
|
rule :author, :diaspora_id
|
8
8
|
|
9
|
-
#
|
9
|
+
# The name must not contain a semicolon because of mentions.
|
10
10
|
# @{<full_name> ; <diaspora_id>}
|
11
11
|
rule :first_name, regular_expression: {regex: /\A[^;]{,32}\z/}
|
12
12
|
rule :last_name, regular_expression: {regex: /\A[^;]{,32}\z/}
|
13
13
|
|
14
|
-
#
|
14
|
+
# These urls can be relative.
|
15
15
|
rule :image_url, URI: [:path]
|
16
16
|
rule :image_url_medium, URI: [:path]
|
17
17
|
rule :image_url_small, URI: [:path]
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module DiasporaFederation
|
2
2
|
module Validators
|
3
|
-
# This validates a {Entities::RelayableRetraction}
|
4
|
-
# @deprecated
|
3
|
+
# This validates a {Entities::RelayableRetraction}.
|
4
|
+
# @deprecated The {Entities::RelayableRetraction} will be replaced with {Entities::Retraction}.
|
5
5
|
class RelayableRetractionValidator < Validation::Validator
|
6
6
|
include Validation
|
7
7
|
|
@@ -1,8 +1,8 @@
|
|
1
1
|
module DiasporaFederation
|
2
2
|
module Validators
|
3
|
-
# This is included to validatros which validate entities which include {Entities::Relayable}
|
3
|
+
# This is included to validatros which validate entities which include {Entities::Relayable}.
|
4
4
|
module RelayableValidator
|
5
|
-
#
|
5
|
+
# When this module is included in a Validator child it adds rules for relayable validation.
|
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
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module DiasporaFederation
|
2
2
|
module Validators
|
3
|
-
# This validates a {Entities::Request}
|
4
|
-
# @deprecated
|
3
|
+
# This validates a {Entities::Request}.
|
4
|
+
# @deprecated The {Entities::Request} will be replaced with {Entities::Contact}.
|
5
5
|
class RequestValidator < Validation::Validator
|
6
6
|
include Validation
|
7
7
|
|
@@ -15,7 +15,7 @@ module Validation
|
|
15
15
|
:birthday
|
16
16
|
end
|
17
17
|
|
18
|
-
# Determines if value is a valid birthday date
|
18
|
+
# Determines if value is a valid birthday date.
|
19
19
|
def valid_value?(value)
|
20
20
|
return true if value.nil? || (value.is_a?(String) && value.empty?)
|
21
21
|
return true if value.is_a? Date
|
@@ -28,7 +28,7 @@ module Validation
|
|
28
28
|
false
|
29
29
|
end
|
30
30
|
|
31
|
-
# This rule has no params
|
31
|
+
# This rule has no params.
|
32
32
|
# @return [Hash] params
|
33
33
|
def params
|
34
34
|
{}
|
@@ -1,10 +1,10 @@
|
|
1
1
|
module Validation
|
2
2
|
module Rule
|
3
|
-
#
|
3
|
+
# diaspora* ID validation rule
|
4
4
|
#
|
5
|
-
# A simple rule to validate the base structure of diaspora IDs.
|
5
|
+
# A simple rule to validate the base structure of diaspora* IDs.
|
6
6
|
class DiasporaId
|
7
|
-
# The Regex for a valid diaspora ID
|
7
|
+
# The Regex for a valid diaspora* ID
|
8
8
|
DIASPORA_ID = begin
|
9
9
|
letter = "a-zA-Z"
|
10
10
|
digit = "0-9"
|
@@ -28,12 +28,12 @@ module Validation
|
|
28
28
|
:diaspora_id
|
29
29
|
end
|
30
30
|
|
31
|
-
# Determines if value is a valid diaspora ID
|
31
|
+
# Determines if value is a valid diaspora* ID
|
32
32
|
def valid_value?(value)
|
33
33
|
value.nil? || !DIASPORA_ID.match(value).nil?
|
34
34
|
end
|
35
35
|
|
36
|
-
# This rule has no params
|
36
|
+
# This rule has no params.
|
37
37
|
# @return [Hash] params
|
38
38
|
def params
|
39
39
|
{}
|
@@ -1,13 +1,13 @@
|
|
1
1
|
module Validation
|
2
2
|
module Rule
|
3
|
-
# Rule for validating the number of
|
3
|
+
# Rule for validating the number of diaspora* IDs in a string.
|
4
4
|
# The evaluated string is split at ";" and the result will be counted.
|
5
5
|
class DiasporaIdCount
|
6
|
-
# This rule must have a +maximum+ param
|
6
|
+
# This rule must have a +maximum+ param.
|
7
7
|
# @return [Hash] params
|
8
8
|
attr_reader :params
|
9
9
|
|
10
|
-
#
|
10
|
+
# Creates a new rule for a maximum diaspora* ID count validation
|
11
11
|
# @param [Hash] params
|
12
12
|
# @option params [Fixnum] :maximum maximum allowed id count
|
13
13
|
def initialize(params)
|
@@ -2,16 +2,16 @@ module Validation
|
|
2
2
|
module Rule
|
3
3
|
# GUID validation rule
|
4
4
|
#
|
5
|
-
# Valid is a +String+ that is at least 16 chars long
|
5
|
+
# Valid is a +String+ that is at least 16 and at most 255 chars long. It contains only:
|
6
6
|
# * Letters: a-z
|
7
7
|
# * Numbers: 0-9
|
8
8
|
# * Special chars: '-', '_', '@', '.' and ':'
|
9
9
|
class Guid
|
10
|
-
# This rule can have a +nilable+ param
|
10
|
+
# This rule can have a +nilable+ param.
|
11
11
|
# @return [Hash] params
|
12
12
|
attr_reader :params
|
13
13
|
|
14
|
-
#
|
14
|
+
# Creates a new rule for guid validation
|
15
15
|
# @param [Hash] params
|
16
16
|
# @option params [Boolean] :nilable guid allowed to be nil
|
17
17
|
def initialize(params={})
|
@@ -30,7 +30,7 @@ module Validation
|
|
30
30
|
|
31
31
|
# Determines if value is a valid +GUID+
|
32
32
|
def valid_value?(value)
|
33
|
-
params[:nilable] && value.nil? || value.is_a?(String) && value.downcase =~ /\A[0-9a-z\-_@.:]{16,}\z/
|
33
|
+
params[:nilable] && value.nil? || value.is_a?(String) && value.downcase =~ /\A[0-9a-z\-_@.:]{16,255}\z/
|
34
34
|
end
|
35
35
|
end
|
36
36
|
end
|
@@ -4,11 +4,11 @@ module Validation
|
|
4
4
|
# Only the "#" characters will be counted.
|
5
5
|
# The string can be nil.
|
6
6
|
class TagCount
|
7
|
-
# This rule must have a +maximum+ param
|
7
|
+
# This rule must have a +maximum+ param.
|
8
8
|
# @return [Hash] params
|
9
9
|
attr_reader :params
|
10
10
|
|
11
|
-
#
|
11
|
+
# Creates a new rule for a maximum tag count validation
|
12
12
|
# @param [Hash] params
|
13
13
|
# @option params [Fixnum] :maximum maximum allowed tag count
|
14
14
|
def initialize(params)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module DiasporaFederation
|
2
2
|
module Validators
|
3
|
-
# This validates a {Entities::SignedRetraction}
|
4
|
-
# @deprecated
|
3
|
+
# This validates a {Entities::SignedRetraction}.
|
4
|
+
# @deprecated The {Entities::RelayableRetraction} will be replaced with {Entities::Retraction}.
|
5
5
|
class SignedRetractionValidator < Validation::Validator
|
6
6
|
include Validation
|
7
7
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module DiasporaFederation
|
2
2
|
module Validators
|
3
|
-
# This validates a {Entities::StatusMessage}
|
3
|
+
# This validates a {Entities::StatusMessage}.
|
4
4
|
class StatusMessageValidator < Validation::Validator
|
5
5
|
include Validation
|
6
6
|
|
@@ -8,6 +8,8 @@ module DiasporaFederation
|
|
8
8
|
|
9
9
|
rule :guid, :guid
|
10
10
|
|
11
|
+
rule :text, length: {maximum: 65_535}
|
12
|
+
|
11
13
|
rule :photos, :not_nil
|
12
14
|
|
13
15
|
rule :public, :boolean
|
@@ -1,9 +1,9 @@
|
|
1
1
|
module DiasporaFederation
|
2
2
|
module Validators
|
3
|
-
# This validates a {Discovery::WebFinger}
|
3
|
+
# This validates a {Discovery::WebFinger}.
|
4
4
|
#
|
5
|
-
# @note
|
6
|
-
# removed in the webfinger
|
5
|
+
# @note It does not validate the guid and public key, because it will be
|
6
|
+
# removed in the webfinger.
|
7
7
|
class WebFingerValidator < Validation::Validator
|
8
8
|
include Validation
|
9
9
|
|