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
11 changes: 11 additions & 0 deletions mock_server/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1,12 @@
import sys


is_before_python3 = sys.version_info[0] < 3

if is_before_python3: # python2
from .ordereddict import OrderedDict
else:
from collections import OrderedDict


__version__ = "0.3.9"
5 changes: 3 additions & 2 deletions mock_server/methodslisting.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
from .text import markdown
from .util import read_file, slugify
from .model import get_url_path
from mock_server import OrderedDict


class MethodsLoader(object):
Expand Down Expand Up @@ -105,7 +106,7 @@ class UrlPath(object):
def __init__(self, path):
self.path = path
self.id = slugify(self.path)
self.resources = {}
self.resources = OrderedDict()


class Resource(object):
Expand Down Expand Up @@ -190,7 +191,7 @@ def _load_responses(self, method, data):
except ValueError:
data = data

responses = {}
responses = OrderedDict()

responses["xmlrpc"] = XMLRPCMethod(method, data)

Expand Down
18 changes: 7 additions & 11 deletions mock_server/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,7 @@
import glob
import functools

try:
from collections import OrderedDict
except ImportError:
from .ordereddict import OrderedDict

from mock_server import OrderedDict
from string import ascii_letters, digits
from random import choice
from tornado.escape import utf8
Expand Down Expand Up @@ -46,12 +42,12 @@ class ApiData(object):

def __init__(self, model):
self._model = model
self.data = {}
self.data = OrderedDict()
self._upstream_server = ""
self.password = ""
self.http_username = ""
self.http_password = ""
self.resources = {}
self.resources = OrderedDict()
self.categories = set()

@property
Expand Down Expand Up @@ -85,7 +81,7 @@ def load_categories(self):
if "category" in resource)

def save(self):
self.data = {}
self.data = OrderedDict()

if self.resources:
self.data["resources"] = self.resources
Expand Down Expand Up @@ -114,14 +110,14 @@ def get_rpc_upstream_server(self, method_name):

def list_categories(self):
if self.resources:
categories = {}
resources = {}
categories = OrderedDict()
resources = OrderedDict()
for file_url_path, resource in self.resources.items():
if "category" in resource and resource["category"]:
categories[resource["category"]] = []
resources[get_url_path(file_url_path)] = resource
else:
categories = {}
categories = OrderedDict()
resources = []

categories["__default"] = []
Expand Down
12 changes: 8 additions & 4 deletions mock_server/ordereddict.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
# Backport of OrderedDict() class that runs on Python 2.4, 2.5, 2.6, 2.7 and pypy.
# Passes Python2.7's test suite and incorporates all the latest updates.

try:
from _thread import get_ident as _get_ident
except ImportError:
from _dummy_thread import get_ident as _get_ident
from mock_server import is_before_python3


if not is_before_python3:
try:
from _thread import get_ident as _get_ident
except ImportError:
from _dummy_thread import get_ident as _get_ident

try:
from _abcoll import KeysView, ValuesView, ItemsView
Expand Down
8 changes: 4 additions & 4 deletions mock_server/templates/list_resources.html
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
{% if some_method %}
<div class="span3 bs-docs-sidebar">
<ul class="nav nav-list bs-docs-sidenav" id="sidenav">
{% for category, paths in categories.iteritems() %}{% if paths %}
{% for category, paths in categories.items() %}{% if paths %}
<li{% if number_of_methods < MAX_NUMBER_OF_METHODS %} class="category"{% end %}><a href="#{{category}}"><i class="icon-chevron-right"></i> {% if category == "__default" %}Not in category{% else %}{{category}}{% end %}</a></li>
{% if number_of_methods < MAX_NUMBER_OF_METHODS %}
{% for type, path in paths %}
Expand All @@ -40,11 +40,11 @@ <h1>List resources</h1>

{% if some_method %}

{% for category, paths in categories.iteritems() %}{% if paths %}
{% for category, paths in categories.items() %}{% if paths %}
<h2 id="{{category}}">{% if category == "__default" %}Not in category{% else %}{{category}}{% end %}</h2>
{% for type, path in paths %}
{% if type == "rest" %}
{% for resource in path.resources.itervalues() %}
{% for resource in path.resources.values() %}
<section id="{{resource.url_path}}">
<div class="navbar">
<div class="navbar-inner">
Expand Down Expand Up @@ -106,7 +106,7 @@ <h2 id="{{category}}">{% if category == "__default" %}Not in category{% else %}{
<div class="navbar-inner">
<a class="brand" href="#">RPC/{{path["name"]}}</a>
<ul class="nav">
{% for i, format in enumerate(path["responses"].iterkeys()) %}
{% for i, format in enumerate(path["responses"].keys()) %}
<li {% if i == 0 %}class="active"{% end %}><a class="trigger-{{path["id"]}}{{format}}" href="#{{path["id"]}}{{format}}" data-toggle="tab">{{format}}</a></li>
{% end %}
</ul>
Expand Down
2 changes: 1 addition & 1 deletion mock_server/templates/resources_logs.html
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
</div>
<div class="request-container">
<strong>Request headers</strong>
<pre>{% for key, value in line["headers"].iteritems() %}{% if key not in ("X-Real-IP", "X-Scheme", "X-Subdomain", "X-Real-Ip", "Connection") %}
<pre>{% for key, value in line["headers"].items() %}{% if key not in ("X-Real-IP", "X-Scheme", "X-Subdomain", "X-Real-Ip", "Connection") %}
{{key}}: {{value}}{% end %}{% end %}
</pre>
{% if line["body"] %}
Expand Down
16 changes: 14 additions & 2 deletions mock_server/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,16 @@
from tornado.httputil import HTTPHeaders


def _unicode(value):
try: # Python 2
return unicode(value, errors='ignore', encoding='utf-8')
except NameError: # Python 3
try:
return str(value, errors='ignore', encoding='utf-8')
except TypeError as e: # Wasn't a bytes object, no need to decode
return value


def read_file(filename):
if os.path.isfile(filename):
try:
Expand Down Expand Up @@ -44,12 +54,14 @@ def default(self, obj):


def slugify(value, delimiter="-"):
slug = unicodedata.normalize("NFKD", unicode(value)).encode("ascii", "ignore")
slug = unicodedata.normalize("NFKD", _unicode(value)).encode("ascii", "ignore")
slug = slug.decode("utf-8")
slug = re.sub(r"[^\w]+", " ", slug)
return delimiter.join(slug.lower().strip().split())


def slugify_and_camel(value):
slug = unicodedata.normalize("NFKD", unicode(value)).encode("ascii", "ignore")
slug = unicodedata.normalize("NFKD", _unicode(value)).encode("ascii", "ignore")
slug = slug.decode("utf-8")
slug = re.sub(r"[^\w]+", " ", slug)
return "".join([item.capitalize() for item in slug.strip().split()])