Code Monkey home page Code Monkey logo

pyupush's Introduction

Minimal D-Bus UnifiedPush implementation in Python

Note: early WIP

Goals

  • Implement the D-Bus specification of UnifiedPush in a server and distributor
  • Implement sample users of that client and server
  • Provide an example implementation that can be studied and modified easily, both for future UnifiedPush implementers, and for application developers
  • Keep everything short (not terse) and readable, with enough comments
  • Provide a platform for benchmarking energy-efficiency of various push transports

Non-goals

  • Public deployments: this is mostly for testing
  • Absolute security, including against DDoS and malicious users
  • A useful example app
  • High-performance
  • Scalability to more than 10 users

Architecture

See UnifiedPush/ for the UnifiedPush-specific part ("distributor" in UnifiedPush parlance), and Application/ for the application part. There are readmes in both folders.

If you want to develop or refine a distributor, you will probably be more interested in the first, if you want to integrate UP in your application, have a look at the second. As an app developer, libraries exist to make implementing UnifiedPush easier, see this existing Go and C api.

Usage

  1. Run the server-side distributor from UnifiedPush/server.py
  2. Run the client-side distributor from UnifiedPush/server.py
  3. Run the client application from Application/UpConnector.py
  4. Observe the endpoint returned from the client application, and send it some data with curl -d 'some_data' 'http://endpoint'

Python scripts can be ran with python script.py

TODO

  • Bug fixes, especially lock-ups, exception handling
  • Support unregistration
  • Add more fully-fledged example that directly send a call to /push
  • Add client and server-side application
  • Rewrite API to better separate the logical parts, currently it relies a lot on globals and most classes calling into most others due to last-minute hacks
  • Separate the API into its own files? Not sure if that goes against the goals.
  • Usage documentation
  • Unit testing, probably one of the most useful features that could come out of this project

pyupush's People

Stargazers

 avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.