Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 32 additions & 5 deletions mock_server/handlers.py
Original file line number Diff line number Diff line change
Expand Up @@ -136,8 +136,14 @@ def put(self, path, format=DEFAULT_FORMAT):

@tornado.web.asynchronous
def options(self, path, format=DEFAULT_FORMAT):
self.set_header("Access-Control-Allow-Origin", "*")
self.set_header("Access-Control-Max-Age", 21600)
self.set_header("Access-Control-Allow-Credentials", "true")

# some apps need to know the origin
if "Origin" in self.request.headers:
self.set_header("Access-Control-Allow-Origin", self.request.headers["Origin"])
else:
self.set_header("Access-Control-Allow-Origin", "*")

if "Access-Control-Request-Headers" in self.request.headers:
self.set_header(
Expand All @@ -160,6 +166,14 @@ def _handle_request_on_upstream(self):
provider = rest.UpstreamServerProvider(
self.api_data.upstream_server)

self.set_header("Access-Control-Allow-Credentials", "true")

# some apps need to know the origin
if "Origin" in self.request.headers:
self.set_header("Access-Control-Allow-Origin", self.request.headers["Origin"])
else:
self.set_header("Access-Control-Allow-Origin", "*")

provider({
"uri": self.request.uri,
"method": self.request.method,
Expand All @@ -179,7 +193,7 @@ def _resolve_request(self, url_path, format):
# get request data
self.format = self._get_format(format)
method = self.request.method
self.status_code = int(self.get_argument("__statusCode", 200))
self.status_code = None # we will calculate this from available files

# upstream server
upstream_server = self.api_data.get_upstream_server(
Expand All @@ -206,8 +220,14 @@ def _resolve_request(self, url_path, format):
content_type = SUPPORTED_FORMATS[self.format][0]
response.headers.append(
("Content-Type", "%s; charset=utf-8" % content_type))
response.headers.append(
("Access-Control-Allow-Origin", "*"))

self.set_header("Access-Control-Allow-Credentials", "true")

# some apps need to know the origin
if "Origin" in self.request.headers:
self.set_header("Access-Control-Allow-Origin", self.request.headers["Origin"])
else:
self.set_header("Access-Control-Allow-Origin", "*")

# log request
self.log_request(response)
Expand Down Expand Up @@ -246,7 +266,14 @@ class RPCHandler(BaseHandler):
def post(self):
# log request
self.log_request()
self.set_header("Access-Control-Allow-Origin", "*")

self.set_header("Access-Control-Allow-Credentials", "true")

# some apps need to know the origin
if "Origin" in self.request.headers:
self.set_header("Access-Control-Allow-Origin", self.request.headers["Origin"])
else:
self.set_header("Access-Control-Allow-Origin", "*")

if "Content-Length" not in self.request.headers and \
self.request.headers.get(
Expand Down
14 changes: 13 additions & 1 deletion mock_server/rest.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,24 @@

class FilesMockProvider(api.FilesMockProvider):

def __call__(self, request, status_code=200, format="json"):
def __call__(self, request, status_code, format="json"):

self._request = request
self._status_code = status_code
self._format = format

# find status code in requested dir
if status_code is None:
self._status_code = 200
url_path = re.sub("/{2,}", "/", self._request.url_path, count=1)
regex_file_name_and_path = os.path.join(self._api_dir, url_path, self._get_filename())
regex_file_dir = regex_file_name_and_path.rsplit('/', 1)[0]
files = [f for f in os.listdir(regex_file_dir) if re.match(request.method + r'_[0-9]+.*\.' + format, f)]
if len(files) > 0:
f = files[0]
status_code = int(f.split('_')[1].split('.')[0])
self._status_code = status_code

# prepare response
response = api.Response()

Expand Down
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
tornado==4.3
markdown2 >= 2.1.0
py-bcrypt >= 0.3
bcrypt >= 3.1.4
futures >= 2.1.3
jsonrpclib==0.1.7
six==1.10.0