Got an IndieWeb site? Want to interact with federated social networks like Mastodon, Hubzilla, and more? Bridgy Fed is for you.
 
 
 
 
Go to file
Ryan Barrett 68d86fce8f
move pip install -e's for oauth-dropins and granary into req't.freeze.txt
2019-10-06 07:35:08 -07:00
.circleci move pip install -e's for oauth-dropins and granary into req't.freeze.txt 2019-10-06 07:35:08 -07:00
static better link for wordpress atom feed instructions 2019-04-30 11:13:36 -07:00
templates webmention: refactor storing Responses so we can do it earlier 2017-10-26 12:31:04 -07:00
tests unify HTTP fetching, HTML and mf2 parsing, and error handling into webutil 2019-10-03 21:08:26 -07:00
.gitignore minor config changes for let's encrypt certbot, stub index.html 2017-08-16 18:55:14 -07:00
README.md AP => webmention: fetch actor for all activity types, including replies 2018-11-15 13:03:32 -08:00
activitypub.py unify HTTP fetching, HTML and mf2 parsing, and error handling into webutil 2019-10-03 21:08:26 -07:00
add_webmention.py misc noop cleanups based on LGTM alerts 2019-09-19 11:57:16 -07:00
app.yaml add noop handler for /superfeedr/* that just logs the request 2018-10-17 14:39:25 -07:00
appengine_config.py activitypub: point actor ids to bridgy fed, not source web site 2017-10-23 21:57:08 -07:00
common.py unify HTTP fetching, HTML and mf2 parsing, and error handling into webutil 2019-10-03 21:08:26 -07:00
logs.py /responses: link logs for all requests, not just webmention => fed 2019-04-16 14:19:16 -07:00
models.py handle AP Undo of Follow 2019-08-01 10:32:50 -07:00
redirect.py unify HTTP fetching, HTML and mf2 parsing, and error handling into webutil 2019-10-03 21:08:26 -07:00
render.py add HTML meta redirects to mf2 rendered pages for end users 2019-04-17 08:44:26 -07:00
requirements.freeze.txt update dependency versions 2019-10-05 23:04:53 -07:00
requirements.txt bump granary req't up to 1.14 for AS1/mf2 follow support 2018-11-15 13:01:52 -08:00
salmon.py activitypub: prefer id over url for inReplyTo and Like/Announce object 2017-10-23 21:23:33 -07:00
superfeedr.py add noop handler for /superfeedr/* that just logs the request 2018-10-17 14:39:25 -07:00
webfinger.py unify HTTP fetching, HTML and mf2 parsing, and error handling into webutil 2019-10-03 21:08:26 -07:00
webmention.py unify HTTP fetching, HTML and mf2 parsing, and error handling into webutil 2019-10-03 21:08:26 -07:00

README.md

Bridgy Fed Circle CI Coverage Status

Got an IndieWeb site? Want to interact with federated social networks like Mastodon, Hubzilla, and more? Bridgy Fed is for you.

https://fed.brid.gy/

Bridgy Fed connects the IndieWeb with federated social networks using ActivityPub and OStatus. Original design docs:

License: This project is placed in the public domain.

Development

First, install the Google Cloud SDK (aka gcloud) with the gcloud-appengine-python and gcloud-appengine-python-extras components.

Once you've done that, run this to find the App Engine libraries directory:

STATE instead use Installation Root: [/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk]
gcloud info | grep -o -E '/[^:]+google_appengine'

(If that doesn't output anything, try just gcloud info, look in the Python PATH section, and try to find the App Engine directory.)

Add that directory to your $PYTHONPATH, e.g. export PYTHONPATH=$PYTHONPATH:/opt/homebrew-cask/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/platform/google_appengine. Then, run:

virtualenv local
source local/bin/activate
pip install -r requirements.txt
python -m unittest discover

The last command runs the unit tests. If you send a pull request, please include (or update) a test for the new functionality!

If you hit an error during setup, check out the oauth-dropins Troubleshooting/FAQ section. For searchability, here are a handful of error messages that have solutions there:

bash: ./bin/easy_install: ...bad interpreter: No such file or directory

ImportError: cannot import name certs

ImportError: No module named dev_appserver

ImportError: cannot import name tweepy

File ".../site-packages/tweepy/auth.py", line 68, in _get_request_token
  raise TweepError(e)
TweepError: must be _socket.socket, not socket

error: option --home not recognized

You may need to change granary, oauth-dropins, webmention-tools, mf2util, or other dependencies as well as as Bridgy Fed. To do that, clone their repo locally, then install them in "source" mode with e.g.:

pip uninstall -y granary
pip install -e <path to granary>
ln -s <path to granary>/granary \
  local/lib/python2.7/site-packages/granary

The symlinks are necessary because App Engine's vendor module evidently doesn't follow .egg-link or .pth files. :/

To deploy to the production instance on App Engine - if @snarfed has added you as an owner - run:

gcloud -q app deploy --project bridgy-federated *.yaml

Compatibility

Here are in progress notes on how I'm testing interoperability with various federated social networks.

ActivityPub

Salmon