diaspora_federation 0.1.9 → 0.2.0

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 (71) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +34 -0
  3. data/lib/diaspora_federation/discovery/discovery.rb +2 -2
  4. data/lib/diaspora_federation/discovery/h_card.rb +2 -10
  5. data/lib/diaspora_federation/discovery/host_meta.rb +1 -1
  6. data/lib/diaspora_federation/discovery/web_finger.rb +47 -87
  7. data/lib/diaspora_federation/discovery/xrd_document.rb +20 -7
  8. data/lib/diaspora_federation/entities/account_migration.rb +74 -0
  9. data/lib/diaspora_federation/entities/comment.rb +0 -4
  10. data/lib/diaspora_federation/entities/event_participation.rb +0 -8
  11. data/lib/diaspora_federation/entities/like.rb +6 -10
  12. data/lib/diaspora_federation/entities/message.rb +14 -49
  13. data/lib/diaspora_federation/entities/participation.rb +23 -13
  14. data/lib/diaspora_federation/entities/poll_participation.rb +0 -4
  15. data/lib/diaspora_federation/entities/profile.rb +5 -0
  16. data/lib/diaspora_federation/entities/related_entity.rb +17 -0
  17. data/lib/diaspora_federation/entities/relayable.rb +82 -113
  18. data/lib/diaspora_federation/entities/relayable_retraction.rb +4 -43
  19. data/lib/diaspora_federation/entities/request.rb +4 -12
  20. data/lib/diaspora_federation/entities/reshare.rb +11 -7
  21. data/lib/diaspora_federation/entities/retraction.rb +4 -5
  22. data/lib/diaspora_federation/entities/signable.rb +54 -0
  23. data/lib/diaspora_federation/entities/signed_retraction.rb +4 -44
  24. data/lib/diaspora_federation/entities.rb +2 -0
  25. data/lib/diaspora_federation/entity.rb +74 -96
  26. data/lib/diaspora_federation/federation/fetcher.rb +1 -1
  27. data/lib/diaspora_federation/federation/receiver.rb +1 -1
  28. data/lib/diaspora_federation/federation/sender/hydra_wrapper.rb +37 -12
  29. data/lib/diaspora_federation/federation/sender.rb +2 -2
  30. data/lib/diaspora_federation/parsers/base_parser.rb +61 -0
  31. data/lib/diaspora_federation/parsers/json_parser.rb +60 -0
  32. data/lib/diaspora_federation/parsers/relayable_json_parser.rb +25 -0
  33. data/lib/diaspora_federation/parsers/relayable_xml_parser.rb +22 -0
  34. data/lib/diaspora_federation/parsers/xml_parser.rb +84 -0
  35. data/lib/diaspora_federation/parsers.rb +13 -0
  36. data/lib/diaspora_federation/properties_dsl.rb +1 -1
  37. data/lib/diaspora_federation/salmon/encrypted_magic_envelope.rb +1 -1
  38. data/lib/diaspora_federation/salmon/encrypted_slap.rb +2 -99
  39. data/lib/diaspora_federation/salmon/magic_envelope.rb +3 -19
  40. data/lib/diaspora_federation/salmon/slap.rb +1 -42
  41. data/lib/diaspora_federation/salmon/xml_payload.rb +0 -19
  42. data/lib/diaspora_federation/schemas/federation_entities.json +379 -0
  43. data/lib/diaspora_federation/validators/account_deletion_validator.rb +1 -1
  44. data/lib/diaspora_federation/validators/account_migration_validator.rb +12 -0
  45. data/lib/diaspora_federation/validators/contact_validator.rb +2 -2
  46. data/lib/diaspora_federation/validators/conversation_validator.rb +1 -1
  47. data/lib/diaspora_federation/validators/event_validator.rb +1 -1
  48. data/lib/diaspora_federation/validators/h_card_validator.rb +2 -5
  49. data/lib/diaspora_federation/validators/message_validator.rb +1 -1
  50. data/lib/diaspora_federation/validators/participation_validator.rb +1 -1
  51. data/lib/diaspora_federation/validators/person_validator.rb +2 -2
  52. data/lib/diaspora_federation/validators/photo_validator.rb +1 -1
  53. data/lib/diaspora_federation/validators/profile_validator.rb +1 -1
  54. data/lib/diaspora_federation/validators/related_entity_validator.rb +1 -1
  55. data/lib/diaspora_federation/validators/relayable_validator.rb +1 -1
  56. data/lib/diaspora_federation/validators/reshare_validator.rb +2 -2
  57. data/lib/diaspora_federation/validators/retraction_validator.rb +1 -1
  58. data/lib/diaspora_federation/validators/rules/boolean.rb +2 -2
  59. data/lib/diaspora_federation/validators/status_message_validator.rb +1 -1
  60. data/lib/diaspora_federation/validators/web_finger_validator.rb +5 -6
  61. data/lib/diaspora_federation/validators.rb +1 -5
  62. data/lib/diaspora_federation/version.rb +1 -1
  63. data/lib/diaspora_federation.rb +6 -2
  64. metadata +14 -11
  65. data/lib/diaspora_federation/validators/relayable_retraction_validator.rb +0 -15
  66. data/lib/diaspora_federation/validators/request_validator.rb +0 -12
  67. data/lib/diaspora_federation/validators/signed_retraction_validator.rb +0 -15
  68. data/lib/tasks/build.rake +0 -14
  69. data/lib/tasks/diaspora_federation_tasks.rake +0 -4
  70. data/lib/tasks/rails4.rake +0 -15
  71. data/lib/tasks/tests.rake +0 -18
@@ -4,7 +4,7 @@ module DiasporaFederation
4
4
  class ConversationValidator < Validation::Validator
5
5
  include Validation
6
6
 
7
- rule :author, %i(not_empty diaspora_id)
7
+ rule :author, %i[not_empty diaspora_id]
8
8
  rule :guid, :guid
9
9
 
10
10
  rule :subject, [:not_empty, length: {maximum: 255}]
@@ -4,7 +4,7 @@ module DiasporaFederation
4
4
  class EventValidator < Validation::Validator
5
5
  include Validation
6
6
 
7
- rule :author, %i(not_empty diaspora_id)
7
+ rule :author, %i[not_empty diaspora_id]
8
8
 
9
9
  rule :guid, :guid
10
10
 
@@ -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
- # rule :guid, :guid
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
- # rule :exported_key, :public_key
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 MessageValidator < Validation::Validator
5
5
  include Validation
6
6
 
7
- rule :author, %i(not_empty diaspora_id)
7
+ rule :author, %i[not_empty diaspora_id]
8
8
  rule :guid, :guid
9
9
  rule :conversation_guid, :guid
10
10
 
@@ -4,7 +4,7 @@ module DiasporaFederation
4
4
  class ParticipationValidator < Validation::Validator
5
5
  include Validation
6
6
 
7
- rule :author, %i(not_empty diaspora_id)
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,9 +6,9 @@ module DiasporaFederation
6
6
 
7
7
  rule :guid, :guid
8
8
 
9
- rule :author, %i(not_empty diaspora_id)
9
+ rule :author, %i[not_empty diaspora_id]
10
10
 
11
- rule :url, %i(not_nil URI)
11
+ rule :url, %i[not_nil URI]
12
12
 
13
13
  rule :profile, :not_nil
14
14
 
@@ -6,7 +6,7 @@ module DiasporaFederation
6
6
 
7
7
  rule :guid, :guid
8
8
 
9
- rule :author, %i(not_empty diaspora_id)
9
+ rule :author, %i[not_empty diaspora_id]
10
10
 
11
11
  rule :public, :boolean
12
12
 
@@ -23,7 +23,7 @@ module DiasporaFederation
23
23
  rule :location, length: {maximum: 255}
24
24
 
25
25
  rule :searchable, :boolean
26
-
26
+ rule :public, :boolean
27
27
  rule :nsfw, :boolean
28
28
 
29
29
  rule :tag_string, tag_count: {maximum: 5}
@@ -4,7 +4,7 @@ module DiasporaFederation
4
4
  class RelatedEntityValidator < Validation::Validator
5
5
  include Validation
6
6
 
7
- rule :author, %i(not_empty diaspora_id)
7
+ rule :author, %i[not_empty diaspora_id]
8
8
  rule :local, :boolean
9
9
  rule :public, :boolean
10
10
  end
@@ -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(not_empty diaspora_id)
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(not_empty diaspora_id)
7
+ rule :root_author, %i[not_empty diaspora_id]
8
8
 
9
9
  rule :root_guid, :guid
10
10
 
11
- rule :author, %i(not_empty diaspora_id)
11
+ rule :author, %i[not_empty diaspora_id]
12
12
 
13
13
  rule :guid, :guid
14
14
 
@@ -4,7 +4,7 @@ module DiasporaFederation
4
4
  class RetractionValidator < Validation::Validator
5
5
  include Validation
6
6
 
7
- rule :author, %i(not_empty diaspora_id)
7
+ rule :author, %i[not_empty diaspora_id]
8
8
 
9
9
  rule :target_guid, :guid
10
10
  rule :target_type, :not_empty
@@ -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 value == 1 || value == 0
24
- elsif [true, false].include? value
23
+ true if [1, 0].include?(value)
24
+ elsif [true, false].include?(value)
25
25
  true
26
26
  else
27
27
  false
@@ -4,7 +4,7 @@ module DiasporaFederation
4
4
  class StatusMessageValidator < Validation::Validator
5
5
  include Validation
6
6
 
7
- rule :author, %i(not_empty diaspora_id)
7
+ rule :author, %i[not_empty diaspora_id]
8
8
 
9
9
  rule :guid, :guid
10
10
 
@@ -9,12 +9,11 @@ module DiasporaFederation
9
9
 
10
10
  rule :acct_uri, :not_empty
11
11
 
12
- rule :alias_url, URI: %i(host path)
13
- rule :hcard_url, [:not_nil, URI: %i(host path)]
14
- rule :seed_url, %i(not_nil URI)
15
- rule :profile_url, URI: %i(host path)
16
- rule :atom_url, URI: %i(host path)
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"
@@ -1,4 +1,4 @@
1
1
  module DiasporaFederation
2
2
  # the gem version
3
- VERSION = "0.1.9".freeze
3
+ VERSION = "0.2.0".freeze
4
4
  end
@@ -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.1.9
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-04-30 00:00:00.000000000 Z
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.12.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.12.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
@@ -1,4 +0,0 @@
1
- # desc "Explaining what the task does"
2
- # task :diaspora_federation do
3
- # # Task goes here
4
- # end
@@ -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