beem.conveyor¶
-
class
beem.conveyor.
Conveyor
(url='https://conveyor.steemit.com', blockchain_instance=None, **kwargs)¶ 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:
from beem import Steem from beem.conveyor import Conveyor s = Steem(keys=["5JPOSTINGKEY"]) c = Conveyor(blockchain_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:
from beem import Steem from beem.conveyor import Conveyor s = Steem(keys=["5JPOSTINGKEY"]) c = Conveyor(blockchain_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:
from beem import Steem from beem.conveyor import Conveyor s = Steem(keys=["5JPOSTINGKEY"]) c = Conveyor(blockchain_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:
{ 'jsonrpc': '2.0', 'id': 2, 'result': [ {'title': 'draft-title', 'body': 'draft-body', 'uuid': '06497e1e-ac30-48cb-a069-27e1672924c9'} ] }
-
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:
from beem import Steem from beem.conveyor import Conveyor s = Steem(keys=["5JADMINPOSTINGKEY"]) c = Conveyor(blockchain_instance=s) userdata = {'email': 'foo@bar.com', 'phone':'+123456789'} c.set_user_data('accountname', userdata, 'adminaccountname')