1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00

add comments for api server

This commit is contained in:
winlin 2013-12-08 09:22:33 +08:00
parent baf11c59df
commit 9f3139c5c3

View file

@ -36,25 +36,14 @@ reload(sys);
exec("sys.setdefaultencoding('utf-8')"); exec("sys.setdefaultencoding('utf-8')");
assert sys.getdefaultencoding().lower() == "utf-8"; assert sys.getdefaultencoding().lower() == "utf-8";
if __name__ != "__main__":
raise Exception("embed not support");
if len(sys.argv) <= 1:
print "SRS api callback server, Copyright (c) 2013 winlin"
print "Usage: python %s <port>"%(sys.argv[0])
print " port: the port to listen at."
print "For example:"
print " python %s 8085"%(sys.argv[0])
print ""
print "See also: https://github.com/winlinvip/simple-rtmp-server"
sys.exit(1)
import json, datetime, cherrypy import json, datetime, cherrypy
# simple log functions.
def trace(msg): def trace(msg):
date = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") date = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print "[%s][trace] %s"%(date, msg) print "[%s][trace] %s"%(date, msg)
# enable crossdomain access for js-client
def enable_crossdomain(): def enable_crossdomain():
cherrypy.response.headers["Access-Control-Allow-Origin"] = "*" cherrypy.response.headers["Access-Control-Allow-Origin"] = "*"
cherrypy.response.headers["Access-Control-Allow-Methods"] = "GET, POST, HEAD, PUT, DELETE" cherrypy.response.headers["Access-Control-Allow-Methods"] = "GET, POST, HEAD, PUT, DELETE"
@ -62,6 +51,7 @@ def enable_crossdomain():
allow_headers = ["Cache-Control", "X-Proxy-Authorization", "X-Requested-With", "Content-Type"] allow_headers = ["Cache-Control", "X-Proxy-Authorization", "X-Requested-With", "Content-Type"]
cherrypy.response.headers["Access-Control-Allow-Headers"] = ",".join(allow_headers) cherrypy.response.headers["Access-Control-Allow-Headers"] = ",".join(allow_headers)
# error codes definition
class Error: class Error:
# ok, success, completed. # ok, success, completed.
success = 0 success = 0
@ -74,12 +64,14 @@ POST: create new client, handle the SRS on_connect callback.
''' '''
class RESTClients(object): class RESTClients(object):
exposed = True exposed = True
def GET(self): def GET(self):
enable_crossdomain(); enable_crossdomain();
clients = {}; clients = {};
return json.dumps(clients); return json.dumps(clients);
# for SRS hook: on_connect
def POST(self): def POST(self):
enable_crossdomain(); enable_crossdomain();
@ -97,21 +89,43 @@ class RESTClients(object):
def OPTIONS(self): def OPTIONS(self):
enable_crossdomain() enable_crossdomain()
# HTTP RESTful path.
class Root(object): class Root(object):
def __init__(self): def __init__(self):
self.api = Api() self.api = Api()
# HTTP RESTful path.
class Api(object): class Api(object):
def __init__(self): def __init__(self):
self.v1 = V1() self.v1 = V1()
# HTTP RESTful path. to access as:
# http://127.0.0.1:8085/api/v1/clients
class V1(object): class V1(object):
def __init__(self): def __init__(self):
self.clients = RESTClients() self.clients = RESTClients()
'''
main code start.
'''
# donot support use this module as library.
if __name__ != "__main__":
raise Exception("embed not support");
# check the user options
if len(sys.argv) <= 1:
print "SRS api callback server, Copyright (c) 2013 winlin"
print "Usage: python %s <port>"%(sys.argv[0])
print " port: the port to listen at."
print "For example:"
print " python %s 8085"%(sys.argv[0])
print ""
print "See also: https://github.com/winlinvip/simple-rtmp-server"
sys.exit(1)
# parse port from user options.
port = int(sys.argv[1]) port = int(sys.argv[1])
trace("api server listen at port: %s"%(port)) trace("api server listen at port: %s"%(port))
# cherrypy config.
conf = { conf = {
'global': { 'global': {
'server.shutdown_timeout': 1, 'server.shutdown_timeout': 1,
@ -121,9 +135,11 @@ conf = {
'tools.encode.encoding': "utf-8" 'tools.encode.encoding': "utf-8"
}, },
'/': { '/': {
# for cherrypy RESTful api support
'request.dispatch': cherrypy.dispatch.MethodDispatcher() 'request.dispatch': cherrypy.dispatch.MethodDispatcher()
} }
} }
# start cherrypy web engine
trace("start cherrypy server") trace("start cherrypy server")
cherrypy.quickstart(Root(), '/', conf) cherrypy.quickstart(Root(), '/', conf)