Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

#!/usr/bin/env python 

# -*- coding: utf-8 -*- 

 

############################################################################### 

#  Copyright Kitware Inc. 

# 

#  Licensed under the Apache License, Version 2.0 ( the "License" ); 

#  you may not use this file except in compliance with the License. 

#  You may obtain a copy of the License at 

# 

#    http://www.apache.org/licenses/LICENSE-2.0 

# 

#  Unless required by applicable law or agreed to in writing, software 

#  distributed under the License is distributed on an "AS IS" BASIS, 

#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 

#  See the License for the specific language governing permissions and 

#  limitations under the License. 

############################################################################### 

 

import collections 

 

 

discovery = set() 

routes = collections.defaultdict(dict) 

models = {} 

 

 

def addRouteDocs(resource, route, method, info, handler): 

    """ 

    This is called for route handlers that have a description attr on them. It 

    gathers the necessary information to build the swagger documentation, which 

    is consumed by the docs.Describe endpoint. 

 

    :param resource: The name of the resource, e.g. "item" 

    :type resource: str 

    :param route: The route to describe. 

    :type route: list 

    :param method: The HTTP method for this route, e.g. "POST" 

    :type method: str 

    :param info: The information representing the API documentation. 

    :type info: dict 

    """ 

    # Convert wildcard tokens from :foo form to {foo} form. 

    convRoute = [] 

    for token in route: 

        if token[0] == ':': 

            convRoute.append('{{{}}}'.format(token[1:])) 

        else: 

            convRoute.append(token) 

 

    path = '/'.join(['', resource] + convRoute) 

 

    info = info.copy() 

    info['httpMethod'] = method.upper() 

 

    if 'nickname' not in info: 

        info['nickname'] = handler.__name__ 

 

    # Add the operation to the given route 

    if path not in routes[resource]: 

        routes[resource][path] = [] 

 

    routes[resource][path].append(info) 

    discovery.add(resource)