beem.conveyor

class beem.conveyor.Conveyor(url='https://conveyor.steemit.com', steem_instance=None)

Bases: object

Class to access Steemit Conveyor instances: https://github.com/steemit/conveyor

Description from the official documentation:

  • Feature flags: “Feature flags allows our apps (condenser mainly) to
    hide certain features behind flags.”
  • User data: “Conveyor is the central point for storing sensitive user
    data (email, phone, etc). No other services should store this data and should instead query for it here every time.”
  • User tags: “Tagging mechanism for other services, allows defining and
    assigning tags to accounts (or other identifiers) and querying for them.”

Not contained in the documentation, but implemented and working:

  • Draft handling: saving, listing and removing post drafts
    consisting of a post title and a body.

The underlying RPC authentication and request signing procedure is described here: https://github.com/steemit/rpc-auth

get_feature_flag(account, flag, signing_account=None)

Test if a specific feature flag is set for an account. The request has to be signed by the requested account or an admin account.

Parameters:
  • account (str) – requested account
  • flag (str) – flag to be tested
  • signing_account (str) – (optional) account to sign the request. If unset, account is used.

Example: .. code-block:: python

from beem import Steem from beem.conveyor import Conveyor s = Steem(keys=[5JPOSTINGKEY]) c = Conveyor(steem_instance=s) print(c.get_feature_flag(‘accountname’, ‘accepted_tos’))
get_feature_flags(account, signing_account=None)

Get the account’s feature flags. The request has to be signed by the requested account or an admin account.

Parameters:
  • account (str) – requested account
  • signing_account (str) – (optional) account to sign the request. If unset, account is used.

Example: .. code-block:: python

from beem import Steem from beem.conveyor import Conveyor s = Steem(keys=[5JPOSTINGKEY]) c = Conveyor(steem_instance=s) print(c.get_feature_flags(‘accountname’))
get_user_data(account, signing_account=None)

Get the account’s email address and phone number. The request has to be signed by the requested account or an admin account.

Parameters:
  • account (str) – requested account
  • signing_account (str) – (optional) account to sign the request. If unset, account is used.

Example: .. code-block:: python

from beem import Steem from beem.conveyor import Conveyor s = Steem(keys=[5JPOSTINGKEY]) c = Conveyor(steem_instance=s) print(c.get_user_data(‘accountname’))
healthcheck()

Get the Conveyor status

Sample output:

`{‘ok’: True, ‘version’: ‘1.1.1-4d28e36-1528725174’,
‘date’: ‘2018-07-21T12:12:25.502Z’}`
list_drafts(account)

List all saved drafts from account

Parameters:account (str) – requested account
Sample output:
prehash_message(timestamp, account, method, params, nonce)

Prepare a hash for the Conveyor API request with SHA256 according to https://github.com/steemit/rpc-auth Hashing of second is then done inside ecdsasig.sign_message().

Parameters:
  • timestamp (str) – valid iso8601 datetime ending in “Z”
  • account (str) – valid steem blockchain account name
  • method (str) – Conveyor method name to be called
  • param (bytes) – base64 encoded request parameters
  • nonce (bytes) – random 8 bytes
remove_draft(account, uuid)

Remove a draft from the Conveyor database

Parameters:
  • account (str) – requested account
  • uuid (str) – draft identifier as returned from list_drafts
save_draft(account, title, body)

Save a draft in the Conveyor database

Parameters:
  • account (str) – requested account
  • title (str) – draft post title
  • body (str) – draft post body
set_user_data(account, params, signing_account=None)

Set the account’s email address and phone number. The request has to be signed by an admin account.

Parameters:
  • account (str) – requested account
  • param (dict) – user data to be set
  • signing_account (str) – (optional) account to sign the request. If unset, account is used.

Example: .. code-block:: python

from beem import Steem from beem.conveyor import Conveyor s = Steem(keys=[5JADMINPOSTINGKEY]) c = Conveyor(steem_instance=s) userdata = {‘email’: ‘foo@bar.com’, ‘phone’:’+123456789’} c.set_user_data(‘accountname’, userdata, ‘adminaccountname’)