Go to file
Netscape Navigator b0181234af Test case: Verification / assertion error 2020-04-03 05:29:19 -05:00
dist Test case: Verification / assertion error 2020-04-03 05:29:19 -05:00
spec Test case: Verification / assertion error 2020-04-03 05:29:19 -05:00
views 🎉🎉🎉 Bundle ingestion works!! 2020-03-31 07:09:42 -05:00
.gitignore We have BUNDLE CREATION 🎉 🎉 🎉 2020-03-15 11:51:13 -05:00
.rspec Coo... coo... 2019-09-21 21:30:03 -05:00
Gemfile === BEGIN FILESYSTEM REMOVAL === 2019-11-26 19:46:50 -06:00
Gemfile.lock === BEGIN FILESYSTEM REMOVAL === 2019-11-26 19:46:50 -06:00
README.md Works again! 🎉 2020-04-03 05:19:42 -05:00
TODO.md Update spec, begin message implementation 2019-10-12 14:43:27 -05:00
logo.png Add logo 2019-10-09 19:32:54 -05:00
pigeon-cli Fix a bunch of bugs that came up only now that we are dealing with remote peers 2020-03-26 08:17:50 -05:00
scratchpad.jpg Cleanup and test scripts. TODO: Why does blocking not delete previous peers? 2019-09-24 20:19:25 -05:00
scratchpad.sh Add `message find` and `message find-all` (local user only - find-all for peers 🔜) 2020-03-15 13:51:20 -05:00

README.md

Pigeon Ruby

A WIP pigeon protocol client.

How to Use

This is a pre-release skeleton project. There is no gem yet. The gem will be released after we are fully compliant with the spec and have high test coverage stats.

To get started, clone this repo and run ./pigeon-cli in place of pigeon.

Eg: pigeon identity show becomes ./pigeon-cli show.

Current Status

  • pigeon identity new
  • pigeon identity show
  • pigeon status
  • pigeon blob set
  • pigeon blob get
  • pigeon peer add
  • pigeon peer remove
  • pigeon peer block
  • pigeon peer all
  • 100% coverage
  • Convert ".sig.ed25519" literals to constants
  • Rename numerous "pigeon message ..." commands to "pigeon draft ..."
  • pigeon draft create
  • pigeon draft append
  • pigeon draft current
  • pigeon draft save
  • pigeon bundle create
  • Use JSON.stringify() for string keys (instead of inspect)
  • Move literals into Pigeon module as constants, again.
  • pigeon message find
  • pigeon message find-all for local feed.
  • pigeon bundle consume (We are minimally feature complete at this point)
  • Fix the diagram in the spec document
  • Validate inputs for Draft#[]=.
  • Put all the [HEADER, string, FOOTER].join("") nonsense into Pigeon::Helpers
  • Use raw SHA256 hashes for blob multihashes, not hex.
  • Change all the {40,90} values in ::Lexer to real length values
  • Don't double-ingest messages. It will screw up indexes.
  • Handle the three outcomes of bundle ingestion: ok, blocked, already_saved.
  • Check blocklist before ingesting bundles.
  • Rename (RemoteIdentity|LocalIdentity)#public_key to #multihash for consistency with other types.
  • Rename message find to message read, since other finders return a multihash.
  • Don't allow carriage return in kind or string keys. Write a test for this.
  • Create regexes in ::Lexer using strings and Regexp.new() for cleaner regexes.
  • Ensure all disks writes perform verification!
  • Implement pigeon message find-all for peer feed. I will need to add index for author => message_count
  • refactor Bundle.create to use message find-all.
  • add parsers and validators for all CLI inputs
  • Remove all .current "singletons" / hacks
  • Reduce whole darn repo into single module to aide portability. Maybe a second ::Support module is OK.
  • 100% documentation
  • 100% test coverage
  • Update the bundles.md document once bundle consume works.
  • Use URNs instead of multihash?
  • Add .pigeon file extensions
  • Update spec to look like this
  • Add Lipmaa links like the Bamboo folks do.
  • Publish a RubyGem
  • Performance benchmarks
  • Performance tuning (DO THIS LAST!)

Idea Bin

  • Map/reduce plugin support for custom indices?
  • Ability to add a blob in one swoop using File objects and Message#[]=, maybe?