def main(global_config, **settings): """ This function returns a Pyramid WSGI application. """ engine = engine_from_config(settings, 'sqlalchemy.') DBSession.configure(bind=engine) # load the oauth configuration settings global oAuthConfig oAuthConfig = load_oauth_config(settings['mi.oauthkey_file']) config = Configurator(settings=settings) config.add_static_view('img', 'timmobilev2:img', cache_max_age=0) config.add_static_view('css', 'timmobilev2:css', cache_max_age=0) config.add_static_view('js', 'timmobilev2:js', cache_max_age=0) config.add_route('index', '/{authorname}') config.add_route('resource.any', '/{authorname}/{resource}.{ext}') config.scan() return config.make_wsgi_app()
def main(global_config, **settings): """ This function returns a Pyramid WSGI application. """ # initial db setup and connection engine = engine_from_config(settings, 'sqlalchemy.') initialize_sql(engine) # load the oauth configuration settings global oAuthConfig oAuthConfig = load_oauth_config(settings['mi.oauthkey_file']) authn_policy = AuthTktAuthenticationPolicy('tim_secret', callback=groupfinder, timeout=1800, reissue_time=180, max_age=1800, debug=True) authz_policy = ACLAuthorizationPolicy() session_factory = pyramid_beaker.session_factory_from_settings(settings) config = Configurator(settings=settings, root_factory='timweb.context.RootFactory', authentication_policy=authn_policy, authorization_policy=authz_policy, session_factory=session_factory) config.add_static_view('static', 'timweb:static', cache_max_age=None) config.add_static_view('img', 'timweb:img', cache_max_age=None) config.add_static_view('css', 'timweb:css', cache_max_age=None) config.add_static_view('js', 'timweb:js', cache_max_age=None) # define routes # config.add_route('login', '/login') config.add_route('logout', '/logout') config.add_route('home', '/') config.add_route('about', '/about.html') config.add_route('appinator', '/appinator.html') config.add_route('features', '/features.html') config.add_route('jquery', '/jquery.html') config.add_route('jquery_json','/jquery.json') config.add_route('supported_features', '/supported_features.html') # twitter auth config.add_route('twitter','/twitter.html') config.add_route('twitter_callback', '/twitter_callback') config.add_route('twitter_confirmation', '/twitter_confirmation.html') # instagram auth config.add_route('instagram','/instagram.html') config.add_route('instagram_callback', '/instagram_callback') config.add_route('instagram_confirmation', '/instagram_confirmation.html') # flickr auth config.add_route('flickr','/flickr.html') config.add_route('flickr_callback', '/flickr_callback') config.add_route('flickr_confirmation', '/flickr_confirmation.html') # facebook auth config.add_route('facebook','/facebook.html') config.add_route('facebook_callback', '/facebook_callback') config.add_route('facebook_confirmation', '/facebook_confirmation.html') # linkedin auth config.add_route('linkedin','/linkedin.html') config.add_route('linkedin_callback', '/linkedin_callback') config.add_route('linkedin_confirmation', '/linkedin_confirmation.html') # google+ auth config.add_route('googleplus','/googleplus.html') config.add_route('googleplus_callback', '/google_callback') config.add_route('googleplus_confirmation', '/googleplus_confirmation.html') # foursquare auth config.add_route('foursquare','/foursquare.html') config.add_route('foursquare_callback', '/foursquare_callback') config.add_route('foursquare_confirmation', '/foursquare_confirmation.html') config.scan('timweb') return config.make_wsgi_app()
def main(global_config, **settings): """ This function returns a Pyramid WSGI application. """ engine = engine_from_config(settings, 'sqlalchemy.') initialize_sql(engine) # load the oauth configuration settings global oAuthConfig oAuthConfig = load_oauth_config(settings['mi.oauthkey_file']) authn_policy = AuthTktAuthenticationPolicy('tim_secret', callback=groupfinder, timeout=1800, reissue_time=180, max_age=1800, debug=True) authz_policy = ACLAuthorizationPolicy() session_factory = pyramid_beaker.session_factory_from_settings(settings) config = Configurator(settings=settings, root_factory='timmobile.context.RootFactory', authentication_policy=authn_policy, authorization_policy=authz_policy, session_factory=session_factory) config.add_static_view('static', 'timmobile:static', cache_max_age=0) config.add_static_view('img', 'timmobile:img', cache_max_age=0) config.add_static_view('css', 'timmobile:css', cache_max_age=0) config.add_static_view('js', 'timmobile:js', cache_max_age=0) # define routes # config.add_route('home', '/') config.add_route('login', '/login') config.add_route('logout', '/logout') config.add_route('newlogin', '/newlogin') config.add_route('accounts', '/accounts') config.add_route('account_details', '/accounts/{featurename}') config.add_route('newsfeed', '/newsfeed') config.add_route('timeline', '/{authorname}/timeline') config.add_route('profile', '/{authorname}/profile') config.add_route('followers', '/followers') # # oauth setup paths # # twitter oauth config.add_route('twitter','/oauth/twitter') config.add_route('twitter_callback', '/oauth/twitter/callback') # facebook auth config.add_route('facebook','/oauth/facebook') config.add_route('facebook_callback', '/oauth/facebook/callback') # linkedin auth config.add_route('linkedin','/oauth/linkedin') config.add_route('linkedin_callback', '/oauth/linkedin/callback') # google+ auth config.add_route('googleplus','/oauth/googleplus') config.add_route('googleplus_callback', '/oauth/googleplus/callback') # instagram auth config.add_route('instagram','/oauth/instagram') config.add_route('instagram_callback', '/oauth/instagram/callback') # flickr auth config.add_route('flickr','/oauth/flickr') config.add_route('flickr_callback', '/oauth/flickr/callback') # foursquare auth config.add_route('foursquare','/oauth/foursquare') config.add_route('foursquare_callback', '/oauth/foursquare/callback') # generic oauth config.add_route('oauth','/oauth/{featurename}') config.add_route('oauth_callback', '/oauth/{featurename}/callback') config.scan() return config.make_wsgi_app()
def main(global_config, **settings): """ This function returns a Pyramid WSGI application. """ """ Setup the database """ engine = engine_from_config(settings, "sqlalchemy.") initialize_sql(engine) # load the oauth configuration settings global oAuthConfig oAuthConfig = load_oauth_config(settings["mi.oauthkey_file"]) config = Configurator(settings=settings) config.add_renderer("jsonp", JSONP(param_name="callback")) config.add_static_view(name="img", path="miapi:img", cache_max_age=3600) # setup route and view for home page config.add_route("home", "/") config.add_view("miapi.controllers.about.about", route_name="home", renderer="templates/about.pt") config.add_route("status", "/v1/status") # # check author name availablility # # -- # SEARCH for matching authors; JSON list of 0 or more authors returned. # Query args: name # config.add_route("search.author", "/v1/authors/search") # # Return list of all authors # config.add_route("authors", "/v1/authors") # -- # AUTHOR BASIC functionality # # GET info, PUT new, DELETE existing # config.add_route("author.CRUD", "/v1/authors/{authorname}") # # AUTHOR PROFILE: profile information for the specified author # config.add_route("author.profile.CRUD", "/v1/authors/{authorname}/profile") # # AUTHOR METRICS: collected from users browsing an author's model # config.add_route("author.metrics.visitor.CRUD", "/v1/authors/{authorname}/metrics/visitor/{visitorID}") # # AUTHOR MODEL: rebuild/update the data for all the author's services # config.add_route("author.model.build", "/v1/authors/{authorname}/build") config.add_route("author.model.update", "/v1/authors/{authorname}/update") # # AUTHOR QUERY: query for the highlights/details for a particular author # config.add_route("author.query.highlights", "/v1/authors/{authorname}/highlights") config.add_route("author.query.events", "/v1/authors/{authorname}/events") config.add_route("author.query.events.eventId", "/v1/authors/{authorname}/events/{eventID}") config.add_route("author.query.topstories", "/v1/authors/{authorname}/topstories") # -- # AUTHOR GROUP BASIC: # # GET - list of groups defined for the author config.add_route("author.groups", "/v1/authors/{authorname}/groups") # GET - get group definition; PUT - create/update group info; DELETE - delete the group config.add_route("author.groups.CRUD", "/v1/authors/{authorname}/groups/{groupname}") # GET - list of members in specified group config.add_route("author.groups.members", "/v1/authors/{authorname}/groups/{groupname}/members") # GET - get info about the member; PUT - add new member; DELETE - remove member config.add_route("author.groups.members.CRUD", "/v1/authors/{authorname}/groups/{groupname}/members/{member}") # # AUTHOR GROUP QUERY: query for the highlights/details for a particular group (i.e. following) # config.add_route("author.groups.query.highlights", "/v1/authors/{authorname}/groups/{groupname}/highlights") config.add_route("author.groups.query.events", "/v1/authors/{authorname}/groups/{groupname}/events") # -- # AUTHOR SERVICE: list services, add/remove services # config.add_route("author.services", "/v1/authors/{authorname}/services") config.add_route("author.services.CRUD", "/v1/authors/{authorname}/services/{servicename}") # # AUTHOR SERVICE MODEL: rebuild/update the data for the specified service # config.add_route("author.services.build", "/v1/authors/{authorname}/services/{servicename}/build") config.add_route("author.services.update", "/v1/authors/{authorname}/services/{servicename}/update") # # AUTHOR SERVICE QUERY: query for the highlights/details of the specified service and author # config.add_route("author.services.query.highlights", "/v1/authors/{authorname}/services/{servicename}/highlights") config.add_route("author.services.query.events", "/v1/authors/{authorname}/services/{servicename}/events") # # AUTHOR SERVICE PROFILE: get profile information from the specified service # config.add_route("author.services.profile", "/v1/authors/{authorname}/services/{servicename}/profile") # # SERVICE functionality # config.add_route("services", "/v1/services") config.add_route("services.CRUD", "/v1/services/{servicename}") # # FEATURE functionality # config.add_route("features", "/v1/features") config.add_route("feature.CRUD", "/v1/features/{featurename}") config.add_route("feature.bundle", "/v1/features/{featurename}/bundle") # -- # AUTHOR FEATURE: list services, add/remove services # config.add_route("author.features", "/v1/authors/{authorname}/features") config.add_route("author.features.CRUD", "/v1/authors/{authorname}/features/{featurename}") config.scan("miapi") return config.make_wsgi_app()