def on_post(self, req, resp): """Create a group.""" self._logger.info("Sending notifications") data = decode_json_request(req, ["groupIds", "title", "body"]) users = Set() errors = [] for group_id in data["groupIds"]: try: for user_to_add in self._storage.get_group(group_id): users.append(user_to_add) except GroupNotFoundException: self._logger.info("Group Not Found %s" % group_id) errors.append("%s: Group Not Found" % group_id) for user in users: success, error = send_notification_to_user(self._pushbullet_api, self._storage, user, data["title"], data["body"]) resp.body = json_dump(self._storage.get_group(data["groupId"])) resp.status = falcon.HTTP_201 resp.location = "/v1/groups/%s" % data["groupId"]
def on_post(self, req, resp): """Register a new user.""" self._logger.info("New registration request") data = decode_json_request(req, ["username", "accessToken"]) self._logger.info("Registration request for %s" % data["username"]) try: user = self._storage.register_user(data["username"], data["accessToken"]) except DuplicateUserException: self._logger.info("Refused duplicate registration for %s" % data["username"]) raise falcon.HTTPBadRequest() resp.body = json_dump(user) resp.status = falcon.HTTP_201 resp.location = "/v1/users/%s" % user["username"] self._logger.info("Registration completed for %s" % data["username"])
def on_post(self, req, resp): """Create a group.""" self._logger.info("Registering group") data = decode_json_request(req, ["groupId", "users"]) try: self._storage.register_group(data["groupId"], data["users"]) except DuplicateGroupException: self._logger.info("Refused duplicate registration for %s" % data["groupId"]) raise falcon.HTTPBadRequest() except UserNotFoundException as e: self._logger.info("User not found %s" % e) raise falcon.HTTPBadRequest() resp.body = json_dump(self._storage.get_group(data["groupId"])) resp.status = falcon.HTTP_201 resp.location = "/v1/groups/%s" % data["groupId"]
def on_post(self, req, resp, group_id): """Create a notification for this group.""" self._logger.info("Posting new notification to %s" % group_id) data = decode_json_request(req, ["title", "body"]) user_ids = get_group(self._storage, group_id, self._logger) errors = [] for user in user_ids: success, error = send_notification_to_user(self._pushbullet_api, self._storage, self._logger, user, data["title"], data["body"]) if not success: errors.append(error) resp.status = falcon.HTTP_201 resp.body = json_dump({"errors": errors})
def on_post(self, req, resp, username): """Post a new notification.""" self._logger.info("Posting new notification to %s" % username) user = get_user(self._storage, username, self._logger) access_token = user["accessToken"] data = decode_json_request(req, ["title", "body"]) try: self._pushbullet_api.create_push(access_token, data["title"], data["body"]) except InvalidAccessTokenException: self._logger.error("Invalid pushbullet access token %s" % access_token) raise falcon.HTTPForbidden("Incorrect access token") except PushbulletException as e: self._logger.error("Pushbullet error %s" % str(e)) raise falcon.HTTPInternalServerError num_notifications = self._storage.increment_notifications_pushed( username) self._logger.info("Notification pushed to %s" % username) resp.status = falcon.HTTP_201 resp.body = json_dump({"numOfNotificationsPushed": num_notifications})
def on_get(self, req, resp, group_id): """Handles GET requests""" self._logger.info("Getting group info about %s" % group_id) group = get_group(self._storage, group_id, self._logger) resp.body = json_dump(group)
def on_get(self, req, resp): """List groups.""" self._logger.info("Listing groups") resp.body = json_dump(self._storage.get_groups())
def on_get(self, req, resp, username): """Return the number of notifications sent.""" self._logger.info("Listing notification count for %s" % username) user = get_user(self._storage, username, self._logger) resp.body = json_dump( {"numOfNotificationsPushed": user["numOfNotificationsPushed"]})
def on_get(self, req, resp, username): """Handles GET requests""" self._logger.info("Getting user info about %s" % username) user = get_user(self._storage, username, self._logger) resp.body = json_dump(user)
def on_get(self, req, resp): """List users.""" self._logger.info("Listing users") resp.body = json_dump([u for u in self._storage.get_users()])