Exemple #1
0
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()
Exemple #2
0
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()
Exemple #3
0
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()
Exemple #4
0
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()