Example #1
0
def start_service():
    dispatcher = cherrypy.dispatch.RoutesDispatcher()

    #instantiate mdb
    mdb_o = _movie_database()

    #instantiate controllers
    movieController = MovieController(mdb=mdb_o)
    userController = UserController(mdb=mdb_o)
    voteController = VoteController(mdb=mdb_o)
    ratingController = RatingController(mdb=mdb_o)
    resetController = ResetController(mdb=mdb_o)
    #TODO
    dispatcher.connect('movie_get_mid',
                       controller=movieController,
                       action='GET_MID',
                       conditions=dict(method=['GET']))

    #configuration
    conf = {
        'global': {
            'server.socket_host': 'student04.cse.nd.edu',
            'server.socket_port': '52052',  #change this
        },
        '/': {
            'request.dispatch': dispatcher,
        }
    }
    cherrypy.config.update(conf)
    app = cherrypy.tree.mount(None, config=conf)
    cherrypy.quickstart(app)

    if __name__ == '__main__':
        start_service()
Example #2
0
	def __init__(self, mdb=None):
		if mdb is None:
			self.mdb = _movie_database()
		else:
			self.mdb = mdb
		self.mdb.load_movies('ml-1m/movies.dat')
		self.mdb.load_posters('/afs/nd.edu/user37/cmc/Public/cse332_sp14/cherrypy/data/images.dat')
Example #3
0
 def __init__(self, mdb=None):
     if mdb is None:
         self.mdb = _movie_database()
     else:
         self.mdb = mdb
     self.mdb.load_ratings('ml-1m/ratings.dat')
     self.mdb.load_votes('ml-1m/ratings.dat')
Example #4
0
 def __init__(self, mdb=None):
         if mdb is None:
                 self.mdb = _movie_database()
         else:
                 self.mdb = mdb
         self.load_posters('images.dat')
         self.mdb.load_movies('ml-1m/movies.dat')
Example #5
0
 def __init__(self, mdb=None):
     if mdb is None:
         self.mdb = _movie_database()
     else:
         self.mdb = mdb
     self.mdb.load_movies('ml-1m/movies.dat')
     self.mdb.load_posters(
         '/afs/nd.edu/user37/cmc/Public/cse332_sp14/cherrypy/data/images.dat'
     )
	def PUT_MID(self, movie_id):
		#TODO
		output = {'result': 'success'}
		mid = int(movie_id)

		try:
			data = json.loads(cherrypy.request.body.read())
			mdb_tmp = _movie_database()
			mdb_tmp.load_movies('ml-1m/movies.dat')
			mdb = mdb_tmp.get_movie(mid)
			self.mdb.set_movie(mid, movie) #also set genre 
Example #7
0
    def PUT_RESET_MOVIE(self, movie_id):
        output = {'result' : 'success'}
        mid = int(movie_id)
        try:
            mdb_tmp = _movie_database()
            mdb_tmp.load_movies('ml-1m/movies.dat')
            movie = mdb_tmp.get_movie(mid)
            self.mdb.set_movie(mid, movie) # also get genre
        except Exception as ex:
            output['result'] = 'error'
            output['message'] = str(ex)

        return json.dumps(output)
Example #8
0
def start_service():
	# Initialize and load the _movie_database
	mdb = _movie_database()
	mdb.load_movies("ml-1m/movies.dat", "ml-1m/images.dat")
	mdb.load_users("ml-1m/users.dat")
	mdb.load_ratings("ml-1m/ratings.dat")
	# Init the authenticator
	auth = AuthenticateKey("BEARbird")
	
	# Dispatcher is created, not yet connected to anything
	dispatcher = cherrypy.dispatch.RoutesDispatcher()

	# /movies/ controller
	moviesController = MoviesController(mdb, auth)
	dispatcher.connect('movies_get', '/movies/:movie_id', controller=moviesController, action = 'GET', conditions=dict(method=['GET']))
	dispatcher.connect('movies_get_all', '/movies/', controller=moviesController, action = 'GET_ALL', conditions=dict(method=['GET']))
	dispatcher.connect('movies_delete_all', '/movies/', controller=moviesController, action = 'DELETE_ALL', conditions=dict(method=['DELETE']))
	dispatcher.connect('movies_delete', '/movies/:movie_id', controller=moviesController, action = 'DELETE', conditions=dict(method=['DELETE']))
	dispatcher.connect('movies_put', '/movies/:movie_id', controller=moviesController, action = 'PUT', conditions=dict(method=['PUT']))
	dispatcher.connect('movies_post', '/movies/', controller=moviesController, action = 'POST', conditions=dict(method=['POST']))
	# /reset/ controller
	resetController = ResetController(mdb, auth)
	dispatcher.connect('reset_all', '/reset/', controller=resetController, action = 'RESET_ALL', conditions=dict(method=['PUT']))
	dispatcher.connect('reset', '/reset/:movie_id', controller=resetController, action = 'RESET', conditions=dict(method=['PUT']))
	# /ratings/ controller
	usersController = UsersController(mdb, auth)
	dispatcher.connect('users_get', '/users/:user_id', controller=usersController, action = 'GET', conditions=dict(method=['GET']))
	dispatcher.connect('users_get_all', '/users/', controller=usersController, action = 'GET_ALL', conditions=dict(method=['GET']))
	dispatcher.connect('users_delete_all', '/users/', controller=usersController, action = 'DELETE_ALL', conditions=dict(method=['DELETE']))
	dispatcher.connect('users_delete', '/users/:user_id', controller=usersController, action = 'DELETE', conditions=dict(method=['DELETE']))
	dispatcher.connect('users_put', '/users/:user_id', controller=usersController, action = 'PUT', conditions=dict(method=['PUT']))
	dispatcher.connect('users_post', '/users/', controller=usersController, action = 'POST', conditions=dict(method=['POST']))
	# /recommendations/ controller
	recommendationsController = RecommendationsController(mdb, auth)
	dispatcher.connect('recommendations_get', '/recommendations/:user_id', controller=recommendationsController, action = 'GET', conditions=dict(method=['GET']))
	dispatcher.connect('recommendations_put', '/recommendations/:user_id', controller=recommendationsController, action = 'PUT', conditions=dict(method=['PUT']))
	dispatcher.connect('recommendations_delete', '/recommendations/', controller=recommendationsController, action = 'DELETE', conditions=dict(method=['DELETE']))
	# /ratings/ controller
	ratingsController = RatingsController(mdb)
	dispatcher.connect('ratings_get', '/ratings/:movie_id', controller=ratingsController, action = 'GET', conditions=dict(method=['GET']))
	
	
	# conf is a dictionary wit the settings for cherrypy. 
	# This is how to change the bind port and the dispathcer object
	conf = { 'global' : {'server.socket_host': 'student03.cse.nd.edu', 'server.socket_port': 40019},
				'/'		: {'request.dispatch': dispatcher,} }
	
	# These three lines tell cherrypy the settings and start the event loop
	cherrypy.config.update(conf)
	app = cherrypy.tree.mount(None, config=conf)
	cherrypy.quickstart(app)
	def RESET(self, movie_id):
		try:
			# Create a new temporary movies database and draw the data from there
			tempdb = _movie_database()
			tempdb.load_movies('ml-1m/movies.dat', 'ml-1m/images.dat')
			movie = tempdb.get_movie(int(movie_id))
			# Write the data to the actual database
			self.moviesdb.set_movie(int(movie_id), movie)
			# Return success
			output = {'result':'success'}
			return json.dumps(output, encoding='latin-1')
		except KeyError as ex:
			output = {'result':'error'}
			output['message'] = 'RESET failed'
			return json.dumps(output, encoding='latin-1')
Example #10
0
def start_service():
	dispatcher = cherrypy.dispatch.RoutesDispatcher()
	mdb = _movie_database()
	movieController = MovieController(mdb)
	userController = UserController(mdb)
	recommendationController = RecommendationController(mdb)
	ratingController = RatingController(mdb)
	resetController = ResetController(mdb)
	optionsController = OptionsController()
# connect MovieController handlers
	dispatcher.connect('movie_get', '/movies/:movie_id', controller=movieController, action = 'GET', conditions=dict(method=['GET']))
	dispatcher.connect('movie_put', '/movies/:movie_id', controller=movieController, action = 'PUT', conditions=dict(method=['PUT']))
	dispatcher.connect('movie_delete', '/movies/:movie_id', controller=movieController, action = 'DELETE', conditions=dict(method=['DELETE']))
	dispatcher.connect('movie_get_index', '/movies/', controller=movieController, action = 'GET_INDEX', conditions=dict(method=['GET']))
	dispatcher.connect('movie_post', '/movies/', controller=movieController, action = 'POST', conditions=dict(method=['POST']))
	dispatcher.connect('movie_delete_index', '/movies/', controller=movieController, action = 'DELETE_INDEX', conditions=dict(method=['DELETE']))
# connect UserController handlers
	dispatcher.connect('user_get', '/users/:user_id', controller=userController, action = 'GET', conditions=dict(method=['GET']))
	dispatcher.connect('user_put', '/users/:user_id', controller=userController, action = 'PUT', conditions=dict(method=['PUT']))
	dispatcher.connect('user_delete', '/users/:user_id', controller=userController, action = 'DELETE', conditions=dict(method=['DELETE']))
	dispatcher.connect('user_get_index', '/users/', controller=userController, action = 'GET_INDEX', conditions=dict(method=['GET']))
	dispatcher.connect('user_post', '/users/', controller=userController, action = 'POST', conditions=dict(method=['POST']))
	dispatcher.connect('user_delete_index', '/users/', controller=userController, action = 'DELETE_INDEX', conditions=dict(method=['DELETE']))
# connect RecommendationController handlers
	dispatcher.connect('recommendation_get', '/recommendations/:user_id', controller=recommendationController, action = 'GET', conditions=dict(method=['GET']))
	dispatcher.connect('recommendation_put', '/recommendations/:user_id', controller=recommendationController, action = 'PUT', conditions=dict(method=['PUT']))
	dispatcher.connect('recommendation_delete', '/recommendations/', controller=recommendationController, action = 'DELETE', conditions=dict(method=['DELETE']))
# connect RatingController handler
	dispatcher.connect('rating_get', '/ratings/:movie_id', controller=ratingController, action = 'GET', conditions=dict(method=['GET']))
# connect ResetController handlers
	dispatcher.connect('reset_put', '/reset/:movie_id', controller=resetController, action = 'PUT', conditions=dict(method=['PUT']))
	dispatcher.connect('reset_put_index', '/reset/', controller=resetController, action = 'PUT_INDEX', conditions=dict(method=['PUT']))
# connect OptionsController handler
	dispatcher.connect('options_movie_id', '/movies/:movie_id', controller=optionsController, action = 'OPTIONS', conditions=dict(method=['OPTIONS']))
	dispatcher.connect('options_movies', '/movies/', controller=optionsController, action = 'OPTIONS', conditions=dict(method=['OPTIONS']))
	dispatcher.connect('options_user_id', '/users/:user_id', controller=optionsController, action = 'OPTIONS', conditions=dict(method=['OPTIONS']))
	dispatcher.connect('options_users', '/users/', controller=optionsController, action = 'OPTIONS', conditions=dict(method=['OPTIONS']))
	dispatcher.connect('options_recommendation_id', '/recommendations/:user_id', controller=optionsController, action = 'OPTIONS', conditions=dict(method=['OPTIONS']))
	dispatcher.connect('options_recommendation', '/recommendations/', controller=optionsController, action = 'OPTIONS', conditions=dict(method=['OPTIONS']))
	dispatcher.connect('options_rating_id', '/ratings/:movie_id', controller=optionsController, action = 'OPTIONS', conditions=dict(method=['OPTIONS']))
	dispatcher.connect('options_reset_id', '/reset/:movie_id', controller=optionsController, action = 'OPTIONS', conditions=dict(method=['OPTIONS']))
	dispatcher.connect('options_reset', '/reset/', controller=optionsController, action = 'OPTIONS', conditions=dict(method=['OPTIONS']))

	conf = {'global':{'server.socket_host':'student01.cse.nd.edu','server.socket_port': 40041,},'/':{'request.dispatch':dispatcher,'tools.CORS.on':True,}}
	cherrypy.config.update(conf)
	app = cherrypy.tree.mount(None, config=conf)
	cherrypy.quickstart(app)
    def PUT(self, key=None):
        output = {}

        if key is None:
            self.myd.load_users('ml-1m/users.dat')
            self.myd.load_movies('ml-1m/movies.dat')
            self.myd.load_ratings('ml-1m/ratings.dat')
            self.myd.load_images('ml-1m/images.dat')
            output['result'] = 'success'
        else:
            key = str(key)
            new_myd = _movie_database()
            new_myd.load_movies('ml-1m/movies.dat')
            try:
                self.myd.movies[key] = new_myd.get_movie(key)
                output['result'] = 'success'
            except KeyError:
                output['result'] = 'error'
                output['message'] = 'invalid request'

        return json.dumps(output)
	def RESET(self, movie_id):
		try:
			# Grab apikey and check against authenticator
			data = cherrypy.request.body.read()
			processed_data = json.loads(data)
			apikey = processed_data["apikey"]
			if not self.auth.check_apikey(apikey):
				output = {}
				output['result'] = 'error'
				output['message'] = 'Authentication Failure'
				return json.dumps(output, encoding='latin-1')
			# Create a new temporary movies database and draw the data from there
			tempdb = _movie_database()
			tempdb.load_movies('ml-1m/movies.dat', 'ml-1m/images.dat')
			movie = tempdb.get_movie(int(movie_id))
			# Write the data to the actual database
			self.moviesdb.set_movie(int(movie_id), movie)
			# Return success
			output = {'result':'success'}
			return json.dumps(output, encoding='latin-1')
		except KeyError as ex:
			output = {'result':'error'}
			output['message'] = 'RESET failed'
			return json.dumps(output, encoding='latin-1')
def start_service():
    # initialize mdb class
    mdb = _movie_database()
    mdb.load_movies('ml-1m/movies.dat')
    mdb.load_users('ml-1m/users.dat')
    mdb.load_ratings('ml-1m/ratings.dat')
    mdb.load_images('ml-1m/images.dat')

    # dispatcher
    dispatcher = cherrypy.dispatch.RoutesDispatcher()

    # controllers
    resetController = ResetController(mdb=mdb)
    movieController = MovieController(mdb=mdb)
    userController = UserController(mdb=mdb)
    ratingController = RatingController(mdb=mdb)
    recommendationController = RecommendationController(mdb=mdb)

    # for /ratings/:movie_id
    dispatcher.connect('ratings_get',
                       '/ratings/:movie_id',
                       controller=ratingController,
                       action='GET',
                       conditions=dict(method=['GET']))

    # for /recommendations/
    dispatcher.connect('full_recommendations_delete',
                       '/recommendations/',
                       controller=recommendationController,
                       action='FULL_DELETE',
                       conditions=dict(method=['DELETE']))

    # for /recommendations/:user_id
    dispatcher.connect('recommendations_get',
                       '/recommendations/:user_id',
                       controller=recommendationController,
                       action='GET',
                       conditions=dict(method=['GET']))

    dispatcher.connect('recommendations_put',
                       '/recommendations/:user_id',
                       controller=recommendationController,
                       action='PUT',
                       conditions=dict(method=['PUT']))

    # for /users/
    dispatcher.connect('full_users_get',
                       '/users/',
                       controller=userController,
                       action='FULL_GET',
                       conditions=dict(method=['GET']))

    dispatcher.connect('full_users_post',
                       '/users/',
                       controller=userController,
                       action='FULL_POST',
                       conditions=dict(method=['POST']))

    dispatcher.connect('full_users_delete',
                       '/users/',
                       controller=userController,
                       action='FULL_DELETE',
                       conditions=dict(method=['DELETE']))

    # for /users/:user_id
    dispatcher.connect('users_get',
                       '/users/:user_id',
                       controller=userController,
                       action='GET',
                       conditions=dict(method=['GET']))

    dispatcher.connect('users_put',
                       '/users/:user_id',
                       controller=userController,
                       action='PUT',
                       conditions=dict(method=['PUT']))

    dispatcher.connect('users_delete',
                       '/users/:user_id',
                       controller=userController,
                       action='DELETE',
                       conditions=dict(method=['DELETE']))

    # for /movies/
    dispatcher.connect('full_movies_get',
                       '/movies/',
                       controller=movieController,
                       action='FULL_GET',
                       conditions=dict(method=['GET']))

    dispatcher.connect('full_movies_post',
                       '/movies/',
                       controller=movieController,
                       action='FULL_POST',
                       conditions=dict(method=['POST']))

    dispatcher.connect('full_movies_delete',
                       '/movies/',
                       controller=movieController,
                       action='FULL_DELETE',
                       conditions=dict(method=['DELETE']))

    # for /movies/:movie_id
    dispatcher.connect('movies_get',
                       '/movies/:movie_id',
                       controller=movieController,
                       action='GET',
                       conditions=dict(method=['GET']))

    dispatcher.connect('movies_put',
                       '/movies/:movie_id',
                       controller=movieController,
                       action='PUT',
                       conditions=dict(method=['PUT']))

    dispatcher.connect('movies_delete',
                       '/movies/:movie_id',
                       controller=movieController,
                       action='DELETE',
                       conditions=dict(method=['DELETE']))

    # for /reset/
    dispatcher.connect('full_reset',
                       '/reset/',
                       controller=resetController,
                       action='FULL_RESET',
                       conditions=dict(method=['PUT']))

    # for /reset/:movie_id
    dispatcher.connect('reset',
                       '/reset/:movie_id',
                       controller=resetController,
                       action='RESET',
                       conditions=dict(method=['PUT']))

    # configuration for server
    conf = {
        'global': {
            'server.socket_host': 'student04.cse.nd.edu',
            'server.socket_port': 51019
        },
        '/': {
            'request.dispatch': dispatcher
        }
    }

    # start server
    cherrypy.config.update(conf)
    app = cherrypy.tree.mount(None, config=conf)
    cherrypy.quickstart(app)
def start_service():
    dispatcher = cherrypy.dispatch.RoutesDispatcher()
    mdb = _movie_database()

    movieController = MovieController(mdb)
    userController = UserController(mdb)
    voteController = VoteController(mdb)
    ratingController = RatingController(mdb)
    resetController = ResetController(mdb)
    favoriteController = FavoriteController(mdb)
    optionsController = OptionsController()

    #MOVIES
    dispatcher.connect('movie_get',
                       '/movies/:movie_id',
                       controller=movieController,
                       action='GET',
                       conditions=dict(method=['GET']))
    dispatcher.connect('movie_put',
                       '/movies/:movie_id',
                       controller=movieController,
                       action='PUT',
                       conditions=dict(method=['PUT']))
    dispatcher.connect('movie_delete',
                       '/movies/:movie_id',
                       controller=movieController,
                       action='DELETE',
                       conditions=dict(method=['DELETE']))

    dispatcher.connect('movie_get_idx',
                       '/movies/',
                       controller=movieController,
                       action='GET_INDEX',
                       conditions=dict(method=['GET']))
    dispatcher.connect('movie_post_idx',
                       '/movies/',
                       controller=movieController,
                       action='POST_INDEX',
                       conditions=dict(method=['POST']))
    dispatcher.connect('movie_delete_idx',
                       '/movies/',
                       controller=movieController,
                       action='DELETE_INDEX',
                       conditions=dict(method=['DELETE']))

    #USERS
    dispatcher.connect('user_get',
                       '/users/:user_id',
                       controller=userController,
                       action='GET',
                       conditions=dict(method=['GET']))
    dispatcher.connect('user_put',
                       '/users/:user_id',
                       controller=userController,
                       action='PUT',
                       conditions=dict(method=['PUT']))
    dispatcher.connect('user_delete',
                       '/users/:user_id',
                       controller=userController,
                       action='DELETE',
                       conditions=dict(method=['DELETE']))

    dispatcher.connect('user_get_idx',
                       '/users/',
                       controller=userController,
                       action='GET_INDEX',
                       conditions=dict(method=['GET']))
    dispatcher.connect('user_post_idx',
                       '/users/',
                       controller=userController,
                       action='POST_INDEX',
                       conditions=dict(method=['POST']))
    dispatcher.connect('user_delete_idx',
                       '/users/',
                       controller=userController,
                       action='DELETE_INDEX',
                       conditions=dict(method=['DELETE']))

    #VOTING/RECOMMENDATIONS
    dispatcher.connect('votes_get',
                       '/recommendations/:user_id',
                       controller=voteController,
                       action='GET',
                       conditions=dict(method=['GET']))
    dispatcher.connect('votes_put',
                       '/recommendations/:user_id',
                       controller=voteController,
                       action='PUT',
                       conditions=dict(method=['PUT']))
    dispatcher.connect('votes_delete_idx',
                       '/recommendations/',
                       controller=voteController,
                       action='DELETE_INDEX',
                       conditions=dict(method=['DELETE']))

    #FAVORITES
    dispatcher.connect('favs_get',
                       '/favorites/:user_id',
                       controller=favoriteController,
                       action='GET',
                       conditions=dict(method=['GET']))
    dispatcher.connect('favs_put',
                       '/favorites/:user_id',
                       controller=favoriteController,
                       action='PUT',
                       conditions=dict(method=['PUT']))
    dispatcher.connect('favs_put_idx',
                       '/favorites/',
                       controller=favoriteController,
                       action='GET_INDEX',
                       conditions=dict(method=['GET']))
    dispatcher.connect('favs_post_idx',
                       '/favorites/',
                       controller=favoriteController,
                       action='POST_INDEX',
                       conditions=dict(method=['POST']))
    dispatcher.connect('favs_delete',
                       '/favorites/:user_id',
                       controller=favoriteController,
                       action='DELETE',
                       conditions=dict(method=['DELETE']))
    dispatcher.connect('favs_delete_idx',
                       '/favorites/',
                       controller=favoriteController,
                       action='DELETE_INDEX',
                       conditions=dict(method=['DELETE']))

    #RATINGS
    dispatcher.connect('ratings_get',
                       '/ratings/:movie_id',
                       controller=ratingController,
                       action='GET',
                       conditions=dict(method=['GET']))

    #RESET
    dispatcher.connect('reset_all',
                       '/reset/',
                       controller=resetController,
                       action='PUT',
                       conditions=dict(method=['PUT']))

    #OPTIONS
    dispatcher.connect('movie_options',
                       '/movies/:movie_id',
                       controller=optionsController,
                       action='OPTIONS',
                       conditions=dict(method=['OPTIONS']))
    dispatcher.connect('movie_index_options',
                       '/movies/',
                       controller=optionsController,
                       action='OPTIONS',
                       conditions=dict(method=['OPTIONS']))
    dispatcher.connect('user_options',
                       '/users/:user_id',
                       controller=optionsController,
                       action='OPTIONS',
                       conditions=dict(mehtod=['OPTIONS']))
    dispatcher.connect('user_index_options',
                       '/users/',
                       controller=optionsController,
                       action='OPTIONS',
                       conditions=dict(method=['OPTIONS']))
    dispatcher.connect('votes_options',
                       '/recommendations/:user_id',
                       controller=optionsController,
                       action='OPTIONS',
                       conditions=dict(method=['OPTIONS']))
    dispatcher.connect('votes_index_options',
                       '/recommendations/',
                       controller=optionsController,
                       action='OPTIONS',
                       conditions=dict(method=['OPTIONS']))
    dispatcher.connect('ratings_options',
                       '/ratings/:movie_id',
                       controller=optionsController,
                       action='OPTIONS',
                       conditions=dict(method=['OPTIONS']))
    dispatcher.connect('favorites_options',
                       '/favorites/:user_id',
                       controller=optionsController,
                       action='OPTIONS',
                       conditions=dict(method=['OPTIONS']))
    dispatcher.connect('favorites_index_options',
                       '/favorites/',
                       controller=optionsController,
                       action='OPTIONS',
                       conditions=dict(method=['OPTIONS']))

    conf = {
        'global': {
            'server.socket_host': 'student00.cse.nd.edu',
            'server.socket_port': 40009,
        },
        '/': {
            'request.dispatch': dispatcher,
            'tools.CORS.on': True,
        }
    }

    cherrypy.config.update(conf)
    app = cherrypy.tree.mount(None, config=conf)
    cherrypy.quickstart(app)
Example #15
0
#Eugene Choi
import json
import cherrypy
from _movie_database import _movie_database

mdb = _movie_database()
mdb.load_movies('ml-1m/movies.dat')
mdb.load_users('ml-1m/users.dat')
mdb.load_ratings('ml-1m/ratings.dat')
mdb.load_images()


class MoviesController(object):
    def GET(self):
        output = {'result': 'success'}
        entries = []

        for key in mdb.movies:
            try:
                entries.append({
                    'id': key,
                    'title': mdb.movies[key][0],
                    'genres': mdb.movies[key][1],
                    'result': 'success',
                    'img': mdb.images[key]
                })
            except KeyError as ex:
                entries.append({
                    'id': key,
                    'title': mdb.movies[key][0],
                    'genres': mdb.movies[key][1],
Example #16
0
class TestMovieDatabase(unittest.TestCase):
    """unit tests for python primer homework"""

    #@classmethod
    #def setUpClass(self):
    mdb = _movie_database()

    def reset_data(self):
        "reset data is required because we cannot promise an order of test case execution"
        self.mdb.delete_all_ratings()
        self.mdb.load_movies('ml-1m/movies.dat')
        self.mdb.load_users('ml-1m/users.dat')
        self.mdb.load_ratings('ml-1m/ratings.dat')

    def test_get_movie(self):
        self.reset_data()
        movie = self.mdb.get_movie(2)
        self.assertEquals(movie[0], 'Jumanji (1995)')
        self.assertEquals(movie[1], 'Adventure|Children\'s|Fantasy')

    def test_get_movie_null(self):
        self.reset_data()
        movie = self.mdb.get_movie(20000)
        self.assertEquals(movie, None)

    def test_set_movie(self):
        self.reset_data()
        movie = self.mdb.get_movie(2)
        movie[0] = 'ABC'
        self.mdb.set_movie(2, movie)
        movie = self.mdb.get_movie(2)
        self.assertEquals(movie[0], 'ABC')

    def test_delete_movie(self):
        self.reset_data()
        self.mdb.delete_movie(2)
        movie = self.mdb.get_movie(2)
        self.assertEquals(movie, None)

    def test_get_user(self):
        self.reset_data()
        user = self.mdb.get_user(3)
        self.assertEquals(user[1], 25)
        self.assertEquals(user[2], 15)
        self.assertEquals(user[3], '55117')

    def test_set_user(self):
        self.reset_data()
        user = self.mdb.get_user(3)
        user[2] = 6
        self.mdb.set_user(3, user)
        user = self.mdb.get_user(3)
        self.assertEquals(user[1], 25)
        self.assertEquals(user[2], 6)
        self.assertEquals(user[3], '55117')

    def test_delete_user(self):
        self.reset_data()
        self.mdb.delete_user(3)
        user = self.mdb.get_user(3)
        self.assertEquals(user, None)

    def test_get_rating(self):
        self.reset_data()
        rating = self.mdb.get_rating(32)
        self.assertEquals(rating, 3.945731303772336)
        rating = self.mdb.get_rating(110)
        self.assertEquals(rating, 4.234957020057307)
        rating = self.mdb.get_rating(1)
        self.assertEquals(rating, 4.146846413095811)

    def test_get_highest_rated_movie_1(self):
        self.reset_data()
        hrm_mid = self.mdb.get_highest_rated_movie()
        hrm_rating = self.mdb.get_rating(hrm_mid)
        hrm = self.mdb.get_movie(hrm_mid)
        hrm_name = hrm[0]
        self.assertEquals(hrm_mid, 787)
        self.assertEquals(hrm_name, 'Gate of Heavenly Peace, The (1995)')
        self.assertEquals(hrm_rating, 5.0)

    def test_set_user_movie_rating_1(self):
        self.reset_data()
        self.mdb.set_user_movie_rating(41, 787, 2)
        rating = self.mdb.get_rating(787)
        self.assertEquals(rating, 4.25)

    def test_set_user_movie_rating_2(self):
        self.reset_data()
        self.mdb.set_user_movie_rating(41, 787, 2)
        self.mdb.set_user_movie_rating(101, 787, 4)
        rating = self.mdb.get_rating(787)
        self.assertEquals(rating, 4.2)

    def test_set_and_get_movie_ratings(self):
        self.reset_data()
        self.mdb.set_user_movie_rating(41, 787, 2)
        self.mdb.set_user_movie_rating(101, 787, 4)
        hrm_mid = self.mdb.get_highest_rated_movie()
        hrm_rating = self.mdb.get_rating(hrm_mid)
        hrm = self.mdb.get_movie(hrm_mid)
        hrm_name = hrm[0]
        self.assertEquals(hrm_mid, 989)
        self.assertEquals(hrm_name,
                          'Schlafes Bruder (Brother of Sleep) (1995)')
        self.assertEquals(hrm_rating, 5.0)

    def test_get_user_movie_rating(self):
        self.reset_data()
        rating = self.mdb.get_user_movie_rating(6030, 32)
        self.assertEquals(rating, 5)
Example #17
0
def start_service():


	#Make controller and dispatcher objects for all resources
	DB = _movie_database()
	mov = Movies.Movies(DB)
	usr = Users.Users(DB)
	rat = Ratings.Ratings(DB)
	rec = Recommendations.Recommendations(DB)
	dispatcher = cherrypy.dispatch.RoutesDispatcher()


	#MOVIES
	#GET:
	dispatcher.connect('mov_get', '/movies/:id',controller=mov,
				action = 'GET',conditions=dict(method=['GET']))
	dispatcher.connect('mov_get_all','/movies/',controller=mov, 
				action = 'GET_ALL',conditions=dict(method=['GET']))
	#PUT
	dispatcher.connect('mov_put','/movies/:id',controller=mov, 
				action = 'PUT',conditions=dict(method=['PUT']))
	#POST
	dispatcher.connect('mov_post','/movies/',controller=mov, 
				action = 'POST',conditions=dict(method=['POST']))
	#RESET
	dispatcher.connect('mov_res','/reset/:id',controller=mov, action = 'RESET',conditions=dict(method=['PUT']))
	dispatcher.connect('mov_res_all','/reset/',controller=mov,action = 'RESET_ALL',conditions=dict(method=['PUT']))

	#DELETE
	dispatcher.connect('mov_del','/movies/:id',controller=mov, 
				action = 'DELETE',conditions=dict(method=['DELETE']))
	dispatcher.connect('mov_del_all','/movies/',controller=mov, 
				action = 'DELETE_ALL',conditions=dict(method=['DELETE']))


	#USERS:
	
	#GET
	dispatcher.connect('usr_get', '/users/:id',controller=usr,
				action = 'GET',conditions=dict(method=['GET']))
	dispatcher.connect('usr_get_all','/users/',controller=usr, 
				action = 'GET_ALL',conditions=dict(method=['GET']))
	#PUT
	dispatcher.connect('usr_put','/users/:id',controller=usr, 
				action = 'PUT',conditions=dict(method=['PUT']))
	#POST
	dispatcher.connect('usr_post','/users/',controller=usr, 
				action = 'POST',conditions=dict(method=['POST']))

	#DELETE
	dispatcher.connect('usr_del','/users/:id',controller=usr, 
				action = 'DELETE',conditions=dict(method=['DELETE']))
	dispatcher.connect('usr_del_all','/users/',controller=usr, 
				action = 'DELETE_ALL',conditions=dict(method=['DELETE']))

	#RATINGS:

	dispatcher.connect('rat_get','/ratings/:id',controller=rat, 
				action = 'GET',conditions=dict(method=['GET']))
	#RECOMMENDATIONS:

	#DELETE
	dispatcher.connect('rec_del','/recommendations/',controller=rec, action = 'DELETE',conditions=dict(method=['DELETE']))

	#GET
	dispatcher.connect('rec_get', '/recommendations/:id',controller=rec,
				action = 'GET',conditions=dict(method=['GET']))
	#PUT
	dispatcher.connect('rec_put','/recommendations/:id',controller=rec, 
				action = 'PUT',conditions=dict(method=['PUT']))


	#Configuration
	conf = {'global': {'server.socket_host': 'student03.cse.nd.edu', 'server.socket_port':40041},
		'/'	: {'request.dispatch':dispatcher}}


	#Update the configuration and start the server
	cherrypy.config.update(conf)
	app = cherrypy.tree.mount(None,config=conf)
	cherrypy.quickstart(app)
Example #18
0
	def __init__(self, mdb=None):
		if mdb is None:
			self.mdb = _movie_database()
		else:
			self.mdb = mdb
		self.mdb.load_ratings('ml-1m/ratings.dat')		
Example #19
0
def start_service():
    dispatcher = cherrypy.dispatch.RoutesDispatcher()

    conf = {
        'global': {
            'server.socket_host': 'student04.cse.nd.edu',
            'server.socket_port': 52011
        },
        '/': {
            'request.dispatch': dispatcher
        }
    }

    mdb = _movie_database()
    mdb.load_all_preset()

    moviesCon = MoviesController(mdb)
    dispatcher.connect('movies_index_get',
                       '/movies/',
                       controller=moviesCon,
                       action='GET_INDEX',
                       conditions=dict(method=['GET']))
    dispatcher.connect('movies_mid_get',
                       '/movies/:mid',
                       controller=moviesCon,
                       action='GET_MID',
                       conditions=dict(method=['GET']))
    dispatcher.connect('movies_index_post',
                       '/movies/',
                       controller=moviesCon,
                       action='POST_INDEX',
                       conditions=dict(method=['POST']))
    dispatcher.connect('movies_mid_put',
                       '/movies/:mid',
                       controller=moviesCon,
                       action='PUT_MID',
                       conditions=dict(method=['PUT']))
    dispatcher.connect('movies_index_delete',
                       '/movies/',
                       controller=moviesCon,
                       action='DELETE_INDEX',
                       conditions=dict(method=['DELETE']))
    dispatcher.connect('movies_mid_delete',
                       '/movies/:mid',
                       controller=moviesCon,
                       action='DELETE_MID',
                       conditions=dict(method=['DELETE']))

    usersCon = UsersController(mdb)
    dispatcher.connect('users_index_get',
                       '/users/',
                       controller=usersCon,
                       action='GET_INDEX',
                       conditions=dict(method=['GET']))
    dispatcher.connect('users_uid_get',
                       '/users/:uid',
                       controller=usersCon,
                       action='GET_UID',
                       conditions=dict(method=['GET']))
    dispatcher.connect('users_index_post',
                       '/users/',
                       controller=usersCon,
                       action='POST_INDEX',
                       conditions=dict(method=['POST']))
    dispatcher.connect('users_uid_put',
                       '/users/:uid',
                       controller=usersCon,
                       action='PUT_UID',
                       conditions=dict(method=['PUT']))
    dispatcher.connect('users_index_delete',
                       '/users/',
                       controller=usersCon,
                       action='DELETE_INDEX',
                       conditions=dict(method=['DELETE']))
    dispatcher.connect('users_uid_delete',
                       '/users/:uid',
                       controller=usersCon,
                       action='DELETE_UID',
                       conditions=dict(method=['DELETE']))

    recCon = RecommendationsController(mdb)
    dispatcher.connect('recommendations_uid_get',
                       '/recommendations/:uid',
                       controller=recCon,
                       action='GET_UID',
                       conditions=dict(method=['GET']))
    dispatcher.connect('recommendations_uid_put',
                       '/recommendations/:uid',
                       controller=recCon,
                       action='PUT_UID',
                       conditions=dict(method=['PUT']))
    dispatcher.connect('recommendations_index_delete',
                       '/recommendations/',
                       controller=recCon,
                       action='DELETE_INDEX',
                       conditions=dict(method=['DELETE']))

    ratingsCon = RatingsController(mdb)
    dispatcher.connect('ratings_mid_get',
                       '/ratings/:mid',
                       controller=ratingsCon,
                       action='GET_MID',
                       conditions=dict(method=['GET']))

    resetCon = ResetController(mdb)
    dispatcher.connect('reset_index_put',
                       '/reset/',
                       controller=resetCon,
                       action='PUT_INDEX',
                       conditions=dict(method=['PUT']))
    dispatcher.connect('reset_mid_put',
                       '/reset/:mid',
                       controller=resetCon,
                       action='PUT_MID',
                       conditions=dict(method=['PUT']))

    cherrypy.config.update(conf)
    app = cherrypy.tree.mount(None, config=conf)
    cherrypy.quickstart(app)
Example #20
0
def start_service():
    dispatcher = cherrypy.dispatch.RoutesDispatcher()
    myd = _movie_database()
    myd.load_users('ml-1m/users.dat')
    myd.load_movies('ml-1m/movies.dat')
    myd.load_ratings('ml-1m/ratings.dat')
    myd.load_images('ml-1m/images.dat')

    movie_controller = MovieController(myd)
    user_controller = UserController(myd)
    recommendation_controller = RecommendationController(myd)
    rating_controller = RatingController(myd)
    reset_controller = ResetController(myd)
    option_controller = OptionController()

    #movies
    dispatcher.connect('movie_get',
                       '/movies/',
                       controller=movie_controller,
                       action='GET',
                       conditions=dict(method=['GET']))
    dispatcher.connect('movie_post',
                       '/movies/',
                       controller=movie_controller,
                       action='POST',
                       conditions=dict(method=['POST']))
    dispatcher.connect('movie_delete',
                       '/movies/',
                       controller=movie_controller,
                       action='DELETE',
                       conditions=dict(method=['DELETE']))

    #movies:key
    dispatcher.connect('movie_get_key',
                       '/movies/:key',
                       controller=movie_controller,
                       action='GET',
                       conditions=dict(method=['GET']))
    dispatcher.connect('movie_put_key',
                       '/movies/:key',
                       controller=movie_controller,
                       action='PUT',
                       conditions=dict(method=['PUT']))
    dispatcher.connect('movie_delete_key',
                       '/movies/:key',
                       controller=movie_controller,
                       action='DELETE',
                       conditions=dict(method=['DELETE']))

    #users
    dispatcher.connect('user_get',
                       '/users/',
                       controller=user_controller,
                       action='GET',
                       conditions=dict(method=['GET']))
    dispatcher.connect('user_post',
                       '/users/',
                       controller=user_controller,
                       action='POST',
                       conditions=dict(method=['POST']))
    dispatcher.connect('user_delete',
                       '/users/',
                       controller=user_controller,
                       action='DELETE',
                       conditions=dict(method=['DELETE']))

    #users:key
    dispatcher.connect('user_get_key',
                       '/users/:key',
                       controller=user_controller,
                       action='GET',
                       conditions=dict(method=['GET']))
    dispatcher.connect('user_put',
                       '/users/:key',
                       controller=user_controller,
                       action='PUT',
                       conditions=dict(method=['PUT']))
    dispatcher.connect('user_delete_key',
                       '/users/:key',
                       controller=user_controller,
                       action='DELETE',
                       conditions=dict(method=['DELETE']))

    #Recommendataions
    dispatcher.connect('recommendation_delete',
                       '/recommendations/',
                       controller=recommendation_controller,
                       action='DELETE',
                       conditions=dict(method=['DELETE']))
    dispatcher.connect('recommendation_get_key',
                       '/recommendations/:key',
                       controller=recommendation_controller,
                       action='GET',
                       conditions=dict(method=['GET']))
    dispatcher.connect('recommendation_put_key',
                       '/recommendations/:key',
                       controller=recommendation_controller,
                       action='PUT',
                       conditions=dict(method=['PUT']))

    #Ratings
    dispatcher.connect('rating_get_key',
                       '/ratings/:key',
                       controller=rating_controller,
                       action='GET',
                       conditions=dict(method=['GET']))

    #Reset
    dispatcher.connect('reset_put',
                       '/reset/',
                       controller=reset_controller,
                       action='PUT',
                       conditions=dict(method=['PUT']))
    dispatcher.connect('reset_put_key',
                       '/reset/:key',
                       controller=reset_controller,
                       action='PUT',
                       conditions=dict(method=['PUT']))

    #Connect
    dispatcher.connect('movie_option',
                       '/movies/',
                       controller=option_controller,
                       action='OPTIONS',
                       conditions=dict(method=['OPTIONS']))
    dispatcher.connect('movie_option_key',
                       '/movies/:key',
                       controller=option_controller,
                       action='OPTIONS',
                       conditions=dict(method=['OPTIONS']))
    dispatcher.connect('user_option',
                       '/users/',
                       controller=option_controller,
                       action='OPTIONS',
                       conditions=dict(method=['OPTIONS']))
    dispatcher.connect('user_option_key',
                       '/users/:key',
                       controller=option_controller,
                       action='OPTIONS',
                       conditions=dict(method=['OPTIONS']))
    dispatcher.connect('recommendations_option',
                       '/recommendations/',
                       controller=option_controller,
                       action='OPTIONS',
                       conditions=dict(method=['OPTIONS']))
    dispatcher.connect('recommendations_option_key',
                       '/recommendations/:key',
                       controller=option_controller,
                       action='OPTIONS',
                       conditions=dict(method=['OPTIONS']))
    dispatcher.connect('rating_option_key',
                       '/ratings/:key',
                       controller=option_controller,
                       action='OPTIONS',
                       conditions=dict(method=['OPTIONS']))
    dispatcher.connect('reset_option',
                       '/reset/',
                       controller=option_controller,
                       action='OPTIONS',
                       conditions=dict(method=['OPTIONS']))
    dispatcher.connect('reset_option_key',
                       '/reset/:key',
                       controller=option_controller,
                       action='OPTIONS',
                       conditions=dict(method=['OPTIONS']))

    #set up server
    conf = {
        'global': {
            'server.socket_host': 'student04.cse.nd.edu',
            'server.socket_port': 51080
        },
        '/': {
            'request.dispatch': dispatcher,
            'tools.CORS.on': True
        }
    }

    cherrypy.config.update(conf)
    app = cherrypy.tree.mount(None, config=conf)
    cherrypy.quickstart(app)
	def __init__(self, mdb):
		mdb = _movie_database()
		mdb.load_movies('data/movies.dat')
		mdb.load_users('data/users.dat')
		mdb.load_ratings('data/ratings.dat')
		mdb.load_images()
Example #22
0
	def __init__(self, mdb=None):
		if mdb is None:
			self.mdb = _movie_database()
		else:
			self.mdb = mdb
Example #23
0
	def __init__(self, mdb=None):
		if mdb is None:
			self.mdb = _movie_database()
		else:
			self.mdb = mdb
		self.mdb.load_favorites('ml-1m/favorites.dat')		
Example #24
0
def start_service():

    # Make controller and dispatcher objects for all resources
    DB = _movie_database()
    mov = Movies.Movies(DB)
    usr = Users.Users(DB)
    rat = Ratings.Ratings(DB)
    rec = Recommendations.Recommendations(DB)
    dispatcher = cherrypy.dispatch.RoutesDispatcher()

    # MOVIES
    # GET:
    dispatcher.connect("mov_get", "/movies/:id", controller=mov, action="GET", conditions=dict(method=["GET"]))
    dispatcher.connect("mov_get_all", "/movies/", controller=mov, action="GET_ALL", conditions=dict(method=["GET"]))
    # PUT
    dispatcher.connect("mov_put", "/movies/:id", controller=mov, action="PUT", conditions=dict(method=["PUT"]))
    # POST
    dispatcher.connect("mov_post", "/movies/", controller=mov, action="POST", conditions=dict(method=["POST"]))
    # RESET
    dispatcher.connect("mov_res", "/reset/:id", controller=mov, action="RESET", conditions=dict(method=["PUT"]))
    dispatcher.connect("mov_res_all", "/reset/", controller=mov, action="RESET_ALL", conditions=dict(method=["PUT"]))

    # DELETE
    dispatcher.connect("mov_del", "/movies/:id", controller=mov, action="DELETE", conditions=dict(method=["DELETE"]))
    dispatcher.connect(
        "mov_del_all", "/movies/", controller=mov, action="DELETE_ALL", conditions=dict(method=["DELETE"])
    )

    # USERS:

    # GET
    dispatcher.connect("usr_get", "/users/:id", controller=usr, action="GET", conditions=dict(method=["GET"]))
    dispatcher.connect("usr_get_all", "/users/", controller=usr, action="GET_ALL", conditions=dict(method=["GET"]))
    # PUT
    dispatcher.connect("usr_put", "/users/:id", controller=usr, action="PUT", conditions=dict(method=["PUT"]))
    # POST
    dispatcher.connect("usr_post", "/users/", controller=usr, action="POST", conditions=dict(method=["POST"]))

    # DELETE
    dispatcher.connect("usr_del", "/users/:id", controller=usr, action="DELETE", conditions=dict(method=["DELETE"]))
    dispatcher.connect(
        "usr_del_all", "/users/", controller=usr, action="DELETE_ALL", conditions=dict(method=["DELETE"])
    )

    # RATINGS:

    dispatcher.connect("rat_get", "/ratings/:id", controller=rat, action="GET", conditions=dict(method=["GET"]))
    # RECOMMENDATIONS:

    # DELETE
    dispatcher.connect(
        "rec_del", "/recommendations/", controller=rec, action="DELETE", conditions=dict(method=["DELETE"])
    )

    # GET
    dispatcher.connect("rec_get", "/recommendations/:id", controller=rec, action="GET", conditions=dict(method=["GET"]))
    # PUT
    dispatcher.connect("rec_put", "/recommendations/:id", controller=rec, action="PUT", conditions=dict(method=["PUT"]))

    # Configuration
    conf = {
        "global": {"server.socket_host": "student03.cse.nd.edu", "server.socket_port": 40041},
        "/": {"request.dispatch": dispatcher},
    }

    # Update the configuration and start the server
    cherrypy.config.update(conf)
    app = cherrypy.tree.mount(None, config=conf)
    cherrypy.quickstart(app)
Example #25
0
	def __init__(self, mdb=None):
		if mdb is None:
			self.mdb = _movie_database()
		else:
			self.mdb = mdb
Example #26
0
from reset import ResetController
from recommendations import RecommendationsController
from cors import CorsController

def CORS():
		cherrypy.response.headers["Access-Control-Allow-Origin"] = "*"
		cherrypy.response.headers["Access-Control-Allow-Methods"] = "GET, PUT, POST, OPTIONS, DELETE"

# web services
if __name__ == '__main__':
    # Backend setup
    movie_file = "./dat/movies.dat" 
    users_file = "./dat/users.dat"
    ratings_file = "./dat/ratings.dat"
    images_file = "./dat/images.dat"
    mdb = _movie_database(movie_file, users_file, ratings_file, images_file)

    dispatcher = cherrypy.dispatch.RoutesDispatcher()
    conf = { 
        'global': {
            'server.socket_host':'student04.cse.nd.edu',
            'server.socket_port':51043
        },
        '/': {
            "request.dispatch": dispatcher, 
            "tools.CORS.on": True
        }
    }

    ## Controllers:
    moviesController  = MoviesController(mdb)
Example #27
0
 def __init__(self, mdb=None):
     if mdb is None:
         self.mdb = _movie_database()
     else:
         self.mdb = mdb
     self.mdb.load_users('ml-1m/users.dat')
Example #28
0
def start_service():

    mdb = _movie_database()
    dispatcher = cherrypy.dispatch.RoutesDispatcher()

    votes = VotesController(mdb=mdb)
    ratings = RatingsController(mdb=mdb)
    reset = ResetController(mdb=mdb)
    #instantiate controllers
    movieController = MovieController(mdb=mdb)
    userController = UserController(mdb=mdb)

    #connecting endpoings

    #connect /movies/:movie_id resource
    dispatcher.connect('movie_get_mid',
                       '/movies/:movie_id',
                       controller=movieController,
                       action='GET_MID',
                       conditions=dict(method=['GET']))
    dispatcher.connect('movie_put_mid',
                       '/movies/:movie_id',
                       controller=movieController,
                       action='PUT_MID',
                       conditions=dict(method=['PUT']))
    dispatcher.connect('movie_delete_mid',
                       '/movies/:movie_id',
                       controller=movieController,
                       action='DELETE_MID',
                       conditions=dict(method=['DELETE']))
    dispatcher.connect('movie_get',
                       '/movies/',
                       controller=movieController,
                       action='GET',
                       conditions=dict(method=['GET']))
    dispatcher.connect('movie_post',
                       '/movies/',
                       controller=movieController,
                       action='POST',
                       conditions=dict(method=['POST']))
    dispatcher.connect('movie_delete',
                       '/movies/',
                       controller=movieController,
                       action='DELETE',
                       conditions=dict(method=['DELETE']))

    dispatcher.connect('user_get_uid',
                       '/users/:user_id',
                       controller=userController,
                       action='GET_UID',
                       conditions=dict(method=['GET']))
    dispatcher.connect('user_put_uid',
                       '/users/:user_id',
                       controller=userController,
                       action='PUT_UID',
                       conditions=dict(method=['PUT']))
    dispatcher.connect('user_delete_uid',
                       '/users/:user_id',
                       controller=userController,
                       action='DELETE_UID',
                       conditions=dict(method=['DELETE']))
    dispatcher.connect('user_get',
                       '/users/',
                       controller=userController,
                       action='GET',
                       conditions=dict(method=['GET']))
    dispatcher.connect('user_post',
                       '/users/',
                       controller=userController,
                       action='POST',
                       conditions=dict(method=['POST']))
    dispatcher.connect('user_delete',
                       '/users/',
                       controller=userController,
                       action='DELETE',
                       conditions=dict(method=['DELETE']))

    # /recommendations/ routes
    dispatcher.connect('delete_rec',
                       '/recommendations/',
                       controller=votes,
                       action='DELETE_RECOMMENDATIONS',
                       conditions=dict(method=['DELETE']))
    # /recommentdations/:user_id routes
    dispatcher.connect('get_user_rec',
                       '/recommendations/:user_id',
                       controller=votes,
                       action='GET_RECOMMENDATIONS',
                       conditions=dict(method=['GET']))
    dispatcher.connect('put_user_rec',
                       '/recommendations/:user_id',
                       controller=votes,
                       action='PUT_RECOMMENDATIONS',
                       conditions=dict(method=['PUT']))
    # /ratings/:movie_id routes
    dispatcher.connect('get_movie_rating',
                       '/ratings/:movie_id',
                       controller=ratings,
                       action='GET_RATING',
                       conditions=dict(method=['GET']))
    # /reset/ routes
    dispatcher.connect('put_reset',
                       '/reset/',
                       controller=reset,
                       action='PUT_RESET',
                       conditions=dict(method=['PUT']))
    # /reset/:movie_id
    dispatcher.connect('put_reset_movie',
                       '/reset/:movie_id',
                       controller=reset,
                       action='PUT_RESET_MOVIE',
                       conditions=dict(method=['PUT']))

    #configuration
    conf = {
        'global': {
            'server.socket_host': '127.0.0.1',
            'server.socket_port': 8000,
        },
        '/': {
            'request.dispatch': dispatcher
        }
    }

    cherrypy.config.update(conf)
    app = cherrypy.tree.mount(None, config=conf)
    cherrypy.quickstart(app)
Example #29
0
def start_service():
    dispatcher = cherrypy.dispatch.RoutesDispatcher()
    mdb = _movie_database()
    movieController = MovieController(mdb)
    userController = UserController(mdb)
    recommendationController = RecommendationController(mdb)
    ratingController = RatingController(mdb)
    resetController = ResetController(mdb)

    # movie handlers
    dispatcher.connect('movie_get',
                       '/movies/',
                       controller=movieController,
                       action='GET',
                       conditions=dict(method=['GET']))
    dispatcher.connect('movie_get_key',
                       '/movies/:key',
                       controller=movieController,
                       action='GET',
                       conditions=dict(method=['GET']))
    dispatcher.connect('movie_put_key',
                       '/movies/:key',
                       controller=movieController,
                       action='PUT',
                       conditions=dict(method=['PUT']))
    dispatcher.connect('movie_post',
                       '/movies/',
                       controller=movieController,
                       action='POST',
                       conditions=dict(method=['POST']))
    dispatcher.connect('movie_delete',
                       '/movies/',
                       controller=movieController,
                       action='DELETE',
                       conditions=dict(method=['DELETE']))
    dispatcher.connect('movie_delete_key',
                       '/movies/:key',
                       controller=movieController,
                       action='DELETE',
                       conditions=dict(method=['DELETE']))

    # user handlers
    dispatcher.connect('user_get',
                       '/users/',
                       controller=userController,
                       action='GET',
                       conditions=dict(method=['GET']))
    dispatcher.connect('user_get_key',
                       '/users/:key',
                       controller=userController,
                       action='GET',
                       conditions=dict(method=['GET']))
    dispatcher.connect('user_put_key',
                       '/users/:key',
                       controller=userController,
                       action='PUT',
                       conditions=dict(method=['PUT']))
    dispatcher.connect('user_post',
                       '/users/',
                       controller=userController,
                       action='POST',
                       conditions=dict(method=['POST']))
    dispatcher.connect('user_delete',
                       '/users/',
                       controller=userController,
                       action='DELETE',
                       conditions=dict(method=['DELETE']))
    dispatcher.connect('user_delete_key',
                       '/users/:key',
                       controller=userController,
                       action='DELETE',
                       conditions=dict(method=['DELETE']))

    # recommendation handlers
    dispatcher.connect('recommendation_get_key',
                       '/recommendations/:key',
                       controller=recommendationController,
                       action='GET',
                       conditions=dict(method=['GET']))
    dispatcher.connect('recommendation_put_key',
                       '/recommendations/:key',
                       controller=recommendationController,
                       action='PUT',
                       conditions=dict(method=['PUT']))
    dispatcher.connect('recommendation_delete',
                       '/recommendations/',
                       controller=recommendationController,
                       action='DELETE',
                       conditions=dict(method=['DELETE']))

    # rating handler
    dispatcher.connect('rating_get_key',
                       '/ratings/:key',
                       controller=ratingController,
                       action='GET',
                       conditions=dict(method=['GET']))

    # reset handlers
    dispatcher.connect('reset_put',
                       '/reset/',
                       controller=resetController,
                       action='PUT',
                       conditions=dict(method=['PUT']))
    dispatcher.connect('reset_put_key',
                       '/reset/:key',
                       controller=resetController,
                       action='PUT',
                       conditions=dict(method=['PUT']))

    cfg = {
        'global': {
            'server.socket_host': 'student04.cse.nd.edu',
            'server.socket_port': 51067
        },
        '/': {
            'request.dispatch': dispatcher
        }
    }
    cherrypy.config.update(cfg)
    app = cherrypy.tree.mount(None, config=cfg)
    cherrypy.quickstart(app)