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.
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