Skip to content

Commit bcece14

Browse files
committed
Update SDK using contracts version 4bee7df0d3cdd15a989736740f2b096703d081c2
1 parent aeeb50b commit bcece14

9 files changed

Lines changed: 294 additions & 213 deletions

‎eolymp/course/class_service_http.py‎

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,10 @@ def __init__(self, transport, url="https://api.eolymp.com"):
1515
self.url = url
1616

1717
def CreateClass(self, request, **kwargs):
18-
path = "/classes"
18+
path = "/courses/"+urllib.parse.quote(request.course_id)+"/classes"
19+
20+
# Cleanup URL parameters to avoid any ambiguity
21+
request.course_id = ""
1922

2023
return self.transport.request(
2124
method="POST",
@@ -26,9 +29,10 @@ def CreateClass(self, request, **kwargs):
2629
)
2730

2831
def UpdateClass(self, request, **kwargs):
29-
path = "/classes/"+urllib.parse.quote(request.group_id)
32+
path = "/courses/"+urllib.parse.quote(request.course_id)+"/classes/"+urllib.parse.quote(request.group_id)
3033

3134
# Cleanup URL parameters to avoid any ambiguity
35+
request.course_id = ""
3236
request.group_id = ""
3337

3438
return self.transport.request(
@@ -40,9 +44,10 @@ def UpdateClass(self, request, **kwargs):
4044
)
4145

4246
def DeleteClass(self, request, **kwargs):
43-
path = "/classes/"+urllib.parse.quote(request.group_id)
47+
path = "/courses/"+urllib.parse.quote(request.course_id)+"/classes/"+urllib.parse.quote(request.group_id)
4448

4549
# Cleanup URL parameters to avoid any ambiguity
50+
request.course_id = ""
4651
request.group_id = ""
4752

4853
return self.transport.request(
@@ -54,9 +59,10 @@ def DeleteClass(self, request, **kwargs):
5459
)
5560

5661
def DescribeClass(self, request, **kwargs):
57-
path = "/classes/"+urllib.parse.quote(request.group_id)
62+
path = "/courses/"+urllib.parse.quote(request.course_id)+"/classes/"+urllib.parse.quote(request.group_id)
5863

5964
# Cleanup URL parameters to avoid any ambiguity
65+
request.course_id = ""
6066
request.group_id = ""
6167

6268
return self.transport.request(
@@ -68,7 +74,10 @@ def DescribeClass(self, request, **kwargs):
6874
)
6975

7076
def ListClasses(self, request, **kwargs):
71-
path = "/classes"
77+
path = "/courses/"+urllib.parse.quote(request.course_id)+"/classes"
78+
79+
# Cleanup URL parameters to avoid any ambiguity
80+
request.course_id = ""
7281

7382
return self.transport.request(
7483
method="GET",
@@ -79,9 +88,10 @@ def ListClasses(self, request, **kwargs):
7988
)
8089

8190
def ListClassAssignments(self, request, **kwargs):
82-
path = "/classes/"+urllib.parse.quote(request.group_id)+"/assignments"
91+
path = "/courses/"+urllib.parse.quote(request.course_id)+"/classes/"+urllib.parse.quote(request.group_id)+"/assignments"
8392

8493
# Cleanup URL parameters to avoid any ambiguity
94+
request.course_id = ""
8595
request.group_id = ""
8696

8797
return self.transport.request(
@@ -93,9 +103,10 @@ def ListClassAssignments(self, request, **kwargs):
93103
)
94104

95105
def UpdateClassAssignment(self, request, **kwargs):
96-
path = "/classes/"+urllib.parse.quote(request.group_id)+"/assignments"
106+
path = "/courses/"+urllib.parse.quote(request.course_id)+"/classes/"+urllib.parse.quote(request.group_id)+"/assignments"
97107

98108
# Cleanup URL parameters to avoid any ambiguity
109+
request.course_id = ""
99110
request.group_id = ""
100111

101112
return self.transport.request(
@@ -107,9 +118,10 @@ def UpdateClassAssignment(self, request, **kwargs):
107118
)
108119

109120
def DeleteClassAssignment(self, request, **kwargs):
110-
path = "/classes/"+urllib.parse.quote(request.group_id)+"/assignments"
121+
path = "/courses/"+urllib.parse.quote(request.course_id)+"/classes/"+urllib.parse.quote(request.group_id)+"/assignments"
111122

112123
# Cleanup URL parameters to avoid any ambiguity
124+
request.course_id = ""
113125
request.group_id = ""
114126

115127
return self.transport.request(

‎eolymp/course/class_service_pb2.py‎

Lines changed: 51 additions & 51 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎eolymp/course/class_service_pb2.pyi‎

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,11 @@ from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union
2020
DESCRIPTOR: _descriptor.FileDescriptor
2121

2222
class CreateClassInput(_message.Message):
23-
__slots__ = ()
23+
__slots__ = ("course_id",)
24+
COURSE_ID_FIELD_NUMBER: _ClassVar[int]
2425
CLASS_FIELD_NUMBER: _ClassVar[int]
25-
def __init__(self, **kwargs) -> None: ...
26+
course_id: str
27+
def __init__(self, course_id: _Optional[str] = ..., **kwargs) -> None: ...
2628

2729
class CreateClassOutput(_message.Message):
2830
__slots__ = ("class_id",)
@@ -31,7 +33,7 @@ class CreateClassOutput(_message.Message):
3133
def __init__(self, class_id: _Optional[str] = ...) -> None: ...
3234

3335
class UpdateClassInput(_message.Message):
34-
__slots__ = ("patch", "group_id")
36+
__slots__ = ("patch", "course_id", "group_id")
3537
class Patch(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
3638
__slots__ = ()
3739
ALL: _ClassVar[UpdateClassInput.Patch]
@@ -41,39 +43,45 @@ class UpdateClassInput(_message.Message):
4143
INACTIVE: UpdateClassInput.Patch
4244
ASSIGN_ALL: UpdateClassInput.Patch
4345
PATCH_FIELD_NUMBER: _ClassVar[int]
46+
COURSE_ID_FIELD_NUMBER: _ClassVar[int]
4447
GROUP_ID_FIELD_NUMBER: _ClassVar[int]
4548
CLASS_FIELD_NUMBER: _ClassVar[int]
4649
patch: _containers.RepeatedScalarFieldContainer[UpdateClassInput.Patch]
50+
course_id: str
4751
group_id: str
48-
def __init__(self, patch: _Optional[_Iterable[_Union[UpdateClassInput.Patch, str]]] = ..., group_id: _Optional[str] = ..., **kwargs) -> None: ...
52+
def __init__(self, patch: _Optional[_Iterable[_Union[UpdateClassInput.Patch, str]]] = ..., course_id: _Optional[str] = ..., group_id: _Optional[str] = ..., **kwargs) -> None: ...
4953

5054
class UpdateClassOutput(_message.Message):
5155
__slots__ = ()
5256
def __init__(self) -> None: ...
5357

5458
class DeleteClassInput(_message.Message):
55-
__slots__ = ("group_id",)
59+
__slots__ = ("course_id", "group_id")
60+
COURSE_ID_FIELD_NUMBER: _ClassVar[int]
5661
GROUP_ID_FIELD_NUMBER: _ClassVar[int]
62+
course_id: str
5763
group_id: str
58-
def __init__(self, group_id: _Optional[str] = ...) -> None: ...
64+
def __init__(self, course_id: _Optional[str] = ..., group_id: _Optional[str] = ...) -> None: ...
5965

6066
class DeleteClassOutput(_message.Message):
6167
__slots__ = ()
6268
def __init__(self) -> None: ...
6369

6470
class DescribeClassInput(_message.Message):
65-
__slots__ = ("group_id",)
71+
__slots__ = ("course_id", "group_id")
72+
COURSE_ID_FIELD_NUMBER: _ClassVar[int]
6673
GROUP_ID_FIELD_NUMBER: _ClassVar[int]
74+
course_id: str
6775
group_id: str
68-
def __init__(self, group_id: _Optional[str] = ...) -> None: ...
76+
def __init__(self, course_id: _Optional[str] = ..., group_id: _Optional[str] = ...) -> None: ...
6977

7078
class DescribeClassOutput(_message.Message):
7179
__slots__ = ()
7280
CLASS_FIELD_NUMBER: _ClassVar[int]
7381
def __init__(self, **kwargs) -> None: ...
7482

7583
class ListClassesInput(_message.Message):
76-
__slots__ = ("offset", "size", "search", "filters", "sort", "order")
84+
__slots__ = ("course_id", "offset", "size", "search", "filters", "sort", "order")
7785
class Sortable(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
7886
__slots__ = ()
7987
DEFAULT: _ClassVar[ListClassesInput.Sortable]
@@ -87,19 +95,21 @@ class ListClassesInput(_message.Message):
8795
group_id: _containers.RepeatedCompositeFieldContainer[_expression_pb2.ExpressionID]
8896
member_id: _containers.RepeatedCompositeFieldContainer[_expression_pb2.ExpressionID]
8997
def __init__(self, id: _Optional[_Iterable[_Union[_expression_pb2.ExpressionID, _Mapping]]] = ..., group_id: _Optional[_Iterable[_Union[_expression_pb2.ExpressionID, _Mapping]]] = ..., member_id: _Optional[_Iterable[_Union[_expression_pb2.ExpressionID, _Mapping]]] = ...) -> None: ...
98+
COURSE_ID_FIELD_NUMBER: _ClassVar[int]
9099
OFFSET_FIELD_NUMBER: _ClassVar[int]
91100
SIZE_FIELD_NUMBER: _ClassVar[int]
92101
SEARCH_FIELD_NUMBER: _ClassVar[int]
93102
FILTERS_FIELD_NUMBER: _ClassVar[int]
94103
SORT_FIELD_NUMBER: _ClassVar[int]
95104
ORDER_FIELD_NUMBER: _ClassVar[int]
105+
course_id: str
96106
offset: int
97107
size: int
98108
search: str
99109
filters: ListClassesInput.Filter
100110
sort: ListClassesInput.Sortable
101111
order: _direction_pb2.Direction
102-
def __init__(self, offset: _Optional[int] = ..., size: _Optional[int] = ..., search: _Optional[str] = ..., filters: _Optional[_Union[ListClassesInput.Filter, _Mapping]] = ..., sort: _Optional[_Union[ListClassesInput.Sortable, str]] = ..., order: _Optional[_Union[_direction_pb2.Direction, str]] = ...) -> None: ...
112+
def __init__(self, course_id: _Optional[str] = ..., offset: _Optional[int] = ..., size: _Optional[int] = ..., search: _Optional[str] = ..., filters: _Optional[_Union[ListClassesInput.Filter, _Mapping]] = ..., sort: _Optional[_Union[ListClassesInput.Sortable, str]] = ..., order: _Optional[_Union[_direction_pb2.Direction, str]] = ...) -> None: ...
103113

104114
class ListClassesOutput(_message.Message):
105115
__slots__ = ("total", "items")
@@ -110,25 +120,27 @@ class ListClassesOutput(_message.Message):
110120
def __init__(self, total: _Optional[int] = ..., items: _Optional[_Iterable[_Union[_class_pb2.Class, _Mapping]]] = ...) -> None: ...
111121

112122
class ListClassAssignmentsInput(_message.Message):
113-
__slots__ = ("group_id", "offset", "size", "search", "filters")
123+
__slots__ = ("course_id", "group_id", "offset", "size", "search", "filters")
114124
class Filter(_message.Message):
115125
__slots__ = ("id", "module_id")
116126
ID_FIELD_NUMBER: _ClassVar[int]
117127
MODULE_ID_FIELD_NUMBER: _ClassVar[int]
118128
id: _containers.RepeatedCompositeFieldContainer[_expression_pb2.ExpressionID]
119129
module_id: _containers.RepeatedCompositeFieldContainer[_expression_pb2.ExpressionID]
120130
def __init__(self, id: _Optional[_Iterable[_Union[_expression_pb2.ExpressionID, _Mapping]]] = ..., module_id: _Optional[_Iterable[_Union[_expression_pb2.ExpressionID, _Mapping]]] = ...) -> None: ...
131+
COURSE_ID_FIELD_NUMBER: _ClassVar[int]
121132
GROUP_ID_FIELD_NUMBER: _ClassVar[int]
122133
OFFSET_FIELD_NUMBER: _ClassVar[int]
123134
SIZE_FIELD_NUMBER: _ClassVar[int]
124135
SEARCH_FIELD_NUMBER: _ClassVar[int]
125136
FILTERS_FIELD_NUMBER: _ClassVar[int]
137+
course_id: str
126138
group_id: str
127139
offset: int
128140
size: int
129141
search: str
130142
filters: ListClassAssignmentsInput.Filter
131-
def __init__(self, group_id: _Optional[str] = ..., offset: _Optional[int] = ..., size: _Optional[int] = ..., search: _Optional[str] = ..., filters: _Optional[_Union[ListClassAssignmentsInput.Filter, _Mapping]] = ...) -> None: ...
143+
def __init__(self, course_id: _Optional[str] = ..., group_id: _Optional[str] = ..., offset: _Optional[int] = ..., size: _Optional[int] = ..., search: _Optional[str] = ..., filters: _Optional[_Union[ListClassAssignmentsInput.Filter, _Mapping]] = ...) -> None: ...
132144

133145
class ListClassAssignmentsOutput(_message.Message):
134146
__slots__ = ("total", "items")
@@ -139,32 +151,36 @@ class ListClassAssignmentsOutput(_message.Message):
139151
def __init__(self, total: _Optional[int] = ..., items: _Optional[_Iterable[_Union[_assignment_pb2.Assignment, _Mapping]]] = ...) -> None: ...
140152

141153
class UpdateClassAssignmentInput(_message.Message):
142-
__slots__ = ("group_id", "module_id", "start_after", "complete_before", "duration", "upsolve")
154+
__slots__ = ("course_id", "group_id", "module_id", "start_after", "complete_before", "duration", "upsolve")
155+
COURSE_ID_FIELD_NUMBER: _ClassVar[int]
143156
GROUP_ID_FIELD_NUMBER: _ClassVar[int]
144157
MODULE_ID_FIELD_NUMBER: _ClassVar[int]
145158
START_AFTER_FIELD_NUMBER: _ClassVar[int]
146159
COMPLETE_BEFORE_FIELD_NUMBER: _ClassVar[int]
147160
DURATION_FIELD_NUMBER: _ClassVar[int]
148161
UPSOLVE_FIELD_NUMBER: _ClassVar[int]
162+
course_id: str
149163
group_id: str
150164
module_id: str
151165
start_after: _timestamp_pb2.Timestamp
152166
complete_before: _timestamp_pb2.Timestamp
153167
duration: int
154168
upsolve: bool
155-
def __init__(self, group_id: _Optional[str] = ..., module_id: _Optional[str] = ..., start_after: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., complete_before: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., duration: _Optional[int] = ..., upsolve: _Optional[bool] = ...) -> None: ...
169+
def __init__(self, course_id: _Optional[str] = ..., group_id: _Optional[str] = ..., module_id: _Optional[str] = ..., start_after: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., complete_before: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., duration: _Optional[int] = ..., upsolve: _Optional[bool] = ...) -> None: ...
156170

157171
class UpdateClassAssignmentOutput(_message.Message):
158172
__slots__ = ()
159173
def __init__(self) -> None: ...
160174

161175
class DeleteClassAssignmentInput(_message.Message):
162-
__slots__ = ("group_id", "module_id")
176+
__slots__ = ("course_id", "group_id", "module_id")
177+
COURSE_ID_FIELD_NUMBER: _ClassVar[int]
163178
GROUP_ID_FIELD_NUMBER: _ClassVar[int]
164179
MODULE_ID_FIELD_NUMBER: _ClassVar[int]
180+
course_id: str
165181
group_id: str
166182
module_id: str
167-
def __init__(self, group_id: _Optional[str] = ..., module_id: _Optional[str] = ...) -> None: ...
183+
def __init__(self, course_id: _Optional[str] = ..., group_id: _Optional[str] = ..., module_id: _Optional[str] = ...) -> None: ...
168184

169185
class DeleteClassAssignmentOutput(_message.Message):
170186
__slots__ = ()

‎eolymp/course/material_service_http.py‎

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,10 @@ def __init__(self, transport, url="https://api.eolymp.com"):
1515
self.url = url
1616

1717
def CreateMaterial(self, request, **kwargs):
18-
path = "/materials"
18+
path = "/courses/"+urllib.parse.quote(request.course_id)+"/materials"
19+
20+
# Cleanup URL parameters to avoid any ambiguity
21+
request.course_id = ""
1922

2023
return self.transport.request(
2124
method="POST",
@@ -26,9 +29,10 @@ def CreateMaterial(self, request, **kwargs):
2629
)
2730

2831
def UpdateMaterial(self, request, **kwargs):
29-
path = "/materials/"+urllib.parse.quote(request.material_id)
32+
path = "/courses/"+urllib.parse.quote(request.course_id)+"/materials/"+urllib.parse.quote(request.material_id)
3033

3134
# Cleanup URL parameters to avoid any ambiguity
35+
request.course_id = ""
3236
request.material_id = ""
3337

3438
return self.transport.request(
@@ -40,9 +44,10 @@ def UpdateMaterial(self, request, **kwargs):
4044
)
4145

4246
def MoveMaterial(self, request, **kwargs):
43-
path = "/materials/"+urllib.parse.quote(request.material_id)+"/move"
47+
path = "/courses/"+urllib.parse.quote(request.course_id)+"/materials/"+urllib.parse.quote(request.material_id)+"/move"
4448

4549
# Cleanup URL parameters to avoid any ambiguity
50+
request.course_id = ""
4651
request.material_id = ""
4752

4853
return self.transport.request(
@@ -54,9 +59,10 @@ def MoveMaterial(self, request, **kwargs):
5459
)
5560

5661
def DeleteMaterial(self, request, **kwargs):
57-
path = "/materials/"+urllib.parse.quote(request.material_id)
62+
path = "/courses/"+urllib.parse.quote(request.course_id)+"/materials/"+urllib.parse.quote(request.material_id)
5863

5964
# Cleanup URL parameters to avoid any ambiguity
65+
request.course_id = ""
6066
request.material_id = ""
6167

6268
return self.transport.request(
@@ -68,9 +74,10 @@ def DeleteMaterial(self, request, **kwargs):
6874
)
6975

7076
def DescribeMaterial(self, request, **kwargs):
71-
path = "/materials/"+urllib.parse.quote(request.material_id)
77+
path = "/courses/"+urllib.parse.quote(request.course_id)+"/materials/"+urllib.parse.quote(request.material_id)
7278

7379
# Cleanup URL parameters to avoid any ambiguity
80+
request.course_id = ""
7481
request.material_id = ""
7582

7683
return self.transport.request(
@@ -82,7 +89,10 @@ def DescribeMaterial(self, request, **kwargs):
8289
)
8390

8491
def ListMaterials(self, request, **kwargs):
85-
path = "/materials"
92+
path = "/courses/"+urllib.parse.quote(request.course_id)+"/materials"
93+
94+
# Cleanup URL parameters to avoid any ambiguity
95+
request.course_id = ""
8696

8797
return self.transport.request(
8898
method="GET",
@@ -93,9 +103,10 @@ def ListMaterials(self, request, **kwargs):
93103
)
94104

95105
def ReportProgress(self, request, **kwargs):
96-
path = "/materials/"+urllib.parse.quote(request.material_id)+"/progress"
106+
path = "/courses/"+urllib.parse.quote(request.course_id)+"/materials/"+urllib.parse.quote(request.material_id)+"/progress"
97107

98108
# Cleanup URL parameters to avoid any ambiguity
109+
request.course_id = ""
99110
request.material_id = ""
100111

101112
return self.transport.request(
@@ -107,9 +118,10 @@ def ReportProgress(self, request, **kwargs):
107118
)
108119

109120
def GradeMaterial(self, request, **kwargs):
110-
path = "/materials/"+urllib.parse.quote(request.material_id)+"/grade"
121+
path = "/courses/"+urllib.parse.quote(request.course_id)+"/materials/"+urllib.parse.quote(request.material_id)+"/grade"
111122

112123
# Cleanup URL parameters to avoid any ambiguity
124+
request.course_id = ""
113125
request.material_id = ""
114126

115127
return self.transport.request(

0 commit comments

Comments
 (0)