• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

team-telnyx / telnyx-python / 13285595903

12 Feb 2025 12:37PM UTC coverage: 92.795%. Remained the same
13285595903

push

github

web-flow
v2.1.5 Lint and Bump(#90)

Co-authored-by: “ADandyGuyInSpace” <“vladi@telnyx.com”>

4 of 5 new or added lines in 3 files covered. (80.0%)

2241 of 2415 relevant lines covered (92.8%)

3.71 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

96.15
/telnyx/api_resources/abstract/nested_resource_class_methods.py
1
from __future__ import absolute_import, division, print_function
4✔
2

3
from six.moves.urllib.parse import quote_plus
4✔
4

5
from telnyx import api_requestor, util
4✔
6

7

8
def nested_resource_class_methods(
4✔
9
    resource, path=None, operations=None, pluralize_path=True
10
):
11
    def make_path(v):
4✔
12
        if pluralize_path:
4✔
13
            return "%ss" % v
4✔
14
        else:
15
            return v
4✔
16

17
    if path is None:
4✔
18
        path = make_path(resource)
4✔
19
    if operations is None:
4✔
20
        raise ValueError("operations list required")
4✔
21

22
    def wrapper(cls):
4✔
23
        def nested_resource_url(cls, id, nested_id=None):
4✔
24
            parts = []
4✔
25
            if not path.startswith("/"):
4✔
26
                parts.append(cls.class_url())
4✔
27
            if id is not None and "phone_number" not in path:
4✔
28
                parts.append(quote_plus(id, safe=util.telnyx_valid_id_parts))
4✔
29
            if id is not None:
4✔
30
                if "phone_number" in path:
4✔
31
                    parts.append(
4✔
32
                        path.format(
33
                            phone_number=quote_plus(
34
                                id, safe=util.telnyx_valid_id_parts + "+"
35
                            )
36
                        )
37
                    )
38
                elif "verification_id" in path:
4✔
NEW
39
                    parts.append(
×
40
                        path.format(
41
                            verification_id=quote_plus(
42
                                id, safe=util.telnyx_valid_id_parts
43
                            )
44
                        )
45
                    )
46
                else:
47
                    parts.append(path)
4✔
48
            else:
49
                parts.append(path)
4✔
50
            if nested_id is not None:
4✔
51
                parts.append(quote_plus(nested_id, safe=util.telnyx_valid_id_parts))
4✔
52
            return "/".join(parts)
4✔
53

54
        resource_url_method = "%s_url" % make_path(resource)
4✔
55
        setattr(cls, resource_url_method, classmethod(nested_resource_url))
4✔
56

57
        def nested_resource_request(cls, method, url, api_key=None, **params):
4✔
58
            requestor = api_requestor.APIRequestor(api_key)
4✔
59
            params = util.rewrite_reserved_words(params)
4✔
60
            response, api_key = requestor.request(method, url, params)
4✔
61
            return util.convert_to_telnyx_object(response, api_key)
4✔
62

63
        resource_request_method = "%s_request" % make_path(resource)
4✔
64
        setattr(cls, resource_request_method, classmethod(nested_resource_request))
4✔
65

66
        for operation in operations:
4✔
67
            if operation == "create":
4✔
68

69
                def create_nested_resource(cls, id, **params):
4✔
70
                    url = getattr(cls, resource_url_method)(id)
4✔
71
                    return getattr(cls, resource_request_method)("post", url, **params)
4✔
72

73
                create_method = "create_%s" % resource
4✔
74
                setattr(cls, create_method, classmethod(create_nested_resource))
4✔
75

76
            elif operation == "retrieve":
4✔
77

78
                def retrieve_nested_resource(cls, id, nested_id=None, **params):
4✔
79
                    url = getattr(cls, resource_url_method)(id, nested_id=nested_id)
4✔
80
                    return getattr(cls, resource_request_method)("get", url, **params)
4✔
81

82
                retrieve_method = "retrieve_%s" % resource
4✔
83
                setattr(cls, retrieve_method, classmethod(retrieve_nested_resource))
4✔
84

85
            elif operation == "update":
4✔
86

87
                def modify_nested_resource(cls, id, nested_id, **params):
4✔
88
                    url = getattr(cls, resource_url_method)(id, nested_id)
4✔
89
                    return getattr(cls, resource_request_method)("post", url, **params)
4✔
90

91
                modify_method = "modify_%s" % resource
4✔
92
                setattr(cls, modify_method, classmethod(modify_nested_resource))
4✔
93

94
            elif operation == "delete":
4✔
95

96
                def delete_nested_resource(cls, id, nested_id, **params):
4✔
97
                    url = getattr(cls, resource_url_method)(id, nested_id)
4✔
98
                    return getattr(cls, resource_request_method)(
4✔
99
                        "delete", url, **params
100
                    )
101

102
                delete_method = "delete_%s" % resource
4✔
103
                setattr(cls, delete_method, classmethod(delete_nested_resource))
4✔
104

105
            elif operation == "list":
4✔
106

107
                def list_nested_resources(cls, id, **params):
4✔
108
                    url = getattr(cls, resource_url_method)(id)
4✔
109
                    return getattr(cls, resource_request_method)("get", url, **params)
4✔
110

111
                list_method = "list_%s" % make_path(resource)
4✔
112
                setattr(cls, list_method, classmethod(list_nested_resources))
4✔
113

114
            elif operation == "put":
4✔
115

116
                def update_nested_resource(cls, id, nested_id=None, **params):
4✔
117
                    url = getattr(cls, resource_url_method)(id, nested_id)
×
118
                    return getattr(cls, resource_request_method)("put", url, **params)
×
119

120
                update_method = "put_%s" % resource
4✔
121
                setattr(cls, update_method, classmethod(update_nested_resource))
4✔
122

123
            else:
124
                raise ValueError("Unknown operation: %s" % operation)
4✔
125

126
        return cls
4✔
127

128
    return wrapper
4✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc