rename SlapReceiver and mark them deprecated
This commit is contained in:
parent
76a4ea929b
commit
566ac9ff2d
10 changed files with 79 additions and 79 deletions
|
|
@ -4,6 +4,5 @@ module DiasporaFederation
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
require "diaspora_federation/federation/exceptions"
|
|
||||||
require "diaspora_federation/federation/receiver"
|
require "diaspora_federation/federation/receiver"
|
||||||
require "diaspora_federation/federation/sender"
|
require "diaspora_federation/federation/sender"
|
||||||
|
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
module DiasporaFederation
|
|
||||||
module Federation
|
|
||||||
# Raised if failed to fetch a public key of the sender of the received message
|
|
||||||
class SenderKeyNotFound < RuntimeError
|
|
||||||
end
|
|
||||||
|
|
||||||
# Raised if recipient private key is missing for a private receive
|
|
||||||
class RecipientKeyNotFound < RuntimeError
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
@ -1,25 +1,10 @@
|
||||||
module DiasporaFederation
|
module DiasporaFederation
|
||||||
module Federation
|
module Federation
|
||||||
# Common base for Private and Public receivers
|
module Receiver
|
||||||
# @see Receiver::Public
|
|
||||||
# @see Receiver::Private
|
|
||||||
class Receiver
|
|
||||||
# initializes a new Receiver for a salmon XML
|
|
||||||
# @param [String] salmon_xml the message salmon xml
|
|
||||||
def initialize(salmon_xml)
|
|
||||||
@salmon_xml = salmon_xml
|
|
||||||
end
|
|
||||||
|
|
||||||
# Parse the salmon xml and send it to the +:save_entity_after_receive+ callback
|
|
||||||
def receive!
|
|
||||||
sender_id = slap.author_id
|
|
||||||
public_key = DiasporaFederation.callbacks.trigger(:fetch_public_key_by_diaspora_id, sender_id)
|
|
||||||
raise SenderKeyNotFound if public_key.nil?
|
|
||||||
DiasporaFederation.callbacks.trigger(:save_entity_after_receive, slap.entity(public_key))
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
require "diaspora_federation/federation/receiver/private"
|
require "diaspora_federation/federation/receiver/slap_receiver"
|
||||||
require "diaspora_federation/federation/receiver/public"
|
require "diaspora_federation/federation/receiver/private_slap_receiver"
|
||||||
|
require "diaspora_federation/federation/receiver/public_slap_receiver"
|
||||||
|
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
||||||
module DiasporaFederation
|
|
||||||
module Federation
|
|
||||||
class Receiver
|
|
||||||
# Receiver::Private is used to receive private messages, which are addressed
|
|
||||||
# to a specific user, encrypted with his public key and packed using Salmon::EncryptedSlap
|
|
||||||
class Private < Receiver
|
|
||||||
# initializes a new Private Receiver for a salmon XML
|
|
||||||
# @param [String] salmon_xml the message salmon xml
|
|
||||||
# @param [OpenSSL::PKey::RSA] recipient_private_key recipient private key to decrypt the message
|
|
||||||
def initialize(salmon_xml, recipient_private_key)
|
|
||||||
super(salmon_xml)
|
|
||||||
raise RecipientKeyNotFound if recipient_private_key.nil?
|
|
||||||
@recipient_private_key = recipient_private_key
|
|
||||||
end
|
|
||||||
|
|
||||||
protected
|
|
||||||
|
|
||||||
# parses the encrypted slap xml
|
|
||||||
# @return [Salmon::EncryptedSlap] slap instance
|
|
||||||
def slap
|
|
||||||
@salmon ||= Salmon::EncryptedSlap.from_xml(@salmon_xml, @recipient_private_key)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
module DiasporaFederation
|
||||||
|
module Federation
|
||||||
|
module Receiver
|
||||||
|
# This is used to receive private messages, which are addressed to a specific user,
|
||||||
|
# encrypted with his public key and packed using {Salmon::EncryptedSlap}.
|
||||||
|
# @deprecated
|
||||||
|
class PrivateSlapReceiver < SlapReceiver
|
||||||
|
# initializes a new Private Receiver for a salmon slap XML
|
||||||
|
# @param [String] slap_xml the message salmon slap xml
|
||||||
|
# @param [OpenSSL::PKey::RSA] recipient_private_key recipient private key to decrypt the message
|
||||||
|
def initialize(slap_xml, recipient_private_key)
|
||||||
|
super(slap_xml)
|
||||||
|
raise ArgumentError, "no recipient key provided" unless recipient_private_key.instance_of?(OpenSSL::PKey::RSA)
|
||||||
|
@recipient_private_key = recipient_private_key
|
||||||
|
end
|
||||||
|
|
||||||
|
protected
|
||||||
|
|
||||||
|
# parses the encrypted slap xml
|
||||||
|
# @return [Salmon::EncryptedSlap] slap instance
|
||||||
|
def slap
|
||||||
|
@slap ||= Salmon::EncryptedSlap.from_xml(@slap_xml, @recipient_private_key)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
module DiasporaFederation
|
|
||||||
module Federation
|
|
||||||
class Receiver
|
|
||||||
# Receiver::Public is used to receive public messages, which are not addressed to a specific user, unencrypted
|
|
||||||
# and packed using Salmon::Slap
|
|
||||||
class Public < Receiver
|
|
||||||
protected
|
|
||||||
|
|
||||||
# parses the public slap xml
|
|
||||||
# @return [Salmon::Slap] slap instance
|
|
||||||
def slap
|
|
||||||
@salmon ||= Salmon::Slap.from_xml(@salmon_xml)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
module DiasporaFederation
|
||||||
|
module Federation
|
||||||
|
module Receiver
|
||||||
|
# This is used to receive public messages, which are not addressed to
|
||||||
|
# a specific user, unencrypted and packed using {Salmon::Slap}.
|
||||||
|
# @deprecated
|
||||||
|
class PublicSlapReceiver < SlapReceiver
|
||||||
|
protected
|
||||||
|
|
||||||
|
# parses the public slap xml
|
||||||
|
# @return [Salmon::Slap] slap instance
|
||||||
|
def slap
|
||||||
|
@slap ||= Salmon::Slap.from_xml(@slap_xml)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
25
lib/diaspora_federation/federation/receiver/slap_receiver.rb
Normal file
25
lib/diaspora_federation/federation/receiver/slap_receiver.rb
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
module DiasporaFederation
|
||||||
|
module Federation
|
||||||
|
module Receiver
|
||||||
|
# Common base for Private and Public receivers
|
||||||
|
# @see PublicSlapReceiver
|
||||||
|
# @see PrivateSlapReceiver
|
||||||
|
# @deprecated
|
||||||
|
class SlapReceiver
|
||||||
|
# initializes a new SlapReceiver for a salmon slap XML
|
||||||
|
# @param [String] slap_xml the message salmon xml
|
||||||
|
def initialize(slap_xml)
|
||||||
|
@slap_xml = slap_xml
|
||||||
|
end
|
||||||
|
|
||||||
|
# Parse the salmon xml and send it to the +:save_entity_after_receive+ callback
|
||||||
|
def receive!
|
||||||
|
sender_id = slap.author_id
|
||||||
|
public_key = DiasporaFederation.callbacks.trigger(:fetch_public_key_by_diaspora_id, sender_id)
|
||||||
|
raise Salmon::SenderKeyNotFound if public_key.nil?
|
||||||
|
DiasporaFederation.callbacks.trigger(:save_entity_after_receive, slap.entity(public_key))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
module DiasporaFederation
|
module DiasporaFederation
|
||||||
describe Federation::Receiver::Private do
|
describe Federation::Receiver::PrivateSlapReceiver do
|
||||||
let(:sender_id) { FactoryGirl.generate(:diaspora_id) }
|
let(:sender_id) { FactoryGirl.generate(:diaspora_id) }
|
||||||
let(:sender_key) { OpenSSL::PKey::RSA.generate(1024) }
|
let(:sender_key) { OpenSSL::PKey::RSA.generate(1024) }
|
||||||
let(:recipient_key) { OpenSSL::PKey::RSA.generate(1024) }
|
let(:recipient_key) { OpenSSL::PKey::RSA.generate(1024) }
|
||||||
|
|
@ -25,13 +25,13 @@ module DiasporaFederation
|
||||||
|
|
||||||
expect {
|
expect {
|
||||||
described_class.new(xml, recipient_key).receive!
|
described_class.new(xml, recipient_key).receive!
|
||||||
}.to raise_error Federation::SenderKeyNotFound
|
}.to raise_error Salmon::SenderKeyNotFound
|
||||||
end
|
end
|
||||||
|
|
||||||
it "raises when recipient private key is not available" do
|
it "raises when recipient private key is not available" do
|
||||||
expect {
|
expect {
|
||||||
described_class.new(xml, nil).receive!
|
described_class.new(xml, nil).receive!
|
||||||
}.to raise_error Federation::RecipientKeyNotFound
|
}.to raise_error ArgumentError, "no recipient key provided"
|
||||||
end
|
end
|
||||||
|
|
||||||
it "raises when bad xml was supplied" do
|
it "raises when bad xml was supplied" do
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
module DiasporaFederation
|
module DiasporaFederation
|
||||||
describe Federation::Receiver::Public do
|
describe Federation::Receiver::PublicSlapReceiver do
|
||||||
let(:sender_id) { FactoryGirl.generate(:diaspora_id) }
|
let(:sender_id) { FactoryGirl.generate(:diaspora_id) }
|
||||||
let(:sender_key) { OpenSSL::PKey::RSA.generate(1024) }
|
let(:sender_key) { OpenSSL::PKey::RSA.generate(1024) }
|
||||||
let(:xml) {
|
let(:xml) {
|
||||||
|
|
@ -27,7 +27,7 @@ module DiasporaFederation
|
||||||
|
|
||||||
expect {
|
expect {
|
||||||
described_class.new(xml).receive!
|
described_class.new(xml).receive!
|
||||||
}.to raise_error Federation::SenderKeyNotFound
|
}.to raise_error Salmon::SenderKeyNotFound
|
||||||
end
|
end
|
||||||
|
|
||||||
it "raises when bad xml was supplied" do
|
it "raises when bad xml was supplied" do
|
||||||
Loading…
Reference in a new issue