Example #1
0
def update():
    if 'secret' not in request.json or request.json['secret'] != SECRET:
        return abort(403)

    values = []
    client = None
    for rasp in Client.items:
        for sensor in rasp.sensors:
            name = sensor.name
            if name not in request.json: break

            if not validator.is_sane(sensor, request.json[name]):
                print('Got weird value for sensor %s: %s' % \
                    (name, request.json[name]))
                break

            values.append(request.json[name])
        else:
            if len(values) == len(rasp.sensors):
                client = rasp

    if not client:
        return abort(400)

    storage.put(LOCAL_ENV, client, values)
    return 'success', 202
Example #2
0
 def test_elasticache(self):
     storage.init(
         "ELASTICACHE",
         "redis://test2.0vgvbw.ng.0001.usw1.cache.amazonaws.com:6379")
     self.assertEqual(storage.elasticache_client.ping(), True)
     msg = b"test msg"
     storage.put("elasticache-test-key", msg)
     self.assertEqual(storage.get("elasticache-test-key"), msg)
Example #3
0
 def test_query_get_all(self):
     uuids = []
     uuids.append(storage.put(Person("mouse1", "minnie1", 23, 22.2)).uuid)
     uuids.append(storage.put(Person("mouse2", "minnie2", 23, 22.2)).uuid)
     uuids.append(storage.put(Person("mouse3", "minnie3", 23, 22.2)).uuid)
     uuids.append(storage.put(Person("mouse4", "minnie4", 23, 22.2)).uuid)
     persons = storage.get_all(Person, uuids)
     self.assertEquals(len(persons), 4)
Example #4
0
    def test_put(self):
        p = Person("philip", "folk", 20)
        self.assertIsNone(p.uuid)
        p = storage.put(p)
        self.assertIsNotNone(p.uuid)

        p.name = "petter"
        new_p = storage.put(p)
        self.assertEqual(new_p.uuid, p.uuid)
Example #5
0
    def test_delete(self):
        storage.insert(Age("mouse", 20))
        storage.delete(Age)

        saved_objects = storage.find(Age)
        self.assertEqual(len(saved_objects), 0)

        model = storage.put(Person(name="alabama"))
        storage.put(Person(name="orm"))
        storage.delete(Person, uuid=model.uuid)

        saved_objects = storage.find(Person)
        self.assertEqual(len(saved_objects), 1)
Example #6
0
 def p_put(self):
     self.response.headers["Content-Type"] = "text/plain"
     user = users.get_current_user()
     if user:
         if users.is_current_user_admin():
             storage.put(self.request.get('title'),
                         self.request.get('content'),
                         self.request.get('format'),
                         self.request.get('key'))
             self.redirect("/")
         else:
             self.error(403)
     else:
         self.response.headers["Content-Type"] = "text/plain"
         self.response.out.write("You don't have permission to post here")
Example #7
0
 def p_put(self):
     self.response.headers["Content-Type"] = "text/plain"
     user = users.get_current_user()
     if user:
         if users.is_current_user_admin():
             storage.put(self.request.get('title'),
                        self.request.get('content'),
                        self.request.get('format'),
                        self.request.get('key'))
             self.redirect("/")
         else:
             self.error(403)
     else:
         self.response.headers["Content-Type"] = "text/plain"
         self.response.out.write("You don't have permission to post here")
Example #8
0
def main():
    # Load configuration
    cfg = load_config()
    # Configure logger
    log_formatter = LogFormatter()
    log_handler = logging.StreamHandler()
    log_handler.setFormatter(log_formatter)
    root_logger = logging.getLogger()
    root_logger.addHandler(log_handler)
    for name, level in cfg["logging"].items():
        logging.getLogger(name).setLevel(level.upper())
    # Initialize RPC
    logger.info("Initializing RPC channel to %s", cfg["fetcher"]["remote"])
    rpc_options = []
    for key, value in cfg["fetcher"]["options"].items():
        rpc_options.append((key, value))
    rpc_channel = grpc.insecure_channel(cfg["fetcher"]["remote"],
                                        options=tuple(rpc_options))
    rpc_stub = proto.WxFetcherStub(rpc_channel)
    # Initialize Telegram Bot
    logger.info("Initializing Telegram bot...")
    tg_updater = TelegramUpdater(token=cfg["telegram"]["token"],
                                 use_context=True)
    tg_updater.dispatcher.add_handler(wxmpbotStartCommandHandler)
    tg_updater.dispatcher.add_handler(wxmpbotTextMessageHandler)
    tg_updater.dispatcher.add_handler(wxmpbotInlineQueryHandler)
    tg_updater.dispatcher.add_handler(wxmpbotCallbackQueryHandler)
    tg_updater.start_polling()
    # Get bot info
    bot_me = tg_updater.bot.get_me()
    logger.info("Serving as @%s (ID: %d)", bot_me.username, bot_me.id)
    # Set global storage
    put("rpc", "channel", rpc_channel)
    put("rpc", "stub", rpc_stub)
    put("tg", "updater", tg_updater)
    put("tg", "admin", cfg["telegram"]["admin"])
    put(
        "prefix",
        "{}{}".format("https://" if cfg["web"].get("https") else "http://",
                      cfg["web"]["host"]))
    # Set signal handling
    signal.signal(signal.SIGINT, signal_handler)
    signal.signal(signal.SIGTERM, signal_handler)
    logger.info("Initialized.")
Example #9
0
    def test_join(self):
        storage.put(Age(name="alabama"))
        storage.put(Person(name="alabama", lastname="felipe"))
        storage.put(Person(name="alabama", lastname="alabama"))

        query = (
            Query(Person, alias="p")
            .select(["p.*"])
            .join(Age, alias="a", on="p.name = a.name")
            .where({"p.name": "alabama"})
            .order("p.lastname DESC")
        )

        results = storage.query(query)
        self.assertEqual(1, len(results))
        self.assertEqual("felipe", results["Person"][0].lastname)
        self.assertTrue("Person" in results)
        self.assertIsNotNone(results["Person"])
Example #10
0
    def test_get(self):
        person = storage.put(Person(name="alabama"))

        person_from_db = storage.get(Person, uuid=person.uuid)
        self.assertEqual(person.name, person_from_db.name)
        self.assertEqual(person.uuid, person_from_db.uuid)
Example #11
0
 def test_s3(self):
     storage.init("S3", "storage-module-test")
     msg = bytes(random.randint(1, 10000))
     storage.put("aws-test-key", msg)
     self.assertEqual(storage.get("aws-test-key"), msg)
Example #12
0
 def __save(instance):
     """save an instance"""
     put(instance)
Example #13
0
	def datagramReceived(self, datagram, address):
 		data = datagram.strip().decode('cp1251')
		storage.put(data)