Esempio n. 1
0
class Server(object):
    """A connection to Flow."""
    def __init__(self, config):
        """Initialize a flow server instance."""
        self.config = config

        self.flow = Flow(server_uri=config.uri,
                         flowappglue=config.flowappglue,
                         host=config.host,
                         port=config.port,
                         schema_dir=config.schema_dir,
                         db_dir=config.db_dir,
                         attachment_dir=config.attachment_dir,
                         use_tls=config.use_tls,
                         glue_out_filename=config.glue_out_filename,
                         decrement_file=config.decrement_file)

        if not self._start_server():
            if not self._setup_device():
                self._setup_account()

        self._setup_org()
        self._set_profile()

    def _start_server(self):
        """Attempt to start the flow server."""
        try:
            self.flow.start_up(username=self.config.username)
            LOG.info("local account '%s' started", self.config.username)
            return True
        except Flow.FlowError as start_up_err:
            LOG.debug("start_up failed: '%s'", str(start_up_err))

    def _setup_device(self):
        """Create a device for an existing account."""
        try:
            self.flow.create_device(username=self.config.username,
                                    password=self.config.password)
            return True
        except Flow.FlowError as create_device_err:
            LOG.debug("Create device failed: '%s'", str(create_device_err))

    def _setup_account(self):
        """Create an account, if it doesn't already exist."""
        try:
            self.flow.create_account(
                username=self.config.username,
                password=self.config.password,
                email_confirm_code=self.config.email_confirm_code,
            )
        except Flow.FlowError as create_account_err:
            LOG.debug("Create account failed: '%s'", str(create_account_err))

    def _setup_org(self):
        """"Join the org if not already a member."""
        try:
            self.flow.new_org_join_request(oid=self.config.org_id)
        except Flow.FlowError as org_join_err:
            LOG.debug("org join failed: '%s'", str(org_join_err))

    def _set_profile(self):
        """Set the user profile based on the items passed in the config."""
        profile = self.flow.get_profile_item_json(
            display_name=getattr(self.config, 'display_name', None),
            biography=getattr(self.config, 'biography', None),
            photo=getattr(self.config, 'photo', None),
        )
        self.flow.set_profile('profile', profile)
Esempio n. 2
0
from flask import Flask, request, abort
from flow import Flow

from raven.contrib.flask import Sentry

from config import ORG_ID, CHANNEL_MAP, SENTRY_DSN, BOTNAME, BOTPW, TRAVIS_MAP
from utils import parseException

app = Flask(__name__)

try:
    flow = Flow(BOTNAME)
except flow.FlowError:
    flow = Flow()
    flow.create_device(BOTNAME, BOTPW)
    app.logger.info('Device for bot {} created'.format(BOTNAME))

if SENTRY_DSN:
    sentry = Sentry(app, dsn=SENTRY_DSN)


@app.route('/')
def index():
    channel_id = CHANNEL_MAP['semabot']
    flow.send_message(ORG_ID, channel_id, 'botbotbot')
    return 'foo'


@app.route('/error/')
def error():
Esempio n. 3
0
print("* Checking if account is already installed...")
try:
    flow.start_up(
        username=username,
    )
    print("* Account already installed.")
    sys.exit(0)
except Flow.FlowError as flow_err:
    pass


print("* Account not installed, trying local device creation...")
try:
    flow.create_device(
        username=username,
        password=password,
        device_name="test-device",
    )
    time.sleep(2)
    print("* Account has been installed locally.")
except Flow.FlowError as flow_err:
    pass


print("* Account does not exist, creating account...")
try:
    flow.create_account(
        username=username,
        password=password,
        device_name="test_device",
        phone_number="".join(random.choice(string.digits) for _ in range(10)),