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.
Files changed (85) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +28 -0
  3. data/README.md +2 -1
  4. data/lib/diaspora_federation.rb +14 -14
  5. data/lib/diaspora_federation/callbacks.rb +4 -4
  6. data/lib/diaspora_federation/discovery.rb +1 -1
  7. data/lib/diaspora_federation/discovery/discovery.rb +8 -8
  8. data/lib/diaspora_federation/discovery/h_card.rb +11 -12
  9. data/lib/diaspora_federation/discovery/host_meta.rb +2 -2
  10. data/lib/diaspora_federation/discovery/web_finger.rb +10 -13
  11. data/lib/diaspora_federation/discovery/xrd_document.rb +1 -1
  12. data/lib/diaspora_federation/entities.rb +2 -2
  13. data/lib/diaspora_federation/entities/account_deletion.rb +4 -4
  14. data/lib/diaspora_federation/entities/comment.rb +3 -3
  15. data/lib/diaspora_federation/entities/contact.rb +4 -4
  16. data/lib/diaspora_federation/entities/conversation.rb +13 -13
  17. data/lib/diaspora_federation/entities/like.rb +5 -5
  18. data/lib/diaspora_federation/entities/location.rb +1 -1
  19. data/lib/diaspora_federation/entities/message.rb +5 -5
  20. data/lib/diaspora_federation/entities/participation.rb +6 -6
  21. data/lib/diaspora_federation/entities/person.rb +6 -6
  22. data/lib/diaspora_federation/entities/photo.rb +10 -10
  23. data/lib/diaspora_federation/entities/poll.rb +3 -3
  24. data/lib/diaspora_federation/entities/poll_answer.rb +2 -2
  25. data/lib/diaspora_federation/entities/poll_participation.rb +3 -3
  26. data/lib/diaspora_federation/entities/post.rb +7 -7
  27. data/lib/diaspora_federation/entities/profile.rb +6 -6
  28. data/lib/diaspora_federation/entities/related_entity.rb +4 -4
  29. data/lib/diaspora_federation/entities/relayable.rb +32 -24
  30. data/lib/diaspora_federation/entities/relayable_retraction.rb +17 -17
  31. data/lib/diaspora_federation/entities/request.rb +5 -5
  32. data/lib/diaspora_federation/entities/reshare.rb +7 -7
  33. data/lib/diaspora_federation/entities/retraction.rb +6 -6
  34. data/lib/diaspora_federation/entities/signed_retraction.rb +8 -8
  35. data/lib/diaspora_federation/entities/status_message.rb +8 -8
  36. data/lib/diaspora_federation/entity.rb +7 -7
  37. data/lib/diaspora_federation/federation/fetcher.rb +3 -3
  38. data/lib/diaspora_federation/federation/receiver.rb +3 -3
  39. data/lib/diaspora_federation/federation/receiver/abstract_receiver.rb +3 -3
  40. data/lib/diaspora_federation/federation/receiver/private.rb +1 -1
  41. data/lib/diaspora_federation/federation/receiver/public.rb +1 -1
  42. data/lib/diaspora_federation/federation/sender/hydra_wrapper.rb +7 -6
  43. data/lib/diaspora_federation/http_client.rb +2 -2
  44. data/lib/diaspora_federation/logging.rb +7 -7
  45. data/lib/diaspora_federation/properties_dsl.rb +3 -3
  46. data/lib/diaspora_federation/salmon.rb +1 -1
  47. data/lib/diaspora_federation/salmon/aes.rb +4 -4
  48. data/lib/diaspora_federation/salmon/encrypted_slap.rb +9 -9
  49. data/lib/diaspora_federation/salmon/magic_envelope.rb +16 -16
  50. data/lib/diaspora_federation/salmon/slap.rb +2 -2
  51. data/lib/diaspora_federation/validators.rb +1 -1
  52. data/lib/diaspora_federation/validators/account_deletion_validator.rb +1 -1
  53. data/lib/diaspora_federation/validators/comment_validator.rb +1 -1
  54. data/lib/diaspora_federation/validators/contact_validator.rb +1 -1
  55. data/lib/diaspora_federation/validators/conversation_validator.rb +4 -4
  56. data/lib/diaspora_federation/validators/h_card_validator.rb +2 -2
  57. data/lib/diaspora_federation/validators/like_validator.rb +1 -1
  58. data/lib/diaspora_federation/validators/location_validator.rb +1 -1
  59. data/lib/diaspora_federation/validators/message_validator.rb +4 -1
  60. data/lib/diaspora_federation/validators/participation_validator.rb +1 -1
  61. data/lib/diaspora_federation/validators/person_validator.rb +1 -1
  62. data/lib/diaspora_federation/validators/photo_validator.rb +3 -1
  63. data/lib/diaspora_federation/validators/poll_answer_validator.rb +1 -1
  64. data/lib/diaspora_federation/validators/poll_participation_validator.rb +1 -1
  65. data/lib/diaspora_federation/validators/poll_validator.rb +1 -1
  66. data/lib/diaspora_federation/validators/profile_validator.rb +3 -3
  67. data/lib/diaspora_federation/validators/related_entity_validator.rb +1 -1
  68. data/lib/diaspora_federation/validators/relayable_retraction_validator.rb +2 -2
  69. data/lib/diaspora_federation/validators/relayable_validator.rb +2 -2
  70. data/lib/diaspora_federation/validators/request_validator.rb +2 -2
  71. data/lib/diaspora_federation/validators/reshare_validator.rb +1 -1
  72. data/lib/diaspora_federation/validators/retraction_validator.rb +1 -1
  73. data/lib/diaspora_federation/validators/rules/birthday.rb +2 -2
  74. data/lib/diaspora_federation/validators/rules/boolean.rb +1 -1
  75. data/lib/diaspora_federation/validators/rules/diaspora_id.rb +5 -5
  76. data/lib/diaspora_federation/validators/rules/diaspora_id_count.rb +3 -3
  77. data/lib/diaspora_federation/validators/rules/guid.rb +4 -4
  78. data/lib/diaspora_federation/validators/rules/not_nil.rb +1 -1
  79. data/lib/diaspora_federation/validators/rules/public_key.rb +1 -1
  80. data/lib/diaspora_federation/validators/rules/tag_count.rb +2 -2
  81. data/lib/diaspora_federation/validators/signed_retraction_validator.rb +2 -2
  82. data/lib/diaspora_federation/validators/status_message_validator.rb +3 -1
  83. data/lib/diaspora_federation/validators/web_finger_validator.rb +3 -3
  84. data/lib/diaspora_federation/version.rb +1 -1
  85. 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 Diaspora* federation and need special handling.
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,6 +1,6 @@
1
1
  module DiasporaFederation
2
2
  module Validators
3
- # This validates a {Entities::AccountDeletion}
3
+ # This validates a {Entities::AccountDeletion}.
4
4
  class AccountDeletionValidator < Validation::Validator
5
5
  include Validation
6
6
 
@@ -1,6 +1,6 @@
1
1
  module DiasporaFederation
2
2
  module Validators
3
- # This validates a {Entities::Comment}
3
+ # This validates a {Entities::Comment}.
4
4
  class CommentValidator < Validation::Validator
5
5
  include Validation
6
6
 
@@ -1,6 +1,6 @@
1
1
  module DiasporaFederation
2
2
  module Validators
3
- # This validates a {Entities::Contact}
3
+ # This validates a {Entities::Contact}.
4
4
  class ContactValidator < Validation::Validator
5
5
  include Validation
6
6
 
@@ -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 :messages, :not_nil
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
- # the name must not contain a semicolon because of mentions
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,6 +1,6 @@
1
1
  module DiasporaFederation
2
2
  module Validators
3
- # This validates a {Entities::Like}
3
+ # This validates a {Entities::Like}.
4
4
  class LikeValidator < Validation::Validator
5
5
  include Validation
6
6
 
@@ -1,6 +1,6 @@
1
1
  module DiasporaFederation
2
2
  module Validators
3
- # This validates a {Entities::Location}
3
+ # This validates a {Entities::Location}.
4
4
  class LocationValidator < Validation::Validator
5
5
  include Validation
6
6
 
@@ -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::Participation}
3
+ # This validates a {Entities::Participation}.
4
4
  class ParticipationValidator < Validation::Validator
5
5
  include Validation
6
6
 
@@ -1,6 +1,6 @@
1
1
  module DiasporaFederation
2
2
  module Validators
3
- # This validates a {Entities::Person}
3
+ # This validates a {Entities::Person}.
4
4
  class PersonValidator < Validation::Validator
5
5
  include Validation
6
6
 
@@ -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,6 +1,6 @@
1
1
  module DiasporaFederation
2
2
  module Validators
3
- # This validates a {Entities::PollAnswer}
3
+ # This validates a {Entities::PollAnswer}.
4
4
  class PollAnswerValidator < Validation::Validator
5
5
  include Validation
6
6
 
@@ -1,6 +1,6 @@
1
1
  module DiasporaFederation
2
2
  module Validators
3
- # This validates a {Entities::PollParticipation}
3
+ # This validates a {Entities::PollParticipation}.
4
4
  class PollParticipationValidator < Validation::Validator
5
5
  include Validation
6
6
 
@@ -1,6 +1,6 @@
1
1
  module DiasporaFederation
2
2
  module Validators
3
- # This validates a {Entities::Poll}
3
+ # This validates a {Entities::Poll}.
4
4
  class PollValidator < Validation::Validator
5
5
  include Validation
6
6
 
@@ -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
- # the name must not contain a semicolon because of mentions
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
- # this urls can be relative
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,6 +1,6 @@
1
1
  module DiasporaFederation
2
2
  module Validators
3
- # This validates a {Entities::RelatedEntity}
3
+ # This validates a {Entities::RelatedEntity}.
4
4
  class RelatedEntityValidator < Validation::Validator
5
5
  include Validation
6
6
 
@@ -1,7 +1,7 @@
1
1
  module DiasporaFederation
2
2
  module Validators
3
- # This validates a {Entities::RelayableRetraction}
4
- # @deprecated the {Entities::RelayableRetraction} will be replaced with {Entities::Retraction}
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
- # when this module is included in a Validator child it adds rules for relayable validation
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 the {Entities::Request} will be replaced with {Entities::Contact}
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
 
@@ -1,6 +1,6 @@
1
1
  module DiasporaFederation
2
2
  module Validators
3
- # This validates a {Entities::Reshare}
3
+ # This validates a {Entities::Reshare}.
4
4
  class ReshareValidator < Validation::Validator
5
5
  include Validation
6
6
 
@@ -1,6 +1,6 @@
1
1
  module DiasporaFederation
2
2
  module Validators
3
- # This validates a {Entities::Retraction}
3
+ # This validates a {Entities::Retraction}.
4
4
  class RetractionValidator < Validation::Validator
5
5
  include Validation
6
6
 
@@ -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
  {}
@@ -28,7 +28,7 @@ module Validation
28
28
  end
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
- # Diaspora ID validation rule
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 Diaspora* ids in a string.
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
- # create a new rule for a maximum diaspora id count validation
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 and contains only:
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
- # create a new rule for guid validation
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
@@ -13,7 +13,7 @@ module Validation
13
13
  !value.nil?
14
14
  end
15
15
 
16
- # This rule has no params
16
+ # This rule has no params.
17
17
  # @return [Hash] params
18
18
  def params
19
19
  {}
@@ -23,7 +23,7 @@ module Validation
23
23
  )
24
24
  end
25
25
 
26
- # This rule has no params
26
+ # This rule has no params.
27
27
  # @return [Hash] params
28
28
  def params
29
29
  {}
@@ -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
- # create a new rule for a maximum tag count validation
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 the {Entities::RelayableRetraction} will be replaced with {Entities::Retraction}
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 it does not validate the guid and public key, because it will be
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