- Sort by
- Name
- Oldest updated
- Last updated
-
v0.20.0Release v0.20.0
[0.20.0] - 2020-12-20
Added
-
Entities with a
raw_content
field now have URL syntax mentions rendered into a link. (related issue)If Django is configured, a profile will be retrieved using the configured profile getter function and the profile name or username will be used for the link.
-
Add
process_text_links
text utility to linkify URL's in text. -
Add
find_tags
text utility to find hashtags from text. Optionally the function can also replace the tags through a givenreplacer
function. This utility is used to improve the tag extraction logic from entities text fields. (related issue) -
Outbound functions
handle_send
andhandle_create_payload
now accept an optionalpayload_logger
parameter. If given it should be a function that takes three parameters:-
str
ordict
payload -
str
protocol name -
str
sender id
The function will be called for each generated payload.
-
-
Cross-protocol improvements:
- Extract Diaspora guid from ActivityPub payloads implementing the Diaspora extension.
- Add Diaspora extension and guid to outbound ActivityPub payloads, if available. For profiles, also add handle.
- Extract ActivityPub ID from Diaspora payloads if found as the
activitypub_id
property. - Add ActivityPub ID to outbound Diaspora payloads of types comment, post and profile,
if an URL given as
id
.
Changed
-
The NodeInfo2 hostmeta parser now cleans the port out of the host name.
-
URL's in outgoing text content are now linkified for the HTML representation of the content for ActivityPub payloads.
-
Don't include OStatus for Mastodon 3.0+ protocols list. (related issue)
-
Backwards incompatible: Stop markdownifying incoming ActivityPub content. Instead copy it as is to the
raw_content
attribute on the entity, setting also the_media_type
totext/html
.
Fixed
-
Don't crash loudly when fetching webfinger for Diaspora that does not contain XML.
-
Add missing
response.raise_for_status()
call to thefetch_document
network helper when fetching with given URL. Error status was already being raised correctly when fetching by domain and path. -
Don't crash when parsing an invalid NodeInfo document where the usage dictionary is not following specification.
-
Ensure Pixelfed, Kroeg and Kibou instances that emulate the Mastodon API don't get identified as Mastodon instances.
-
Loosen validation of
TargetIDMixin
, it now requires one of the target attributes to be set, not justtarget_id
. This fixes follows over the Diaspora protocol which broke with stricter send validation added in 0.19.0. -
Fix some edge case crashes of
handle_send
when there are Diaspora protocol receivers. -
Fix reading
sharedInbox
from remote ActivityPub profiles. This caused public payloads not to be deduplicated when sending public payloads to remote ActivityPub servers. Refetching profiles should now fix this. (related issue) -
Don't always crash generating payloads if Django is installed but not configured.
-
Don't try to relay AP payloads to Diaspora receivers and vice versa, for now, until cross-protocol relaying is supported.
-
Fix some characters stopping tags being identified (related issue)
-
Fix tags separated by slashes being identified (related issue)
-
-
v0.19.0Release v0.19.0
[0.19.0] - 2019-12-15
Added
- The fetcher
retrieve_remote_profile
now also supports handle based fetching for the ActivityPub protocol.
Changed
- All outgoing entities are now validated before sending. This stops the sending of invalid entities to the network, for example a Share of a Post from ActivityPub to the Diaspora protocol network.
Fixed
-
Allow ActivityPub HTTP Signature verification to pass if signature is at most 24 hours old.
Previously requirement was 30 seconds, which caused loss of messages where signature validation didn't happen immediately, but in a background worker which didn't immediately process the job.
Internal changes
-
Improve performance of generating ActivityPub payloads for a large number of receivers in
handle_send
. -
Fail early in outbound
handle_send
if a payload cannot be generated for a payload which doesn't depend on recipient attributes.
- The fetcher
-
v0.18.1Release v0.18.1
[0.18.1] - 2019-10-06
Changed
- Removed possibility to deactivate ActivityPub support. It is now always enabled by default.
[0.18.0] - 2019-10-06
Added
-
Base entities
Post
,Comment
andImage
now accept anurl
parameter. This will be used when serializing the entities to AS2 for ActivityPub. -
RFC7033 webfinger generator now has compatibility to platforms using it with ActivityPub. It now lists
aliases
pointing to the ActivityPub entity ID and profile URL. Also there is arel=self
to point to theapplication/activity+json
AS2 document location. -
Added a Django view decorator that makes any Profile or Post view ActivityPub compatible. Right now basic AS2 serialization is supported when the view is called using the supported content types in the Accept header. If the content types are not in the header, the view will render normally.
When used, a few extra settings must be given in the Django
FEDERATION
configuration dictionary.-
get_object_function
should contain the Python path to a function that takes a request object and returns an object matching the ActivityPub ID for the request orNone
. -
process_payload_function
should contain the Python path to a function that takes in a request object. It should returnTrue
if successful (or placed in queue for processing later) orFalse
in case of any errors.
-
-
Added network utility
network.fetch_host_ip
to fetch IP by hostname. -
Entities of type
Profile
now have a dictionary ofinboxes
, with two elements,private
andpublic
. These should be URL's indicating where to send payloads for the recipient.ActivityPub profiles will parse these values from incoming profile documents. Diaspora entities will default to the inboxes in the specification.
-
Added support for Diaspora
Comment
entitythread_parent_guid
attribute. -
Added
root_target_id
androot_target_guid
toComment
base entity. This allows referring to a parent object up the hierarchy chain for threaded comments. -
The high level fetcher
retrieve_remote_content
now supports ActivityPub ID's. -
All ActivityPub payloads are added a
pyfed: https://docs.jasonrobinson.me/ns/python-federation
context to identify payloads sent by this library. -
Entities with
raw_content
now also contain a_media_type
andrendered_content
.The default
_media_type
istext/markdown
except for ActivityPub originating posts it defaults totext/html
. If the ActivityPub payload contains asource
, that mediaType will be used instead. -
Host meta fetchers now support NodeInfo 2.1
Changed
-
Backwards incompatible. Lowest compatible Python version is now 3.6.
-
Backwards incompatible. Internal refactoring to allow adding ActivityPub support as the second supported protocol. Highlights of changes below.
-
Reversal of all the work previously done to use Diaspora URL format identifiers. Working with the Diaspora protocol now always requires using handles and GUID's as before the changes introduced in v0.15.0. It ended up impossible to construct a Diaspora URL in all cases in a way that apps only need to store one identifier.
-
The
id
and possibletarget_id
are now either URL format identifiers (ActivityPub) or a handle or GUID (Diaspora, depending on entity). Additionally a newactor_id
has been added which for ActivityPub is an URL and for Diaspora a handle. Note, Diaspora entities always have also theguid
,handle
,target_guid
andtarget_handle
as before v0.15.0, depending on the entity. When creating Diaspora entities, you must pass these in for sending to work. -
The high level
fetchers.retrieve_remote_content
signature has changed. It now expects anid
for fetching from AP protocol andhandle
,guid
andentity_type
to fetch from Diaspora. Additionally asender_key_fetcher
can be passed in as before to optimize public key fetching using a callable. -
The high level
fetchers.retrieve_remote_profile
signature has changed. It now expects as first parameter anid
which for ActivityPub objects is the URL ID and for Diaspora objects is the handle. Additionally asender_key_fetcher
can be passed in as before to optimize public key fetching using a callable. -
The generator class
RFC7033Webfinger
now expects instead of anid
thehandle
andguid
of the profile. -
NodeInfo2 parser now returns the admin user in
handle
format instead of a Diaspora format URL. -
The high level inbound and outbound functions
inbound.handle_receive
,outbound.handle_send
parameteruser
must now receive aUserType
compatible object. This must have the attributeid
, and forhandle_send
alsoprivate_key
. If Diaspora support is required then alsohandle
andguid
should exist. The type can be found as a class intypes.UserType
. -
The high level inbound function
inbound.handle_receive
first parameter has been changed torequest
which must be aRequestType
compatible object. This must have the attributebody
which corrresponds to the oldpayload
parameter. For ActivityPub inbound requests the object must also containheaders
,method
andurl
. -
The outbound function
outbound.handle_send
parameterrecipients
structure has changed. It must now be a list of dictionaries, containing at minimum the following:endpoint
for the recipient endpoint,fid
for the recipient federation ID (ActivityPub only),protocol
for the protocol to use andpublic
as a boolean whether the payload should be treated as visible to anyone.For Diaspora private deliveries, also a
public_key
is required containing the receiver public key. Note that passing in handles as recipients is not any more possible - always pass in a url forendpoint
. -
The outbound function
outbound.handle_create_payload
now requires an extra third parameter for the protocol to use. This function should rarely need to be called directly - usehandle_send
instead which can handle both ActivityPub and Diaspora protocols. -
The
Image
base entity has been made more generic.The following were removed:
remote_path
,remote_name
,linked_type
,linked_guid
,public
.The following were added:
url
,name
.
-
-
Backwards incompatible. Generator
RFC3033Webfinger
and the relatedrfc3033_webfinger_view
have been renamed toRFC7033Webfinger
andrfc7033_webfinger_view
to reflect the right RFC number. -
Network helper utility
fetch_document
can now also take a dictionary ofheaders
. They will be passed to the underlyingrequests
method call as is. -
Retraction
entity can now also have anentity_type
ofObject
. Receivers will need to find the correct object usingtarget_id
only. This is currently only relevant for ActivityPub where retraction messages do not refer to object type. -
Backwards incompatible. Inbound entities now have a list of receivers.
Entities processed by inbound mappers will now have a list of receivers in
_receivers
. This replaces the_receiving_actor_id
which was previously set for Diaspora entities. -
UserType now has a
receiver_variant
which is one ofReceiverVariant
enum.ACTOR
means this receiver is a single actor ID.FOLLOWERS
means this is the followers of the ID in the receiver.
Fixed
- Ensure Diaspora mentions are extracted when they don't have a display name part.
Removed
- Backwards incompatible. Support for Legacy Diaspora payloads have been removed to reduce the amount of code needed to maintain while refactoring for ActivityPub.
-
v0.17.0Release v0.17.0
[0.17.0] - 2018-08-11
Fixed
-
Switch crypto library
pycrypto
topycryptodome
, which is a more up to date fork of the former. This fixes CVE-2018-6594 found in the former.Deployment note. When updating an application, you must uninstall
pycrypto
first, otherwise there will be a conflict if both the versions are installed at the same time. To uninstall, dopip uninstall pycrypto
.
-
-
v0.16.0Release v0.16.0
[0.16.0] - 2018-07-23
Added
-
Enable generating encrypted JSON payloads with the Diaspora protocol which adds private message support. (related issue)
JSON encrypted payload encryption and decryption is handled by the Diaspora
EncryptedPayload
class. -
Add RFC3033 webfinger generator (related issue)
Also provided is a Django view and url configuration for easy addition into Django projects. Django is not a hard dependency of this library, usage of the Django view obviously requires installing Django itself. For configuration details see documentation.
-
Add fetchers and parsers for NodeInfo, NodeInfo2, StatisticsJSON and Mastodon server metainfo documents.
-
Add NodeInfo2 generator and Django view. See documentation for details. (related issue)
-
Added new network utilities to fetch IP and country information from a host.
The country information is fetched using the free
ipdata.co
service. NOTE! This service is rate limited to 1500 requests per day. -
Extract mentions from Diaspora payloads that have text content. The mentions will be available in the entity as
_mentions
which is a set of Diaspora ID's in URI format.
Changed
-
Send outbound Diaspora payloads in new format. Remove possibility to generate legacy MagicEnvelope payloads. (related issue)
-
Backwards incompatible. Refactor
handle_send
functionNow handle_send high level outbound helper function also allows delivering private payloads using the Diaspora protocol. (related issue)
The signature has changed. Parameter
recipients
should now be a list of recipients to delivery to. Each recipient should either be anid
or a tuple of(id, public key)
. If public key is provided, Diaspora protocol delivery will be made as an encrypted private delivery. -
Backwards incompatible. Change
handle_create_payload
function signature.Parameter
to_user
is nowto_user_key
and thus instead of an object containing thekey
attribute it should now be an RSA public key object instance. This simplifies things since we only need the key from the user, nothing else. -
Switch Diaspora protocol to send new style entities (related issue)
We've already accepted these on incoming payloads for a long time and so do all the other platforms now, so now we always send out entities with the new property names. This can break federation with really old servers that don't understand these keys yet.
Fixed
-
Change unquote method used when preparing Diaspora XML payloads for verification (related issue)
Some platforms deliver payloads not using the urlsafe base64 standard which caused problems when validating the unquoted signature. Ensure maximum compatibility by allowing non-standard urlsafe quoted payloads.
-
Fix for empty values in Diaspora protocol entities sometimes ending up as
None
instead of empty string when processing incoming payloads. -
Fix validation of
Retraction
with entity typeShare
-
Allow port in Diaspora handles as per the protocol specification
Previously handles were validated like emails.
-
Fix Diaspora
Profile
mapping regardinglast_name
propertyPreviously only
first_name
was used when creating theProfile.name
value. Now bothfirst_name
andlast_name
are used.When creating outgoing payloads, the
Profile.name
will still be placed infirst_name
to avoid trying to artificially split it.
-
-
v0.15.0Release v0.15.0
[0.15.0] - 2018-02-12
Added
-
Added base entity
Share
which maps to aDiasporaReshare
for the Diaspora protocol. (related issue)The
Share
entity supports all the properties that a Diaspora reshare does. Additionally two other properties are supported:raw_content
andentity_type
. The former can be used for a "quoted share" case where the sharer adds their own note to the share. The latter can be used to reference the type of object that was shared, to help the receiver, if it is not sharing aPost
entity. The value must be a base entity class name. -
Entities have two new properties:
id
andtarget_id
.Diaspora entity ID's are in the form of the Diaspora URI scheme, where it is possible to construct an ID from the entity. In the future, ActivityPub object ID's will be found in these properties.
-
New high level fetcher function
federation.fetchers.retrieve_remote_content
. (related issue)This function takes the following parameters:
-
id
- Object ID. For Diaspora, the only supported protocol at the moment, this is in the Diaspora URI format. -
sender_key_fetcher
- Optional function that takes a profilehandle
and returns a public key instr
format. If this is not given, the public key will be fetched from the remote profile over the network.
The given ID will be fetched from the remote endpoint, validated to be from the correct author against their public key and then an instance of the entity class will be constructed and returned.
-
-
New Diaspora protocol helpers in
federation.utils.diaspora
:-
retrieve_and_parse_content
. See notes regarding the high level fetcher above. -
fetch_public_key
. Given ahandle
as a parameter, will fetch the remote profile and return thepublic_key
from it. -
parse_diaspora_uri
. Parses a Diaspora URI scheme string, returns eitherNone
if parsing fails or atuple
ofhandle
,entity_type
andguid
.
-
-
Support fetching new style Diaspora protocol Webfinger (RFC 3033) (related issue)
The legaxy Webfinger is still used as fallback if the new Webfinger is not found.
Changed
-
Refactoring for Diaspora
MagicEnvelope
class.The class init now also allows passing in parameters to construct and verify MagicEnvelope instances. The order of init parameters has not been changed, but they are now all optional. When creating a class instance, one should always pass in the necessary parameters depnding on whether the class instance will be used for building a payload or verifying an incoming payload. See class docstring for details.
-
Diaspora procotol receive flow now uses the
MagicEnvelope
class to verify payloads. No functional changes regarding verification otherwise. -
Diaspora protocol receive flow now fetches the sender public key over the network if a
sender_key_fetcher
function is not passed in. Previously an error would be raised.Note that fetching over the network for each payload is wasteful. Implementers should instead cache public keys when possible and pass in a function to retrieve them, as before.
Fixed
-
Converting base entity
Profile
toDiasporaProfile
for outbound sending missed two attributes,image_urls
andtag_list
. Those are now included so that the values transfer into the built payload. -
Fix fallback to HTTP in the
fetch_document
network helper in the case ofConnectionError
when trying HTTPS. Thanks @autogestion. -
Ensure
handle
is always lower cased when fetching remote profile usingretrieve_remote_profile
. Warning will be logged if an upper case handle is passed in.
-
-
v0.14.0Release v0.14.0
[0.14.0] - 2017-08-06
Security
-
Add proper checks to make sure Diaspora protocol payload handle and entity handle are the same. Even though we already verified the signature of the sender, we didn't ensure that the sender isn't trying to fake an entity authored by someone else.
The Diaspora protocol functions
message_to_objects
andelement_to_objects
now require a new parameter, the payload sender handle. These functions should normally not be needed to be used directly.
Changed
-
Breaking change. The high level
federation.outbound
functionshandle_send
andhandle_create_payload
signatures have been changed. This has been done to better represent the objects that are actually sent in and to add an optionalparent_user
object.For both functions the
from_user
parameter has been renamed toauthor_user
. Optionally aparent_user
object can also be passed in. Both the user objects must haveprivate_key
andhandle
attributes. In the case thatparent_user
is given, that user will be used to sign the payload and for Diaspora relayables an extraparent_author_signature
in the payload itself.
-
-
v0.13.0Release v0.13.0
[0.13.0] - 2017-07-22
Backwards incompatible changes
- When processing Diaspora payloads, entity used to get a
_source_object
stored to it. This was anetree.Element
created from the source object. Due to serialization issues in applications (for example pushing the object to a task queue or saving to database),_source_object
is now a byte string representation for the element done withetree.tostring()
.
Added
- New style Diaspora private encrypted JSON payloads are now supported in the receiving side. Outbound private Diaspora payloads are still sent as legacy encrypted payloads. (issue)
- No additional changes need to be made when calling
handle_receive
from your task processing. Just pass in the full received XML or JSON payload as a string with recipient user object as before.
- No additional changes need to be made when calling
- Add
created_at
to DiasporaComment
entity XML creator. This is required in renewed Diaspora protocol. (related issue)
Fixed
- Fix getting sender from a combination of legacy Diaspora encrypted payload and new entity names (for example
author
). This combination probably only existed in this library. - Correctly extend entity
_children
. Certain Diaspora payloads caused_children
for an entity to be written over by an empty list, causing for example status message photos to not be saved. Correctly do an extend on it. (issue) - Fix parsing Diaspora profile
tag_string
intoProfile.tag_list
if thetag_string
is an empty string. This caused the wholeProfile
object creation to fail. (issue) - Fix processing Diaspora payload if it is passed to
handle_receive
as abytes
object. (issue) - Fix broken Diaspora relayables after latest 0.2.0 protocol changes. Previously relayables worked only because they were reverse engineered from the legacy protocol. Now that XML order is not important and tag names can be different depending on which protocol version, the relayable forwarding broke. To fix, we don't regenerate the entity when forwarding it but store the original received object when generating a
parent_author_signature
(which is optional in some cases, but we generate it anyway for now). This happens in the previously existingentity.sign_with_parent()
method. In the sending part, if the original received object (now with a parent author signature) exists in the entity, we send that to the remote instead of serializing the entity to XML.- To forward a relayable you must call
entity.sign_with_parent()
before callinghandle_send
to send the entity.
- To forward a relayable you must call
Removed
-
Post.photos
entity attribute was never used by any code and has been removed. Child entities of typeImage
are stored in thePost._children
as before. - Removed deprecated user private key lookup using
user.key
in Diaspora receive processing. Passed inuser
objects must now have aprivate_key
attribute.
- When processing Diaspora payloads, entity used to get a
-
v0.12.0Release v0.12.0
[0.12.0] - 2017-05-22
Backwards incompatible changes
- Removed exception class
NoHeaderInMessageError
. New style Diaspora protocol does not have a custom header in the Salmon magic envelope and thus there is no need to raise this anywhere.
Added
- New style Diaspora public payloads are now supported (see here). Old style payloads are still supported. Payloads are also still sent out old style.
- Add new
Follow
base entity and support for the new Diaspora "contact" payload. The simpleFollow
maps to Diaspora contact entity with following/sharing both true or false. Sharing as a separate concept is not currently supported. - Added
_receiving_guid
to all entities. This is filled withuser.guid
ifuser
is passed tofederation.inbound.handle_receive
and it has aguid
. Normally in for example Diaspora, this will always be done in private payloads.
Fixed
- Legacy Diaspora retraction of sharing/following is now supported correctly. The end result is a
DiasporaRetraction
for entity typeProfile
. Since the payload doesn't contain the receiving user for a sharing/following retraction in legacy Diaspora protocol, we store the guid of the user in the entity as_receiving_guid
, assuming it was passed in for processing.
- Removed exception class
-
v0.11.0Release v0.11.0
[0.11.0] - 2017-05-08
Backwards incompatible changes
Diaspora protocol support added for
comment
andlike
relayable types. On inbound payloads the signature included in the payload will be verified against the sender public key. A failed verification will raiseSignatureVerificationError
. For outbound entities, the author private key will be used to add a signature to the payload.This introduces some backwards incompatible changes to the way entities are processed. Diaspora entity mappers
get_outbound_entity
and entity utilitiesget_full_xml_representation
now requires the authorprivate_key
as a parameter. This is required to sign outgoingComment
andReaction
(like) entities.Additionally, Diaspora entity mappers
message_to_objects
andelement_to_objects
now take an optionalsender_key_fetcher
parameter. This must be a function that when called with the sender handle will return the sender public key. This allows using locally cached public keys instead of fetching them as needed. NOTE! If the function is not given, each processed payload will fetch the public key over the network.A failed payload signature verification now raises a
SignatureVerificationError
instead of a less specificAssertionError
.Added
- Three new attributes added to entities.
- Add protocol name to all entities to attribute
_source_protocol
. This might be useful for applications to know which protocol payload the entity was created from once multiple protocols are implemented. - Add source payload object to the entity at
_source_object
when processing it. - Add sender public key to the entity at
_sender_key
, but only if it was used for validating signatures.
- Add protocol name to all entities to attribute
- Add support for the new Diaspora payload properties coming in the next protocol version. Old XML payloads are and will be still supported.
-
DiasporaComment
andDiasporaLike
will get the order of elements in the XML payload as a list inxml_tags
. For implementers who want to recreate payloads for these relayables, this list should be saved for later use. - High level
federation.outbound.handle_send
helper function now allows sending entities to a list of recipients without having to deal with payload creation or caring about the protocol (in preparation of being a multi-protocol library).- The function takes three parameters,
entity
that will be sent,from_user
that is sending (note, not necessarely authoring, this user will be used to sign the payload for Diaspora for example) and a list of recipients as tuples of recipient handle/domain and optionally protocol. In the future, if protocol is not given, it will be guessed from the recipient handle, and if necessary a network lookup will be made to see what protocols the receiving identity supports. - Payloads will be delivered to each receiver only once. Currently only public messages are supported through this helper, so multiple recipients on a single domain will cause only one delivery.
- The function takes three parameters,
Changed
- Refactor processing of Diaspora payload XML into entities. Diaspora protocol is dropping the
<XML><post></post></XML>
wrapper for the payloads. Payloads with the wrapper will still be parsed as before.
- Three new attributes added to entities.
-
v0.10.0Release v0.10.0
[0.10.0] - 2017-01-28
Added
- Add support for new Diaspora protocol ISO 8601 timestamp format introduced in protocol version 0.1.6.
- Tests are now executed also against Python 3.6.
Fixes
- Don't crash
federation.utils.diaspora.retrieve_diaspora_webfinger
if XRD parse raises anxml.parsers.expat.ExpatError
.
-
v0.9.0Release v0.9.0
[0.9.0] - 2016-12-10
Backwards incompatible changes
-
Image
no longer has atext
attribute. It is replaced byraw_content
, the same attribute asPost
andComment
have. Unlike the latter two,Image.raw_content
is not mandatory.
Added
- Entities can now have a children. These can be accessed using the
_children
list. Acceptable children depends on the entity. Currently,Post
,Comment
andProfile
can have children of entity typeImage
. Child types are validated in the.validate()
entity method call.
Fixed
- Diaspora protocol
message_to_objects
method (called through inbound high level methods) now correctly parses Diaspora<photo>
elements and createsImage
entities from them. If they are children of status messages, they will be available through thePost._children
list.
-
-
v0.8.0Release v0.8.0
[0.8.0] - 2016-10-09
Library is now called
federation
The name Social-Federation was really only an early project name which stuck. Since the beginning, the main module has been
federation
. It makes sense to unify these and also shorter names are generally nicer.What do you need to do?
Mostly nothing since the module was already called
federation
. Some things to note below:- Update your requirements with the new library name
federation
. - If you hook to the old logger
social-federation
, update those to listen tofederation
, which is now the standard logger name used throughout.
Other backwards incompatible changes
-
federation.utils.diaspora.retrieve_and_parse_profile
will now returnNone
if theProfile
retrieved doesn't validate. This will affect also the output offederation.fetchers.retrieve_remote_profile
which is the high level function to retrieve profiles. - Remove unnecessary
protocol
parameter fromfederation.fetchers.retrieve_remote_profile
. We're miles away from including other protocols and ideally the caller shouldn't have to pass in the protocol anyway.
Added
- Added
Retraction
entity withDiasporaRetraction
counterpart.
- Update your requirements with the new library name
-
v0.7.0Release v0.7.0
[0.7.0] - 2016-09-15
Backwards incompatible changes
- Made
guid
mandatory forProfile
entity. Library users should always be able to get a full validated object as we considerguid
a core attribute of a profile. - Always validate entities created through
federation.entities.diaspora.mappers.message_to_objects
. This is the code that transforms federation messages for the Diaspora protocol to actual entity objects. Previously no validation was done and callers offederation.inbound.handle_receive
received entities that were not always valid, for example they were missing aguid
. Now validation is done in the conversion stage and errors are pushed to thesocial-federation
logger in the event of invalid messages.- Note Diaspora Profile XML messages do not provide a GUID. This is handled internally by fetching the guid from the remote hCard so that a valid
Profile
entity can be created.
- Note Diaspora Profile XML messages do not provide a GUID. This is handled internally by fetching the guid from the remote hCard so that a valid
Added
- Raise a warning if unknown parameters are passed to entities.
- Ensure entity required attributes are validated for
None
or empty string values. Required attributes must not only exist but also have a value. - Add validation to entities with the attribute
public
. Onlybool
values are accepted.
Changed
- Function
federation.utils.diaspora.parse_profile_from_hcard
now requires a second argument,handle
. Since in the future Diaspora hCard is not guaranteed to have username and domain, we now pass handle to the parser directly.
- Made