diaspora_federation 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
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