Sha256: 58e4df30df9c9accf0fcee22d92a198c3641ac2602e45993eae5fc6aefcc5a93

Contents?: true

Size: 1.16 KB

Versions: 1

Compression:

Stored size: 1.16 KB

Contents

Glowworm's wire protocol is intentionally very simple, and carried via
HTTP requests.  Some goals, in order of importance:

* Simplicity, in order to achieve high Reliability and Availability
* Readability and Debuggability
* Not too unreasonably high bandwidth

A given request will be a read of a set of accounts and a set of
features.  Usually, that is one of:

* One feature for one account
* One feature for all accounts
* All features for one account
* All features for all accounts

A request will return data in the following form:

* What account_sets the given account(s) are part of
* The setting of each feature for each account_set
* A list of override flags for specific account/feature combinations

That data is serialized as JSON, in the following form:

{
  "version": 1,
  "account_sets": {
    "13742": 1,  // account 13742 is part of account_set 1
    "19244": [7,8],  // account 19244 is part of account_sets 7 and 8
    //...
  },
  "features": {
    "turn_foo_widget_orange": [1, 2, 3, 4, 6, 7, 8], // account_sets for which this feature is active by default
    //...
  },
  "overrides": [
    "turn_foo_widget_orange": {"19244": false, "742": true},
    //...
  ]
}

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
glowworm-0.3.0 server/PROTOCOL