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:
parent
baf11c59df
commit
9f3139c5c3
1 changed files with 31 additions and 15 deletions
|
@ -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)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue