예제 #1
0
    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"])
예제 #3
0
 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"]
예제 #4
0
    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})
예제 #6
0
 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)
예제 #7
0
 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)
예제 #10
0
 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()])