1.1.0-alpha+5
This commit is contained in:
parent
e3e25453b6
commit
27ca19bbea
19 changed files with 438 additions and 421 deletions
|
@ -2,18 +2,24 @@
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="7b89ff1e-1260-4dcf-9c3d-345de0471ea1" name="Default" comment="">
|
<list default="true" id="7b89ff1e-1260-4dcf-9c3d-345de0471ea1" name="Default" comment="">
|
||||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/lib/src/http/injection.dart" />
|
<change type="DELETED" beforePath="$PROJECT_DIR$/lib/src/http/base_middleware.dart" afterPath="" />
|
||||||
|
<change type="DELETED" beforePath="$PROJECT_DIR$/lib/src/http/base_plugin.dart" afterPath="" />
|
||||||
|
<change type="DELETED" beforePath="$PROJECT_DIR$/test/util_test.dart" afterPath="" />
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/CHANGELOG.md" afterPath="$PROJECT_DIR$/CHANGELOG.md" />
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/CHANGELOG.md" afterPath="$PROJECT_DIR$/CHANGELOG.md" />
|
||||||
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/example/json.dart" afterPath="$PROJECT_DIR$/example/json.dart" />
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/lib/src/http/angel_base.dart" afterPath="$PROJECT_DIR$/lib/src/http/angel_base.dart" />
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/lib/src/http/angel_base.dart" afterPath="$PROJECT_DIR$/lib/src/http/angel_base.dart" />
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/lib/src/http/controller.dart" afterPath="$PROJECT_DIR$/lib/src/http/controller.dart" />
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/lib/src/http/controller.dart" afterPath="$PROJECT_DIR$/lib/src/http/controller.dart" />
|
||||||
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/lib/src/http/http.dart" afterPath="$PROJECT_DIR$/lib/src/http/http.dart" />
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/lib/src/http/request_context.dart" afterPath="$PROJECT_DIR$/lib/src/http/request_context.dart" />
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/lib/src/http/request_context.dart" afterPath="$PROJECT_DIR$/lib/src/http/request_context.dart" />
|
||||||
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/lib/src/http/response_context.dart" afterPath="$PROJECT_DIR$/lib/src/http/response_context.dart" />
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/lib/src/http/routable.dart" afterPath="$PROJECT_DIR$/lib/src/http/routable.dart" />
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/lib/src/http/routable.dart" afterPath="$PROJECT_DIR$/lib/src/http/routable.dart" />
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/lib/src/http/server.dart" afterPath="$PROJECT_DIR$/lib/src/http/server.dart" />
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/lib/src/http/server.dart" afterPath="$PROJECT_DIR$/lib/src/http/server.dart" />
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/pubspec.yaml" afterPath="$PROJECT_DIR$/pubspec.yaml" />
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/all.dart" afterPath="$PROJECT_DIR$/test/all.dart" />
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/precontained_test.dart" afterPath="$PROJECT_DIR$/test/precontained_test.dart" />
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/controller_test.dart" afterPath="$PROJECT_DIR$/test/controller_test.dart" />
|
||||||
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/di_test.dart" afterPath="$PROJECT_DIR$/test/di_test.dart" />
|
||||||
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/routing_test.dart" afterPath="$PROJECT_DIR$/test/routing_test.dart" />
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/server_test.dart" afterPath="$PROJECT_DIR$/test/server_test.dart" />
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/server_test.dart" afterPath="$PROJECT_DIR$/test/server_test.dart" />
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/util_test.dart" afterPath="$PROJECT_DIR$/test/util_test.dart" />
|
|
||||||
</list>
|
</list>
|
||||||
<ignored path="$PROJECT_DIR$/.tmp/" />
|
<ignored path="$PROJECT_DIR$/.tmp/" />
|
||||||
<ignored path="$PROJECT_DIR$/temp/" />
|
<ignored path="$PROJECT_DIR$/temp/" />
|
||||||
|
@ -36,23 +42,11 @@
|
||||||
</component>
|
</component>
|
||||||
<component name="FileEditorManager">
|
<component name="FileEditorManager">
|
||||||
<leaf SIDE_TABS_SIZE_LIMIT_KEY="375">
|
<leaf SIDE_TABS_SIZE_LIMIT_KEY="375">
|
||||||
<file leaf-file-name="request_context.dart" pinned="false" current-in-tab="true">
|
|
||||||
<entry file="file://$PROJECT_DIR$/lib/src/http/request_context.dart">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="249">
|
|
||||||
<caret line="43" column="63" lean-forward="false" selection-start-line="43" selection-start-column="63" selection-end-line="43" selection-end-column="63" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#47#67#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
<file leaf-file-name="controller.dart" pinned="false" current-in-tab="false">
|
<file leaf-file-name="controller.dart" pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/lib/src/http/controller.dart">
|
<entry file="file://$PROJECT_DIR$/lib/src/http/controller.dart">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="-786">
|
<state relative-caret-position="139">
|
||||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
<caret line="54" column="8" lean-forward="false" selection-start-line="54" selection-start-column="8" selection-end-line="54" selection-end-column="8" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#42#62#0" expanded="true" />
|
<element signature="e#42#62#0" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
|
@ -60,26 +54,60 @@
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
</file>
|
</file>
|
||||||
<file leaf-file-name="routable.dart" pinned="false" current-in-tab="false">
|
<file leaf-file-name="server.dart" pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/lib/src/http/routable.dart">
|
<entry file="file://$PROJECT_DIR$/lib/src/http/server.dart">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="-1166">
|
<state relative-caret-position="165">
|
||||||
<caret line="13" column="0" lean-forward="true" selection-start-line="13" selection-start-column="0" selection-end-line="13" selection-end-column="0" />
|
<caret line="13" column="34" lean-forward="false" selection-start-line="13" selection-start-column="34" selection-end-line="13" selection-end-column="34" />
|
||||||
<folding>
|
<folding />
|
||||||
<element signature="e#40#60#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
</file>
|
</file>
|
||||||
<file leaf-file-name="service.dart" pinned="false" current-in-tab="false">
|
<file leaf-file-name="README.md" pinned="false" current-in-tab="true">
|
||||||
<entry file="file://$PROJECT_DIR$/lib/src/http/service.dart">
|
<entry file="file://$PROJECT_DIR$/README.md">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
|
||||||
<state relative-caret-position="0">
|
<state split_layout="SPLIT">
|
||||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
<first_editor relative-caret-position="285">
|
||||||
|
<caret line="19" column="6" lean-forward="true" selection-start-line="19" selection-start-column="6" selection-end-line="19" selection-end-column="6" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#39#59#0" expanded="true" />
|
<marker date="1506049250000" expanded="true" signature="588:776" ph="{...}" />
|
||||||
</folding>
|
</folding>
|
||||||
|
</first_editor>
|
||||||
|
<second_editor />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
<file leaf-file-name="routable.dart" pinned="false" current-in-tab="false">
|
||||||
|
<entry file="file://$PROJECT_DIR$/lib/src/http/routable.dart">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="90">
|
||||||
|
<caret line="6" column="25" lean-forward="false" selection-start-line="6" selection-start-column="25" selection-end-line="6" selection-end-column="25" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
<file leaf-file-name="CHANGELOG.md" pinned="false" current-in-tab="false">
|
||||||
|
<entry file="file://$PROJECT_DIR$/CHANGELOG.md">
|
||||||
|
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
|
||||||
|
<state split_layout="SPLIT">
|
||||||
|
<first_editor relative-caret-position="105">
|
||||||
|
<caret line="7" column="85" lean-forward="false" selection-start-line="7" selection-start-column="85" selection-end-line="7" selection-end-column="85" />
|
||||||
|
<folding />
|
||||||
|
</first_editor>
|
||||||
|
<second_editor />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
<file leaf-file-name="server_test.dart" pinned="false" current-in-tab="false">
|
||||||
|
<entry file="file://$PROJECT_DIR$/test/server_test.dart">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="75">
|
||||||
|
<caret line="11" column="8" lean-forward="false" selection-start-line="11" selection-start-column="8" selection-end-line="11" selection-end-column="8" />
|
||||||
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
|
@ -87,13 +115,49 @@
|
||||||
<file leaf-file-name="response_context.dart" pinned="false" current-in-tab="false">
|
<file leaf-file-name="response_context.dart" pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/lib/src/http/response_context.dart">
|
<entry file="file://$PROJECT_DIR$/lib/src/http/response_context.dart">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="6345">
|
<state relative-caret-position="139">
|
||||||
<caret line="432" column="10" lean-forward="false" selection-start-line="432" selection-start-column="10" selection-end-line="432" selection-end-column="10" />
|
<caret line="264" column="63" lean-forward="false" selection-start-line="264" selection-start-column="63" selection-end-line="264" selection-end-column="63" />
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
</file>
|
</file>
|
||||||
|
<file leaf-file-name="routing_test.dart" pinned="false" current-in-tab="false">
|
||||||
|
<entry file="file://$PROJECT_DIR$/test/routing_test.dart">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="168">
|
||||||
|
<caret line="38" column="21" lean-forward="true" selection-start-line="38" selection-start-column="21" selection-end-line="38" selection-end-column="21" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#22#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
<file leaf-file-name="di_test.dart" pinned="false" current-in-tab="false">
|
||||||
|
<entry file="file://$PROJECT_DIR$/test/di_test.dart">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="420">
|
||||||
|
<caret line="28" column="62" lean-forward="false" selection-start-line="28" selection-start-column="62" selection-end-line="28" selection-end-column="62" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#22#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
<file leaf-file-name="controller_test.dart" pinned="false" current-in-tab="false">
|
||||||
|
<entry file="file://$PROJECT_DIR$/test/controller_test.dart">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="180">
|
||||||
|
<caret line="95" column="61" lean-forward="false" selection-start-line="95" selection-start-column="45" selection-end-line="95" selection-end-column="61" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#20#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
</leaf>
|
</leaf>
|
||||||
</component>
|
</component>
|
||||||
<component name="FileTemplateManagerImpl">
|
<component name="FileTemplateManagerImpl">
|
||||||
|
@ -105,14 +169,6 @@
|
||||||
</component>
|
</component>
|
||||||
<component name="FindInProjectRecents">
|
<component name="FindInProjectRecents">
|
||||||
<findStrings>
|
<findStrings>
|
||||||
<find>deprecated</find>
|
|
||||||
<find>close!</find>
|
|
||||||
<find>close(</find>
|
|
||||||
<find>addStream</find>
|
|
||||||
<find>Angel(</find>
|
|
||||||
<find>handleRe</find>
|
|
||||||
<find>createZ</find>
|
|
||||||
<find>zone</find>
|
|
||||||
<find>print(</find>
|
<find>print(</find>
|
||||||
<find>handleaNGE</find>
|
<find>handleaNGE</find>
|
||||||
<find>stderr</find>
|
<find>stderr</find>
|
||||||
|
@ -135,6 +191,14 @@
|
||||||
<find>noSuchM</find>
|
<find>noSuchM</find>
|
||||||
<find>preInj</find>
|
<find>preInj</find>
|
||||||
<find>REQU</find>
|
<find>REQU</find>
|
||||||
|
<find>registermid</find>
|
||||||
|
<find>custom(</find>
|
||||||
|
<find>errorHand</find>
|
||||||
|
<find>god.deserialize</find>
|
||||||
|
<find>registerMi</find>
|
||||||
|
<find>addStr</find>
|
||||||
|
<find>Stopwatc</find>
|
||||||
|
<find>_controllers</find>
|
||||||
</findStrings>
|
</findStrings>
|
||||||
<replaceStrings>
|
<replaceStrings>
|
||||||
<replace>_isClosed</replace>
|
<replace>_isClosed</replace>
|
||||||
|
@ -150,6 +214,7 @@
|
||||||
<replace>onController</replace>
|
<replace>onController</replace>
|
||||||
<replace>if (_isClosed && !_useStream)</replace>
|
<replace>if (_isClosed && !_useStream)</replace>
|
||||||
<replace>logger?.warning</replace>
|
<replace>logger?.warning</replace>
|
||||||
|
<replace>JSON.decode</replace>
|
||||||
</replaceStrings>
|
</replaceStrings>
|
||||||
<dirStrings>
|
<dirStrings>
|
||||||
<dir>C:\Users\thosa\Source\Angel\framework\lib</dir>
|
<dir>C:\Users\thosa\Source\Angel\framework\lib</dir>
|
||||||
|
@ -157,6 +222,7 @@
|
||||||
<dir>C:\Users\thosa\Source\Angel\framework\test</dir>
|
<dir>C:\Users\thosa\Source\Angel\framework\test</dir>
|
||||||
<dir>$PROJECT_DIR$/lib</dir>
|
<dir>$PROJECT_DIR$/lib</dir>
|
||||||
<dir>$PROJECT_DIR$/lib/src</dir>
|
<dir>$PROJECT_DIR$/lib/src</dir>
|
||||||
|
<dir>$PROJECT_DIR$/test</dir>
|
||||||
</dirStrings>
|
</dirStrings>
|
||||||
</component>
|
</component>
|
||||||
<component name="Git.Settings">
|
<component name="Git.Settings">
|
||||||
|
@ -170,7 +236,6 @@
|
||||||
<component name="IdeDocumentHistory">
|
<component name="IdeDocumentHistory">
|
||||||
<option name="CHANGED_PATHS">
|
<option name="CHANGED_PATHS">
|
||||||
<list>
|
<list>
|
||||||
<option value="$PROJECT_DIR$/test/precontained_test.dart" />
|
|
||||||
<option value="$PROJECT_DIR$/test/general_test.dart" />
|
<option value="$PROJECT_DIR$/test/general_test.dart" />
|
||||||
<option value="$PROJECT_DIR$/README.md" />
|
<option value="$PROJECT_DIR$/README.md" />
|
||||||
<option value="$PROJECT_DIR$/test/view_generator_test.dart" />
|
<option value="$PROJECT_DIR$/test/view_generator_test.dart" />
|
||||||
|
@ -188,12 +253,8 @@
|
||||||
<option value="$PROJECT_DIR$/performance/hello/raw.dart" />
|
<option value="$PROJECT_DIR$/performance/hello/raw.dart" />
|
||||||
<option value="$PROJECT_DIR$/performance/hello/angel.md" />
|
<option value="$PROJECT_DIR$/performance/hello/angel.md" />
|
||||||
<option value="$PROJECT_DIR$/performance/hello/raw.md" />
|
<option value="$PROJECT_DIR$/performance/hello/raw.md" />
|
||||||
<option value="$PROJECT_DIR$/test/controller_test.dart" />
|
|
||||||
<option value="$PROJECT_DIR$/test/di_test.dart" />
|
|
||||||
<option value="$PROJECT_DIR$/test/routing_test.dart" />
|
|
||||||
<option value="$PROJECT_DIR$/tool/travis.sh" />
|
<option value="$PROJECT_DIR$/tool/travis.sh" />
|
||||||
<option value="$PROJECT_DIR$/test/repeat_request_test.dart" />
|
<option value="$PROJECT_DIR$/test/repeat_request_test.dart" />
|
||||||
<option value="$PROJECT_DIR$/test/all.dart" />
|
|
||||||
<option value="$PROJECT_DIR$/lib/src/http/metadata.dart" />
|
<option value="$PROJECT_DIR$/lib/src/http/metadata.dart" />
|
||||||
<option value="$PROJECT_DIR$/lib/src/http/fatal_error.dart" />
|
<option value="$PROJECT_DIR$/lib/src/http/fatal_error.dart" />
|
||||||
<option value="$PROJECT_DIR$/lib/src/http/angel_http_exception.dart" />
|
<option value="$PROJECT_DIR$/lib/src/http/angel_http_exception.dart" />
|
||||||
|
@ -201,26 +262,31 @@
|
||||||
<option value="$PROJECT_DIR$/lib/hooks.dart" />
|
<option value="$PROJECT_DIR$/lib/hooks.dart" />
|
||||||
<option value="$PROJECT_DIR$/lib/src/http/base_middleware.dart" />
|
<option value="$PROJECT_DIR$/lib/src/http/base_middleware.dart" />
|
||||||
<option value="$PROJECT_DIR$/lib/src/fast_name_from_symbol.dart" />
|
<option value="$PROJECT_DIR$/lib/src/fast_name_from_symbol.dart" />
|
||||||
<option value="$PROJECT_DIR$/lib/src/http/response_context.dart" />
|
|
||||||
<option value="$PROJECT_DIR$/lib/src/http/hooked_service.dart" />
|
<option value="$PROJECT_DIR$/lib/src/http/hooked_service.dart" />
|
||||||
<option value="$PROJECT_DIR$/lib/src/http/map_service.dart" />
|
<option value="$PROJECT_DIR$/lib/src/http/map_service.dart" />
|
||||||
<option value="$PROJECT_DIR$/lib/src/http/service.dart" />
|
<option value="$PROJECT_DIR$/lib/src/http/service.dart" />
|
||||||
<option value="$PROJECT_DIR$/lib/src/http/http.dart" />
|
|
||||||
<option value="$PROJECT_DIR$/test/hooked_test.dart" />
|
<option value="$PROJECT_DIR$/test/hooked_test.dart" />
|
||||||
<option value="$PROJECT_DIR$/test/primitives_test.dart" />
|
<option value="$PROJECT_DIR$/test/primitives_test.dart" />
|
||||||
<option value="$PROJECT_DIR$/test/services_test.dart" />
|
<option value="$PROJECT_DIR$/test/services_test.dart" />
|
||||||
<option value="$PROJECT_DIR$/test/server_test.dart" />
|
|
||||||
<option value="$PROJECT_DIR$/test/streaming_test.dart" />
|
<option value="$PROJECT_DIR$/test/streaming_test.dart" />
|
||||||
<option value="$PROJECT_DIR$/lib/src/http/routable.dart" />
|
|
||||||
<option value="$PROJECT_DIR$/performance/hello/main.dart" />
|
<option value="$PROJECT_DIR$/performance/hello/main.dart" />
|
||||||
<option value="$PROJECT_DIR$/test/encoders_buffer_test.dart" />
|
<option value="$PROJECT_DIR$/test/encoders_buffer_test.dart" />
|
||||||
<option value="$PROJECT_DIR$/lib/src/http/angel_base.dart" />
|
|
||||||
<option value="$PROJECT_DIR$/lib/src/http/controller.dart" />
|
|
||||||
<option value="$PROJECT_DIR$/lib/src/http/injection.dart" />
|
<option value="$PROJECT_DIR$/lib/src/http/injection.dart" />
|
||||||
<option value="$PROJECT_DIR$/lib/src/http/server.dart" />
|
|
||||||
<option value="$PROJECT_DIR$/CHANGELOG.md" />
|
|
||||||
<option value="$PROJECT_DIR$/pubspec.yaml" />
|
<option value="$PROJECT_DIR$/pubspec.yaml" />
|
||||||
<option value="$PROJECT_DIR$/lib/src/http/request_context.dart" />
|
<option value="$PROJECT_DIR$/lib/src/http/request_context.dart" />
|
||||||
|
<option value="$PROJECT_DIR$/example/json.dart" />
|
||||||
|
<option value="$PROJECT_DIR$/lib/src/http/angel_base.dart" />
|
||||||
|
<option value="$PROJECT_DIR$/test/all.dart" />
|
||||||
|
<option value="$PROJECT_DIR$/lib/src/http/http.dart" />
|
||||||
|
<option value="$PROJECT_DIR$/test/routing_test.dart" />
|
||||||
|
<option value="$PROJECT_DIR$/lib/src/http/response_context.dart" />
|
||||||
|
<option value="$PROJECT_DIR$/lib/src/http/routable.dart" />
|
||||||
|
<option value="$PROJECT_DIR$/lib/src/http/controller.dart" />
|
||||||
|
<option value="$PROJECT_DIR$/CHANGELOG.md" />
|
||||||
|
<option value="$PROJECT_DIR$/test/controller_test.dart" />
|
||||||
|
<option value="$PROJECT_DIR$/test/di_test.dart" />
|
||||||
|
<option value="$PROJECT_DIR$/test/server_test.dart" />
|
||||||
|
<option value="$PROJECT_DIR$/lib/src/http/server.dart" />
|
||||||
</list>
|
</list>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
|
@ -231,7 +297,7 @@
|
||||||
<sorting>DEFINITION_ORDER</sorting>
|
<sorting>DEFINITION_ORDER</sorting>
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectFrameBounds">
|
<component name="ProjectFrameBounds">
|
||||||
<option name="x" value="149" />
|
<option name="x" value="166" />
|
||||||
<option name="y" value="23" />
|
<option name="y" value="23" />
|
||||||
<option name="width" value="1168" />
|
<option name="width" value="1168" />
|
||||||
<option name="height" value="797" />
|
<option name="height" value="797" />
|
||||||
|
@ -254,6 +320,7 @@
|
||||||
<foldersAlwaysOnTop value="true" />
|
<foldersAlwaysOnTop value="true" />
|
||||||
</navigator>
|
</navigator>
|
||||||
<panes>
|
<panes>
|
||||||
|
<pane id="PackagesPane" />
|
||||||
<pane id="Scratches" />
|
<pane id="Scratches" />
|
||||||
<pane id="Scope">
|
<pane id="Scope">
|
||||||
<subPane subId="Project Files">
|
<subPane subId="Project Files">
|
||||||
|
@ -299,7 +366,6 @@
|
||||||
<select />
|
<select />
|
||||||
</subPane>
|
</subPane>
|
||||||
</pane>
|
</pane>
|
||||||
<pane id="PackagesPane" />
|
|
||||||
<pane id="ProjectPane" />
|
<pane id="ProjectPane" />
|
||||||
<pane id="AndroidView" />
|
<pane id="AndroidView" />
|
||||||
</panes>
|
</panes>
|
||||||
|
@ -450,6 +516,11 @@
|
||||||
<option name="scope" value="GROUP_OR_TEST_BY_NAME" />
|
<option name="scope" value="GROUP_OR_TEST_BY_NAME" />
|
||||||
<option name="testName" value="default view generator" />
|
<option name="testName" value="default view generator" />
|
||||||
</configuration>
|
</configuration>
|
||||||
|
<configuration name="only match route with matching method in routing_test.dart" type="DartTestRunConfigurationType" factoryName="Dart Test" nameIsGenerated="true">
|
||||||
|
<option name="filePath" value="$PROJECT_DIR$/test/routing_test.dart" />
|
||||||
|
<option name="scope" value="GROUP_OR_TEST_BY_NAME" />
|
||||||
|
<option name="testName" value="only match route with matching method" />
|
||||||
|
</configuration>
|
||||||
<configuration name="only uses one encoder in encoders_buffer_test.dart" type="DartTestRunConfigurationType" factoryName="Dart Test" nameIsGenerated="true">
|
<configuration name="only uses one encoder in encoders_buffer_test.dart" type="DartTestRunConfigurationType" factoryName="Dart Test" nameIsGenerated="true">
|
||||||
<option name="filePath" value="$PROJECT_DIR$/test/encoders_buffer_test.dart" />
|
<option name="filePath" value="$PROJECT_DIR$/test/encoders_buffer_test.dart" />
|
||||||
<option name="scope" value="GROUP_OR_TEST_BY_NAME" />
|
<option name="scope" value="GROUP_OR_TEST_BY_NAME" />
|
||||||
|
@ -495,36 +566,37 @@
|
||||||
<option name="filePath" value="$PROJECT_DIR$/test/typed_service_test.dart" />
|
<option name="filePath" value="$PROJECT_DIR$/test/typed_service_test.dart" />
|
||||||
<option name="testName" value="typed_service_test.dart" />
|
<option name="testName" value="typed_service_test.dart" />
|
||||||
</configuration>
|
</configuration>
|
||||||
<list size="29">
|
<list size="30">
|
||||||
<item index="0" class="java.lang.String" itemvalue="Dart Test.only uses one encoder in encoders_buffer_test.dart" />
|
<item index="0" class="java.lang.String" itemvalue="Dart Test.only match route with matching method in routing_test.dart" />
|
||||||
<item index="1" class="java.lang.String" itemvalue="Dart Test.can send html in server_test.dart" />
|
<item index="1" class="java.lang.String" itemvalue="Dart Test.only uses one encoder in encoders_buffer_test.dart" />
|
||||||
<item index="2" class="java.lang.String" itemvalue="Dart Command Line App.performance::hello" />
|
<item index="2" class="java.lang.String" itemvalue="Dart Test.can send html in server_test.dart" />
|
||||||
<item index="3" class="java.lang.String" itemvalue="Dart Command Line App.All Tests (for coverage)" />
|
<item index="3" class="java.lang.String" itemvalue="Dart Command Line App.performance::hello" />
|
||||||
<item index="4" class="java.lang.String" itemvalue="Dart Command Line App.All Tests (PRODUCTION)" />
|
<item index="4" class="java.lang.String" itemvalue="Dart Command Line App.All Tests (for coverage)" />
|
||||||
<item index="5" class="java.lang.String" itemvalue="Dart Command Line App.performance::hello::raw" />
|
<item index="5" class="java.lang.String" itemvalue="Dart Command Line App.All Tests (PRODUCTION)" />
|
||||||
<item index="6" class="java.lang.String" itemvalue="Dart Test.tests in primitives_test.dart" />
|
<item index="6" class="java.lang.String" itemvalue="Dart Command Line App.performance::hello::raw" />
|
||||||
<item index="7" class="java.lang.String" itemvalue="Dart Test.tests in repeat_request_test.dart" />
|
<item index="7" class="java.lang.String" itemvalue="Dart Test.tests in primitives_test.dart" />
|
||||||
<item index="8" class="java.lang.String" itemvalue="Dart Test.tests in encoders_buffer_test.dart" />
|
<item index="8" class="java.lang.String" itemvalue="Dart Test.tests in repeat_request_test.dart" />
|
||||||
<item index="9" class="java.lang.String" itemvalue="Dart Test.tests in streaming_test.dart" />
|
<item index="9" class="java.lang.String" itemvalue="Dart Test.tests in encoders_buffer_test.dart" />
|
||||||
<item index="10" class="java.lang.String" itemvalue="Dart Test.can create data in services_test.dart" />
|
<item index="10" class="java.lang.String" itemvalue="Dart Test.tests in streaming_test.dart" />
|
||||||
<item index="11" class="java.lang.String" itemvalue="Dart Test.can delete data in services_test.dart" />
|
<item index="11" class="java.lang.String" itemvalue="Dart Test.can create data in services_test.dart" />
|
||||||
<item index="12" class="java.lang.String" itemvalue="Dart Test.can use app.properties like members in util_test.dart" />
|
<item index="12" class="java.lang.String" itemvalue="Dart Test.can delete data in services_test.dart" />
|
||||||
<item index="13" class="java.lang.String" itemvalue="Dart Test.tests in accepts_test.dart" />
|
<item index="13" class="java.lang.String" itemvalue="Dart Test.can use app.properties like members in util_test.dart" />
|
||||||
<item index="14" class="java.lang.String" itemvalue="Dart Test.contains provider in before and after in hooked_test.dart" />
|
<item index="14" class="java.lang.String" itemvalue="Dart Test.tests in accepts_test.dart" />
|
||||||
<item index="15" class="java.lang.String" itemvalue="Dart Test.tests in server_test.dart" />
|
<item index="15" class="java.lang.String" itemvalue="Dart Test.contains provider in before and after in hooked_test.dart" />
|
||||||
<item index="16" class="java.lang.String" itemvalue="Dart Test.tests in anonymous_service_test.dart" />
|
<item index="16" class="java.lang.String" itemvalue="Dart Test.tests in server_test.dart" />
|
||||||
<item index="17" class="java.lang.String" itemvalue="Dart Test.tests in exception_test.dart" />
|
<item index="17" class="java.lang.String" itemvalue="Dart Test.tests in anonymous_service_test.dart" />
|
||||||
<item index="18" class="java.lang.String" itemvalue="Dart Test.tests in typed_service_test.dart" />
|
<item index="18" class="java.lang.String" itemvalue="Dart Test.tests in exception_test.dart" />
|
||||||
<item index="19" class="java.lang.String" itemvalue="Dart Test.default view generator in view_generator_test.dart" />
|
<item index="19" class="java.lang.String" itemvalue="Dart Test.tests in typed_service_test.dart" />
|
||||||
<item index="20" class="java.lang.String" itemvalue="Dart Test.tests in precontained_test.dart" />
|
<item index="20" class="java.lang.String" itemvalue="Dart Test.default view generator in view_generator_test.dart" />
|
||||||
<item index="21" class="java.lang.String" itemvalue="Dart Test.Controller Tests" />
|
<item index="21" class="java.lang.String" itemvalue="Dart Test.tests in precontained_test.dart" />
|
||||||
<item index="22" class="java.lang.String" itemvalue="Dart Test.DI Tests" />
|
<item index="22" class="java.lang.String" itemvalue="Dart Test.Controller Tests" />
|
||||||
<item index="23" class="java.lang.String" itemvalue="Dart Test.Hooked Tests" />
|
<item index="23" class="java.lang.String" itemvalue="Dart Test.DI Tests" />
|
||||||
<item index="24" class="java.lang.String" itemvalue="Dart Test.Routing Tests" />
|
<item index="24" class="java.lang.String" itemvalue="Dart Test.Hooked Tests" />
|
||||||
<item index="25" class="java.lang.String" itemvalue="Dart Test.tests in server_test.dart (PRODUCTION)" />
|
<item index="25" class="java.lang.String" itemvalue="Dart Test.Routing Tests" />
|
||||||
<item index="26" class="java.lang.String" itemvalue="Dart Test.All Tests" />
|
<item index="26" class="java.lang.String" itemvalue="Dart Test.tests in server_test.dart (PRODUCTION)" />
|
||||||
<item index="27" class="java.lang.String" itemvalue="Dart Test.All Tests (PRODUCTION)" />
|
<item index="27" class="java.lang.String" itemvalue="Dart Test.All Tests" />
|
||||||
<item index="28" class="java.lang.String" itemvalue="Dart Test.cannot write after close in streaming_test.dart" />
|
<item index="28" class="java.lang.String" itemvalue="Dart Test.All Tests (PRODUCTION)" />
|
||||||
|
<item index="29" class="java.lang.String" itemvalue="Dart Test.cannot write after close in streaming_test.dart" />
|
||||||
</list>
|
</list>
|
||||||
</component>
|
</component>
|
||||||
<component name="ShelveChangesManager" show_recycled="false">
|
<component name="ShelveChangesManager" show_recycled="false">
|
||||||
|
@ -574,7 +646,8 @@
|
||||||
<workItem from="1506088028663" duration="997000" />
|
<workItem from="1506088028663" duration="997000" />
|
||||||
<workItem from="1506090042437" duration="1751000" />
|
<workItem from="1506090042437" duration="1751000" />
|
||||||
<workItem from="1506275395906" duration="424000" />
|
<workItem from="1506275395906" duration="424000" />
|
||||||
<workItem from="1506281553143" duration="624000" />
|
<workItem from="1506281553143" duration="657000" />
|
||||||
|
<workItem from="1507123481086" duration="2431000" />
|
||||||
</task>
|
</task>
|
||||||
<task id="LOCAL-00001" summary="Re-designed exception">
|
<task id="LOCAL-00001" summary="Re-designed exception">
|
||||||
<created>1481237183504</created>
|
<created>1481237183504</created>
|
||||||
|
@ -835,43 +908,50 @@
|
||||||
<option name="project" value="LOCAL" />
|
<option name="project" value="LOCAL" />
|
||||||
<updated>1506275793202</updated>
|
<updated>1506275793202</updated>
|
||||||
</task>
|
</task>
|
||||||
<option name="localTasksCounter" value="38" />
|
<task id="LOCAL-00038" summary="+4">
|
||||||
|
<created>1506282194150</created>
|
||||||
|
<option name="number" value="00038" />
|
||||||
|
<option name="presentableId" value="LOCAL-00038" />
|
||||||
|
<option name="project" value="LOCAL" />
|
||||||
|
<updated>1506282194150</updated>
|
||||||
|
</task>
|
||||||
|
<option name="localTasksCounter" value="39" />
|
||||||
<servers />
|
<servers />
|
||||||
</component>
|
</component>
|
||||||
<component name="TestHistory">
|
<component name="TestHistory">
|
||||||
<history-entry file="All_Tests - 2017.09.24 at 13h 52m 57s.xml">
|
<history-entry file="All_Tests - 2017.10.04 at 09h 53m 19s.xml">
|
||||||
<configuration name="All Tests" configurationId="DartTestRunConfigurationType" />
|
<configuration name="All Tests" configurationId="DartTestRunConfigurationType" />
|
||||||
</history-entry>
|
</history-entry>
|
||||||
<history-entry file="All_Tests - 2017.09.24 at 13h 53m 37s.xml">
|
<history-entry file="All_Tests - 2017.10.04 at 09h 54m 24s.xml">
|
||||||
<configuration name="All Tests" configurationId="DartTestRunConfigurationType" />
|
<configuration name="All Tests" configurationId="DartTestRunConfigurationType" />
|
||||||
</history-entry>
|
</history-entry>
|
||||||
<history-entry file="All_Tests - 2017.09.24 at 13h 54m 09s.xml">
|
<history-entry file="All_Tests - 2017.10.04 at 09h 55m 00s.xml">
|
||||||
<configuration name="All Tests" configurationId="DartTestRunConfigurationType" />
|
<configuration name="All Tests" configurationId="DartTestRunConfigurationType" />
|
||||||
</history-entry>
|
</history-entry>
|
||||||
<history-entry file="All_Tests - 2017.09.24 at 13h 55m 05s.xml">
|
<history-entry file="All_Tests - 2017.10.04 at 09h 56m 57s.xml">
|
||||||
<configuration name="All Tests" configurationId="DartTestRunConfigurationType" />
|
<configuration name="All Tests" configurationId="DartTestRunConfigurationType" />
|
||||||
</history-entry>
|
</history-entry>
|
||||||
<history-entry file="All_Tests - 2017.09.24 at 13h 55m 47s.xml">
|
<history-entry file="All_Tests - 2017.10.04 at 09h 57m 31s.xml">
|
||||||
<configuration name="All Tests" configurationId="DartTestRunConfigurationType" />
|
<configuration name="All Tests" configurationId="DartTestRunConfigurationType" />
|
||||||
</history-entry>
|
</history-entry>
|
||||||
<history-entry file="All_Tests - 2017.09.24 at 15h 41m 37s.xml">
|
<history-entry file="All_Tests - 2017.10.04 at 10h 01m 10s.xml">
|
||||||
<configuration name="All Tests" configurationId="DartTestRunConfigurationType" />
|
<configuration name="All Tests" configurationId="DartTestRunConfigurationType" />
|
||||||
</history-entry>
|
</history-entry>
|
||||||
<history-entry file="only_uses_one_encoder_in_encoders_buffer_test_dart - 2017.09.24 at 13h 55m 12s.xml">
|
<history-entry file="All_Tests - 2017.10.04 at 10h 07m 57s.xml">
|
||||||
<configuration name="only uses one encoder in encoders_buffer_test.dart" configurationId="DartTestRunConfigurationType" />
|
<configuration name="All Tests" configurationId="DartTestRunConfigurationType" />
|
||||||
</history-entry>
|
</history-entry>
|
||||||
<history-entry file="only_uses_one_encoder_in_encoders_buffer_test_dart - 2017.09.24 at 13h 55m 29s.xml">
|
<history-entry file="only_match_route_with_matching_method_in_routing_test_dart - 2017.10.04 at 09h 49m 09s.xml">
|
||||||
<configuration name="only uses one encoder in encoders_buffer_test.dart" configurationId="DartTestRunConfigurationType" />
|
<configuration name="only match route with matching method in routing_test.dart" configurationId="DartTestRunConfigurationType" />
|
||||||
</history-entry>
|
</history-entry>
|
||||||
<history-entry file="tests_in_streaming_test_dart - 2017.09.22 at 10h 51m 57s.xml">
|
<history-entry file="only_match_route_with_matching_method_in_routing_test_dart - 2017.10.04 at 09h 49m 38s.xml">
|
||||||
<configuration name="tests in streaming_test.dart" configurationId="DartTestRunConfigurationType" />
|
<configuration name="only match route with matching method in routing_test.dart" configurationId="DartTestRunConfigurationType" />
|
||||||
</history-entry>
|
</history-entry>
|
||||||
<history-entry file="tests_in_streaming_test_dart - 2017.09.22 at 10h 53m 31s.xml">
|
<history-entry file="only_match_route_with_matching_method_in_routing_test_dart - 2017.10.04 at 09h 52m 16s.xml">
|
||||||
<configuration name="tests in streaming_test.dart" configurationId="DartTestRunConfigurationType" />
|
<configuration name="only match route with matching method in routing_test.dart" configurationId="DartTestRunConfigurationType" />
|
||||||
</history-entry>
|
</history-entry>
|
||||||
</component>
|
</component>
|
||||||
<component name="TimeTrackingManager">
|
<component name="TimeTrackingManager">
|
||||||
<option name="totallyTimeSpent" value="56828000" />
|
<option name="totallyTimeSpent" value="59292000" />
|
||||||
</component>
|
</component>
|
||||||
<component name="TodoView">
|
<component name="TodoView">
|
||||||
<todo-panel id="selected-file">
|
<todo-panel id="selected-file">
|
||||||
|
@ -883,24 +963,23 @@
|
||||||
</todo-panel>
|
</todo-panel>
|
||||||
</component>
|
</component>
|
||||||
<component name="ToolWindowManager">
|
<component name="ToolWindowManager">
|
||||||
<frame x="149" y="23" width="1168" height="797" extended-state="0" />
|
<frame x="166" y="23" width="1168" height="797" extended-state="0" />
|
||||||
<editor active="true" />
|
<editor active="true" />
|
||||||
<layout>
|
<layout>
|
||||||
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||||
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32763532" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
|
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32763532" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
|
||||||
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32478634" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Palette	" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
<window_info id="Palette	" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||||
<window_info id="Image Layers" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
<window_info id="Image Layers" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||||
<window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
<window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||||
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.34188035" sideWeight="0.5035524" order="7" side_tool="true" content_ui="tabs" />
|
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.34188035" sideWeight="0.5035524" order="7" side_tool="true" content_ui="tabs" />
|
||||||
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||||
<window_info id="Dart Analysis" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.37154695" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
<window_info id="Dart Analysis" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.31438935" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||||
<window_info id="Run" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.34188035" sideWeight="0.4964476" order="2" side_tool="false" content_ui="tabs" />
|
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.4017094" sideWeight="0.4964476" order="2" side_tool="false" content_ui="tabs" />
|
||||||
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32905984" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32905984" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||||
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.48246676" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4814815" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||||
<window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
<window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||||
<window_info id="Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
<window_info id="Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||||
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.26820603" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
<window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.27264655" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||||
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||||
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32905984" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32905984" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||||
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||||
|
@ -917,6 +996,7 @@
|
||||||
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
|
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
|
||||||
<window_info id="ANTLR Preview" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
<window_info id="ANTLR Preview" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||||
<window_info id="DB Browser" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32998413" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
<window_info id="DB Browser" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32998413" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32478634" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||||
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
|
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
|
||||||
<window_info id="Coverage" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="true" content_ui="tabs" />
|
<window_info id="Coverage" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="true" content_ui="tabs" />
|
||||||
</layout>
|
</layout>
|
||||||
|
@ -928,7 +1008,6 @@
|
||||||
<option name="myLimit" value="2678400000" />
|
<option name="myLimit" value="2678400000" />
|
||||||
</component>
|
</component>
|
||||||
<component name="VcsManagerConfiguration">
|
<component name="VcsManagerConfiguration">
|
||||||
<MESSAGE value="Coverage start..." />
|
|
||||||
<MESSAGE value="1.0.3" />
|
<MESSAGE value="1.0.3" />
|
||||||
<MESSAGE value="+1" />
|
<MESSAGE value="+1" />
|
||||||
<MESSAGE value="1.0.4" />
|
<MESSAGE value="1.0.4" />
|
||||||
|
@ -953,39 +1032,14 @@
|
||||||
<MESSAGE value="Updated `use`" />
|
<MESSAGE value="Updated `use`" />
|
||||||
<MESSAGE value="+2" />
|
<MESSAGE value="+2" />
|
||||||
<MESSAGE value="+3" />
|
<MESSAGE value="+3" />
|
||||||
<option name="LAST_COMMIT_MESSAGE" value="+3" />
|
<MESSAGE value="+4" />
|
||||||
|
<option name="LAST_COMMIT_MESSAGE" value="+4" />
|
||||||
</component>
|
</component>
|
||||||
<component name="XDebuggerManager">
|
<component name="XDebuggerManager">
|
||||||
<breakpoint-manager />
|
<breakpoint-manager />
|
||||||
<watches-manager />
|
<watches-manager />
|
||||||
</component>
|
</component>
|
||||||
<component name="editorHistoryManager">
|
<component name="editorHistoryManager">
|
||||||
<entry file="file://$PROJECT_DIR$/lib/src/extensible.dart" />
|
|
||||||
<entry file="file://$PROJECT_DIR$/test/precontained_test.dart">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="105">
|
|
||||||
<caret line="8" column="13" lean-forward="true" selection-start-line="8" selection-start-column="13" selection-end-line="8" selection-end-column="13" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/test/util_test.dart">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="277">
|
|
||||||
<caret line="26" column="0" lean-forward="true" selection-start-line="26" selection-start-column="0" selection-end-line="26" selection-end-column="0" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/performance/hello/raw.md">
|
|
||||||
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
|
|
||||||
<state split_layout="SPLIT">
|
|
||||||
<first_editor relative-caret-position="231">
|
|
||||||
<caret line="11" column="7" lean-forward="false" selection-start-line="11" selection-start-column="7" selection-end-line="11" selection-end-column="7" />
|
|
||||||
</first_editor>
|
|
||||||
<second_editor />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$USER_HOME$/AppData/Roaming/Pub/Cache/hosted/pub.dartlang.org/angel_route-1.0.5/lib/src/router.dart" />
|
|
||||||
<entry file="file://$USER_HOME$/AppData/Roaming/Pub/Cache/hosted/pub.dartlang.org/mock_request-1.0.0/lib/src/response.dart" />
|
<entry file="file://$USER_HOME$/AppData/Roaming/Pub/Cache/hosted/pub.dartlang.org/mock_request-1.0.0/lib/src/response.dart" />
|
||||||
<entry file="file://$PROJECT_DIR$/test/view_generator_test.dart">
|
<entry file="file://$PROJECT_DIR$/test/view_generator_test.dart">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
@ -1001,13 +1055,6 @@
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/test/all.dart">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="319">
|
|
||||||
<caret line="32" column="39" lean-forward="false" selection-start-line="32" selection-start-column="39" selection-end-line="32" selection-end-column="39" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/tool/travis.sh">
|
<entry file="file://$PROJECT_DIR$/tool/travis.sh">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="30">
|
<state relative-caret-position="30">
|
||||||
|
@ -1031,13 +1078,6 @@
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/lib/src/http/base_middleware.dart">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="30">
|
|
||||||
<caret line="2" column="7" lean-forward="true" selection-start-line="2" selection-start-column="7" selection-end-line="2" selection-end-column="7" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file:///usr/local/Cellar/dart/1.24.2/libexec/lib/async/zone.dart">
|
<entry file="file:///usr/local/Cellar/dart/1.24.2/libexec/lib/async/zone.dart">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="225">
|
<state relative-caret-position="225">
|
||||||
|
@ -1073,13 +1113,6 @@
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/test/routing_test.dart">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="145">
|
|
||||||
<caret line="117" column="2" lean-forward="false" selection-start-line="117" selection-start-column="2" selection-end-line="117" selection-end-column="2" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/lib/angel_framework.dart">
|
<entry file="file://$PROJECT_DIR$/lib/angel_framework.dart">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="45">
|
<state relative-caret-position="45">
|
||||||
|
@ -1113,13 +1146,6 @@
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/lib/src/http/http.dart">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="135">
|
|
||||||
<caret line="9" column="41" lean-forward="true" selection-start-line="9" selection-start-column="41" selection-end-line="9" selection-end-column="41" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/test/primitives_test.dart">
|
<entry file="file://$PROJECT_DIR$/test/primitives_test.dart">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="160">
|
<state relative-caret-position="160">
|
||||||
|
@ -1127,20 +1153,6 @@
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/test/di_test.dart">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="90">
|
|
||||||
<caret line="12" column="12" lean-forward="true" selection-start-line="12" selection-start-column="12" selection-end-line="12" selection-end-column="12" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/test/controller_test.dart">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="192">
|
|
||||||
<caret line="108" column="14" lean-forward="false" selection-start-line="108" selection-start-column="14" selection-end-line="108" selection-end-column="14" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/test/services_test.dart">
|
<entry file="file://$PROJECT_DIR$/test/services_test.dart">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="137">
|
<state relative-caret-position="137">
|
||||||
|
@ -1148,13 +1160,6 @@
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/test/server_test.dart">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="105">
|
|
||||||
<caret line="13" column="40" lean-forward="true" selection-start-line="13" selection-start-column="40" selection-end-line="13" selection-end-column="40" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/lib/src/fast_name_from_symbol.dart">
|
<entry file="file://$PROJECT_DIR$/lib/src/fast_name_from_symbol.dart">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="90">
|
<state relative-caret-position="90">
|
||||||
|
@ -1195,9 +1200,6 @@
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="165">
|
<state relative-caret-position="165">
|
||||||
<caret line="14" column="20" lean-forward="false" selection-start-line="14" selection-start-column="20" selection-end-line="14" selection-end-column="20" />
|
<caret line="14" column="20" lean-forward="false" selection-start-line="14" selection-start-column="20" selection-end-line="14" selection-end-column="20" />
|
||||||
<folding>
|
|
||||||
<element signature="e#75#92#0" expanded="false" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
|
@ -1208,10 +1210,99 @@
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/lib/src/http/response_context.dart">
|
<entry file="file://$PROJECT_DIR$/lib/src/http/injection.dart">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="6345">
|
<state relative-caret-position="222">
|
||||||
<caret line="432" column="10" lean-forward="false" selection-start-line="432" selection-start-column="10" selection-end-line="432" selection-end-column="10" />
|
<caret line="59" column="41" lean-forward="true" selection-start-line="59" selection-start-column="41" selection-end-line="59" selection-end-column="41" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/pubspec.yaml">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="15">
|
||||||
|
<caret line="1" column="22" lean-forward="false" selection-start-line="1" selection-start-column="22" selection-end-line="1" selection-end-column="22" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/test/encoders_buffer_test.dart">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="903">
|
||||||
|
<caret line="84" column="18" lean-forward="false" selection-start-line="84" selection-start-column="18" selection-end-line="84" selection-end-column="18" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/lib/src/http/request_context.dart">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="292">
|
||||||
|
<caret line="34" column="40" lean-forward="true" selection-start-line="34" selection-start-column="40" selection-end-line="34" selection-end-column="40" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#47#67#0" expanded="false" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/angel_route-1.0.5/lib/src/router.dart">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="258">
|
||||||
|
<caret line="251" column="41" lean-forward="true" selection-start-line="251" selection-start-column="41" selection-end-line="251" selection-end-column="41" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/lib/src/http/base_middleware.dart">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="0">
|
||||||
|
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/lib/src/http/base_plugin.dart">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="0">
|
||||||
|
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/example/json.dart">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="282">
|
||||||
|
<caret line="45" column="37" lean-forward="true" selection-start-line="45" selection-start-column="37" selection-end-line="45" selection-end-column="37" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/test/util_test.dart">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="282">
|
||||||
|
<caret line="30" column="7" lean-forward="true" selection-start-line="30" selection-start-column="7" selection-end-line="30" selection-end-column="7" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/test/all.dart">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="234">
|
||||||
|
<caret line="31" column="39" lean-forward="true" selection-start-line="31" selection-start-column="39" selection-end-line="31" selection-end-column="39" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#38#0" expanded="false" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/lib/src/http/angel_base.dart">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="45">
|
||||||
|
<caret line="3" column="42" lean-forward="false" selection-start-line="3" selection-start-column="42" selection-end-line="3" selection-end-column="42" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/lib/src/http/http.dart">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="300">
|
||||||
|
<caret line="20" column="22" lean-forward="true" selection-start-line="20" selection-start-column="22" selection-end-line="20" selection-end-column="22" />
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
|
@ -1226,18 +1317,36 @@
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/lib/src/http/angel_base.dart">
|
<entry file="file://$PROJECT_DIR$/test/routing_test.dart">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="195">
|
<state relative-caret-position="168">
|
||||||
<caret line="16" column="0" lean-forward="true" selection-start-line="16" selection-start-column="0" selection-end-line="16" selection-end-column="0" />
|
<caret line="38" column="21" lean-forward="true" selection-start-line="38" selection-start-column="21" selection-end-line="38" selection-end-column="21" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#22#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/lib/src/http/response_context.dart">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="139">
|
||||||
|
<caret line="264" column="63" lean-forward="false" selection-start-line="264" selection-start-column="63" selection-end-line="264" selection-end-column="63" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/lib/src/http/routable.dart">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="90">
|
||||||
|
<caret line="6" column="25" lean-forward="false" selection-start-line="6" selection-start-column="25" selection-end-line="6" selection-end-column="25" />
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/lib/src/http/controller.dart">
|
<entry file="file://$PROJECT_DIR$/lib/src/http/controller.dart">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="-786">
|
<state relative-caret-position="139">
|
||||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
<caret line="54" column="8" lean-forward="false" selection-start-line="54" selection-start-column="8" selection-end-line="54" selection-end-column="8" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#42#62#0" expanded="true" />
|
<element signature="e#42#62#0" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
|
@ -1247,67 +1356,60 @@
|
||||||
<entry file="file://$PROJECT_DIR$/CHANGELOG.md">
|
<entry file="file://$PROJECT_DIR$/CHANGELOG.md">
|
||||||
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
|
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
|
||||||
<state split_layout="SPLIT">
|
<state split_layout="SPLIT">
|
||||||
<first_editor relative-caret-position="30">
|
<first_editor relative-caret-position="105">
|
||||||
<caret line="2" column="57" lean-forward="false" selection-start-line="2" selection-start-column="57" selection-end-line="2" selection-end-column="57" />
|
<caret line="7" column="85" lean-forward="false" selection-start-line="7" selection-start-column="85" selection-end-line="7" selection-end-column="85" />
|
||||||
<folding />
|
<folding />
|
||||||
</first_editor>
|
</first_editor>
|
||||||
<second_editor />
|
<second_editor />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/lib/src/http/injection.dart">
|
<entry file="file://$PROJECT_DIR$/test/controller_test.dart">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="222">
|
<state relative-caret-position="180">
|
||||||
<caret line="59" column="41" lean-forward="true" selection-start-line="59" selection-start-column="41" selection-end-line="59" selection-end-column="41" />
|
<caret line="95" column="61" lean-forward="false" selection-start-line="95" selection-start-column="45" selection-end-line="95" selection-end-column="61" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#4016#4950#0" expanded="false" />
|
<element signature="e#0#20#0" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/lib/src/http/routable.dart">
|
<entry file="file://$PROJECT_DIR$/test/di_test.dart">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="-1166">
|
<state relative-caret-position="420">
|
||||||
<caret line="13" column="0" lean-forward="true" selection-start-line="13" selection-start-column="0" selection-end-line="13" selection-end-column="0" />
|
<caret line="28" column="62" lean-forward="false" selection-start-line="28" selection-start-column="62" selection-end-line="28" selection-end-column="62" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#40#60#0" expanded="true" />
|
<element signature="e#0#22#0" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/pubspec.yaml">
|
<entry file="file://$PROJECT_DIR$/test/server_test.dart">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="15">
|
<state relative-caret-position="75">
|
||||||
<caret line="1" column="22" lean-forward="false" selection-start-line="1" selection-start-column="22" selection-end-line="1" selection-end-column="22" />
|
<caret line="11" column="8" lean-forward="false" selection-start-line="11" selection-start-column="8" selection-end-line="11" selection-end-column="8" />
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/test/encoders_buffer_test.dart">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="903">
|
|
||||||
<caret line="84" column="18" lean-forward="false" selection-start-line="84" selection-start-column="18" selection-end-line="84" selection-end-column="18" />
|
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/lib/src/http/server.dart">
|
<entry file="file://$PROJECT_DIR$/lib/src/http/server.dart">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="8085">
|
<state relative-caret-position="165">
|
||||||
<caret line="539" column="8" lean-forward="false" selection-start-line="539" selection-start-column="8" selection-end-line="539" selection-end-column="8" />
|
<caret line="13" column="34" lean-forward="false" selection-start-line="13" selection-start-column="34" selection-end-line="13" selection-end-column="34" />
|
||||||
<folding>
|
<folding />
|
||||||
<element signature="e#38#58#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/lib/src/http/request_context.dart">
|
<entry file="file://$PROJECT_DIR$/README.md">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
|
||||||
<state relative-caret-position="249">
|
<state split_layout="SPLIT">
|
||||||
<caret line="43" column="63" lean-forward="false" selection-start-line="43" selection-start-column="63" selection-end-line="43" selection-end-column="63" />
|
<first_editor relative-caret-position="285">
|
||||||
|
<caret line="19" column="6" lean-forward="true" selection-start-line="19" selection-start-column="6" selection-end-line="19" selection-end-column="6" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#47#67#0" expanded="true" />
|
<marker date="1506049250000" expanded="true" signature="588:776" ph="{...}" />
|
||||||
</folding>
|
</folding>
|
||||||
|
</first_editor>
|
||||||
|
<second_editor />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
|
|
|
@ -1,3 +1,12 @@
|
||||||
|
# 1.1.0-alpha+5
|
||||||
|
* Closed [#166](https://github.com/angel-dart/framework/issues/166), killing any hanging `Stopwatch` instances when streaming.
|
||||||
|
* Removed `AngelPlugin` and `AngelMiddleware`, as well as the `@proxy` annotations from `Angel` and `RequestContext`.
|
||||||
|
* Officially deprecated `properties` in `Angel`.
|
||||||
|
* Fixed a bug where cached routes would not heed the request method. [#173](https://github.com/angel-dart/framework/issues/173)
|
||||||
|
* Reworked error handling logic; now, errors will not automatically default to sending JSON.
|
||||||
|
* Removed the `onController` stream from `Angel`.
|
||||||
|
* Controllers now longer use `call`, which has now been renamed to `configureServer`.
|
||||||
|
|
||||||
# 1.1.0-alpha+4
|
# 1.1.0-alpha+4
|
||||||
* Made `injections` in `RequestContext` private.
|
* Made `injections` in `RequestContext` private.
|
||||||
* Renamed `properties` in `AngelBase` to `configuration`.
|
* Renamed `properties` in `AngelBase` to `configuration`.
|
||||||
|
|
|
@ -42,10 +42,10 @@ serverMain(_) async {
|
||||||
..lazyParseBodies = true
|
..lazyParseBodies = true
|
||||||
..injectSerializer(JSON.encode);
|
..injectSerializer(JSON.encode);
|
||||||
|
|
||||||
app.fatalErrorStream.listen((e) {
|
app.errorHandler = (e, req, res) {
|
||||||
print(e.error);
|
print(e.message ?? e.error ?? e);
|
||||||
print(e.stack);
|
print(e.stackTrace);
|
||||||
});
|
};
|
||||||
|
|
||||||
await app.startServer(InternetAddress.LOOPBACK_IP_V4, 3000);
|
await app.startServer(InternetAddress.LOOPBACK_IP_V4, 3000);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,14 +2,12 @@ library angel_framework.http.angel_base;
|
||||||
|
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'package:container/container.dart';
|
import 'package:container/container.dart';
|
||||||
import '../fast_name_from_symbol.dart';
|
|
||||||
import 'routable.dart';
|
import 'routable.dart';
|
||||||
|
|
||||||
/// A function that asynchronously generates a view from the given path and data.
|
/// A function that asynchronously generates a view from the given path and data.
|
||||||
typedef Future<String> ViewGenerator(String path, [Map data]);
|
typedef Future<String> ViewGenerator(String path, [Map data]);
|
||||||
|
|
||||||
/// Base class for Angel servers. Do not bother extending this.
|
/// Base class for Angel servers. Do not bother extending this.
|
||||||
@proxy
|
|
||||||
class AngelBase extends Routable {
|
class AngelBase extends Routable {
|
||||||
Container _container = new Container();
|
Container _container = new Container();
|
||||||
|
|
||||||
|
@ -32,22 +30,4 @@ class AngelBase extends Routable {
|
||||||
/// Called by [ResponseContext]@`render`.
|
/// Called by [ResponseContext]@`render`.
|
||||||
ViewGenerator viewGenerator = (String view, [Map data]) async =>
|
ViewGenerator viewGenerator = (String view, [Map data]) async =>
|
||||||
"No view engine has been configured yet.";
|
"No view engine has been configured yet.";
|
||||||
|
|
||||||
operator [](key) => configuration[key];
|
|
||||||
operator []=(key, value) => configuration[key] = value;
|
|
||||||
|
|
||||||
noSuchMethod(Invocation invocation) {
|
|
||||||
if (invocation.memberName != null) {
|
|
||||||
String name = fastNameFromSymbol(invocation.memberName);
|
|
||||||
|
|
||||||
if (invocation.isMethod) {
|
|
||||||
return Function.apply(configuration[name], invocation.positionalArguments,
|
|
||||||
invocation.namedArguments);
|
|
||||||
} else if (invocation.isGetter) {
|
|
||||||
return configuration[name];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return super.noSuchMethod(invocation);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
library angel_framework.http.base_middleware;
|
|
||||||
|
|
||||||
import 'dart:async';
|
|
||||||
import 'request_context.dart';
|
|
||||||
import 'response_context.dart';
|
|
||||||
|
|
||||||
abstract class AngelMiddleware {
|
|
||||||
Future<bool> call(RequestContext req, ResponseContext res);
|
|
||||||
}
|
|
|
@ -1,8 +0,0 @@
|
||||||
library angel_framework.http.base_plugin;
|
|
||||||
|
|
||||||
import 'dart:async';
|
|
||||||
import 'server.dart';
|
|
||||||
|
|
||||||
abstract class AngelPlugin {
|
|
||||||
Future call(Angel app);
|
|
||||||
}
|
|
|
@ -31,7 +31,7 @@ class Controller {
|
||||||
Controller({this.debug: false, this.injectSingleton: true});
|
Controller({this.debug: false, this.injectSingleton: true});
|
||||||
|
|
||||||
@mustCallSuper
|
@mustCallSuper
|
||||||
Future call(Angel app) async {
|
Future configureServer(Angel app) async {
|
||||||
_app = app;
|
_app = app;
|
||||||
|
|
||||||
if (injectSingleton != false) _app.container.singleton(this);
|
if (injectSingleton != false) _app.container.singleton(this);
|
||||||
|
@ -45,7 +45,7 @@ class Controller {
|
||||||
"All controllers must carry an @Expose() declaration.");
|
"All controllers must carry an @Expose() declaration.");
|
||||||
}
|
}
|
||||||
|
|
||||||
var routable = new Routable(debug: debug);
|
var routable = new Routable();
|
||||||
app.use(exposeDecl.path, routable);
|
app.use(exposeDecl.path, routable);
|
||||||
TypeMirror typeMirror = reflectType(this.runtimeType);
|
TypeMirror typeMirror = reflectType(this.runtimeType);
|
||||||
String name = exposeDecl.as?.isNotEmpty == true
|
String name = exposeDecl.as?.isNotEmpty == true
|
||||||
|
|
|
@ -10,8 +10,6 @@ export 'package:angel_route/angel_route.dart';
|
||||||
export 'package:body_parser/body_parser.dart' show FileUploadInfo;
|
export 'package:body_parser/body_parser.dart' show FileUploadInfo;
|
||||||
export 'angel_base.dart';
|
export 'angel_base.dart';
|
||||||
export 'anonymous_service.dart';
|
export 'anonymous_service.dart';
|
||||||
export 'base_middleware.dart';
|
|
||||||
export 'base_plugin.dart';
|
|
||||||
export 'controller.dart';
|
export 'controller.dart';
|
||||||
export 'hooked_service.dart';
|
export 'hooked_service.dart';
|
||||||
export 'map_service.dart';
|
export 'map_service.dart';
|
||||||
|
@ -24,12 +22,12 @@ export 'service.dart';
|
||||||
export 'typed_service.dart';
|
export 'typed_service.dart';
|
||||||
|
|
||||||
/// Boots a shared server instance. Use this if launching multiple isolates
|
/// Boots a shared server instance. Use this if launching multiple isolates
|
||||||
Future<HttpServer> startShared(InternetAddress address, int port) => HttpServer
|
Future<HttpServer> startShared(address, int port) => HttpServer
|
||||||
.bind(address ?? InternetAddress.LOOPBACK_IP_V4, port ?? 0, shared: true);
|
.bind(address ?? InternetAddress.LOOPBACK_IP_V4, port ?? 0, shared: true);
|
||||||
|
|
||||||
/// Boots a secure shared server instance. Use this if launching multiple isolates
|
/// Boots a secure shared server instance. Use this if launching multiple isolates
|
||||||
ServerGenerator startSharedSecure(SecurityContext securityContext) {
|
ServerGenerator startSharedSecure(SecurityContext securityContext) {
|
||||||
return (InternetAddress address, int port) => HttpServer.bindSecure(
|
return (address, int port) => HttpServer.bindSecure(
|
||||||
address ?? InternetAddress.LOOPBACK_IP_V4, port ?? 0, securityContext,
|
address ?? InternetAddress.LOOPBACK_IP_V4, port ?? 0, securityContext,
|
||||||
shared: true);
|
shared: true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,14 +5,12 @@ import 'dart:io';
|
||||||
import 'dart:mirrors';
|
import 'dart:mirrors';
|
||||||
import 'package:body_parser/body_parser.dart';
|
import 'package:body_parser/body_parser.dart';
|
||||||
import 'package:charcode/charcode.dart';
|
import 'package:charcode/charcode.dart';
|
||||||
import '../fast_name_from_symbol.dart';
|
|
||||||
import 'response_context.dart';
|
import 'response_context.dart';
|
||||||
import 'routable.dart';
|
import 'routable.dart';
|
||||||
import 'server.dart' show Angel;
|
import 'server.dart' show Angel;
|
||||||
part 'injection.dart';
|
part 'injection.dart';
|
||||||
|
|
||||||
/// A convenience wrapper around an incoming HTTP request.
|
/// A convenience wrapper around an incoming HTTP request.
|
||||||
@proxy
|
|
||||||
class RequestContext {
|
class RequestContext {
|
||||||
String _acceptHeaderCache;
|
String _acceptHeaderCache;
|
||||||
bool _acceptsAllCache;
|
bool _acceptsAllCache;
|
||||||
|
@ -278,22 +276,4 @@ class RequestContext {
|
||||||
return _body = await parseBody(io,
|
return _body = await parseBody(io,
|
||||||
storeOriginalBuffer: app.storeOriginalBuffer == true);
|
storeOriginalBuffer: app.storeOriginalBuffer == true);
|
||||||
}
|
}
|
||||||
|
|
||||||
operator [](key) => properties[key];
|
|
||||||
operator []=(key, value) => properties[key] = value;
|
|
||||||
|
|
||||||
noSuchMethod(Invocation invocation) {
|
|
||||||
if (invocation.memberName != null) {
|
|
||||||
String name = fastNameFromSymbol(invocation.memberName);
|
|
||||||
|
|
||||||
if (invocation.isMethod) {
|
|
||||||
return Function.apply(properties[name], invocation.positionalArguments,
|
|
||||||
invocation.namedArguments);
|
|
||||||
} else if (invocation.isGetter) {
|
|
||||||
return properties[name];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return super.noSuchMethod(invocation);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -262,7 +262,7 @@ class ResponseContext implements StreamSink<List<int>>, StringSink {
|
||||||
"Controller redirects must take the form of 'Controller@action'. You gave: $action");
|
"Controller redirects must take the form of 'Controller@action'. You gave: $action");
|
||||||
|
|
||||||
Controller controller =
|
Controller controller =
|
||||||
app.controller(split[0].replaceAll(_straySlashes, ''));
|
app.controllers[split[0].replaceAll(_straySlashes, '')];
|
||||||
|
|
||||||
if (controller == null)
|
if (controller == null)
|
||||||
throw new Exception("Could not find a controller named '${split[0]}'");
|
throw new Exception("Could not find a controller named '${split[0]}'");
|
||||||
|
@ -337,6 +337,10 @@ class ResponseContext implements StreamSink<List<int>>, StringSink {
|
||||||
bool firstStream = _useStream == false;
|
bool firstStream = _useStream == false;
|
||||||
willCloseItself = _useStream = _isClosed = true;
|
willCloseItself = _useStream = _isClosed = true;
|
||||||
|
|
||||||
|
if (_correspondingRequest?.injections?.containsKey(Stopwatch) == true) {
|
||||||
|
(_correspondingRequest.injections[Stopwatch] as Stopwatch).stop();
|
||||||
|
}
|
||||||
|
|
||||||
Stream<List<int>> output = stream;
|
Stream<List<int>> output = stream;
|
||||||
|
|
||||||
if (firstStream) {
|
if (firstStream) {
|
||||||
|
|
|
@ -5,7 +5,6 @@ import 'package:angel_route/angel_route.dart';
|
||||||
import 'package:meta/meta.dart';
|
import 'package:meta/meta.dart';
|
||||||
import '../util.dart';
|
import '../util.dart';
|
||||||
import 'angel_base.dart';
|
import 'angel_base.dart';
|
||||||
import 'controller.dart';
|
|
||||||
import 'hooked_service.dart';
|
import 'hooked_service.dart';
|
||||||
import 'metadata.dart';
|
import 'metadata.dart';
|
||||||
import 'request_context.dart';
|
import 'request_context.dart';
|
||||||
|
@ -35,22 +34,18 @@ RequestMiddleware waterfall(List handlers) {
|
||||||
|
|
||||||
/// A routable server that can handle dynamic requests.
|
/// A routable server that can handle dynamic requests.
|
||||||
class Routable extends Router {
|
class Routable extends Router {
|
||||||
final Map<Pattern, Controller> _controllers = {};
|
|
||||||
final Map<Pattern, Service> _services = {};
|
final Map<Pattern, Service> _services = {};
|
||||||
final Map configuration = {};
|
final Map configuration = {};
|
||||||
|
|
||||||
Routable({bool debug: false}) : super(debug: debug);
|
Routable() : super();
|
||||||
|
|
||||||
/// Additional filters to be run on designated requests.
|
/// Additional filters to be run on designated requests.
|
||||||
@override
|
@override
|
||||||
final Map<String, RequestMiddleware> requestMiddleware = {};
|
final Map<String, RequestHandler> requestMiddleware = {};
|
||||||
|
|
||||||
/// A set of [Service] objects that have been mapped into routes.
|
/// A set of [Service] objects that have been mapped into routes.
|
||||||
Map<Pattern, Service> get services => _services;
|
Map<Pattern, Service> get services => _services;
|
||||||
|
|
||||||
/// A set of [Controller] objects that have been loaded into the application.
|
|
||||||
Map<Pattern, Controller> get controllers => _controllers;
|
|
||||||
|
|
||||||
StreamController<Service> _onService =
|
StreamController<Service> _onService =
|
||||||
new StreamController<Service>.broadcast();
|
new StreamController<Service>.broadcast();
|
||||||
|
|
||||||
|
@ -69,9 +64,6 @@ class Routable extends Router {
|
||||||
_services[path] ??
|
_services[path] ??
|
||||||
_services[path.toString().replaceAll(_straySlashes, '')];
|
_services[path.toString().replaceAll(_straySlashes, '')];
|
||||||
|
|
||||||
/// Retrieves the controller with the given name.
|
|
||||||
Controller controller(String name) => controllers[name];
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Route addRoute(String method, Pattern path, Object handler,
|
Route addRoute(String method, Pattern path, Object handler,
|
||||||
{List middleware: const []}) {
|
{List middleware: const []}) {
|
||||||
|
|
|
@ -12,7 +12,6 @@ import 'package:json_god/json_god.dart' as god;
|
||||||
import 'package:logging/logging.dart';
|
import 'package:logging/logging.dart';
|
||||||
import 'package:meta/meta.dart';
|
import 'package:meta/meta.dart';
|
||||||
import 'package:tuple/tuple.dart';
|
import 'package:tuple/tuple.dart';
|
||||||
import '../safe_stream_controller.dart';
|
|
||||||
import 'angel_base.dart';
|
import 'angel_base.dart';
|
||||||
import 'controller.dart';
|
import 'controller.dart';
|
||||||
import 'request_context.dart';
|
import 'request_context.dart';
|
||||||
|
@ -23,16 +22,13 @@ import 'service.dart';
|
||||||
final RegExp _straySlashes = new RegExp(r'(^/+)|(/+$)');
|
final RegExp _straySlashes = new RegExp(r'(^/+)|(/+$)');
|
||||||
|
|
||||||
/// A function that binds an [Angel] server to an Internet address and port.
|
/// A function that binds an [Angel] server to an Internet address and port.
|
||||||
typedef Future<HttpServer> ServerGenerator(InternetAddress address, int port);
|
typedef Future<HttpServer> ServerGenerator(address, int port);
|
||||||
|
|
||||||
/// A function that configures an [Angel] server in some way.
|
/// A function that configures an [Angel] server in some way.
|
||||||
typedef Future AngelConfigurer(Angel app);
|
typedef Future AngelConfigurer(Angel app);
|
||||||
|
|
||||||
/// A powerful real-time/REST/MVC server class.
|
/// A powerful real-time/REST/MVC server class.
|
||||||
class Angel extends AngelBase {
|
class Angel extends AngelBase {
|
||||||
final SafeCtrl<Controller> _onController =
|
|
||||||
new SafeCtrl<Controller>.broadcast();
|
|
||||||
|
|
||||||
final List<Angel> _children = [];
|
final List<Angel> _children = [];
|
||||||
final Map<String, Tuple3<MiddlewarePipeline, Map, Match>> _handlerCache = {};
|
final Map<String, Tuple3<MiddlewarePipeline, Map, Match>> _handlerCache = {};
|
||||||
|
|
||||||
|
@ -65,6 +61,11 @@ class Angel extends AngelBase {
|
||||||
/// All child application mounted on this instance.
|
/// All child application mounted on this instance.
|
||||||
List<Angel> get children => new List<Angel>.unmodifiable(_children);
|
List<Angel> get children => new List<Angel>.unmodifiable(_children);
|
||||||
|
|
||||||
|
final Map<Pattern, Controller> _controllers = {};
|
||||||
|
|
||||||
|
/// A set of [Controller] objects that have been loaded into the application.
|
||||||
|
Map<Pattern, Controller> get controllers => _controllers;
|
||||||
|
|
||||||
/// Indicates whether the application is running in a production environment.
|
/// Indicates whether the application is running in a production environment.
|
||||||
///
|
///
|
||||||
/// The criteria for this is the `ANGEL_ENV` environment variable being set to
|
/// The criteria for this is the `ANGEL_ENV` environment variable being set to
|
||||||
|
@ -82,11 +83,6 @@ class Angel extends AngelBase {
|
||||||
/// The function used to bind this instance to an HTTP server.
|
/// The function used to bind this instance to an HTTP server.
|
||||||
ServerGenerator get serverGenerator => _serverGenerator;
|
ServerGenerator get serverGenerator => _serverGenerator;
|
||||||
|
|
||||||
/// Fired whenever a controller is added to this instance.
|
|
||||||
///
|
|
||||||
/// **NOTE**: This is a broadcast stream.
|
|
||||||
Stream<Controller> get onController => _onController.stream;
|
|
||||||
|
|
||||||
/// Returns the parent instance of this application, if any.
|
/// Returns the parent instance of this application, if any.
|
||||||
Angel get parent => _parent;
|
Angel get parent => _parent;
|
||||||
|
|
||||||
|
@ -108,9 +104,32 @@ class Angel extends AngelBase {
|
||||||
/// These will only not run if a response's `willCloseItself` is set to `true`.
|
/// These will only not run if a response's `willCloseItself` is set to `true`.
|
||||||
final List<RequestHandler> responseFinalizers = [];
|
final List<RequestHandler> responseFinalizers = [];
|
||||||
|
|
||||||
|
/// Use [configuration] instead.
|
||||||
|
@deprecated
|
||||||
|
Map get properties {
|
||||||
|
try {
|
||||||
|
throw new Error();
|
||||||
|
} catch (e, st) {
|
||||||
|
logger?.warning(
|
||||||
|
'`properties` is deprecated, and should not be used.',
|
||||||
|
new UnsupportedError('`properties` is deprecated.'),
|
||||||
|
st,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return configuration;
|
||||||
|
}
|
||||||
|
|
||||||
/// The handler currently configured to run on [AngelHttpException]s.
|
/// The handler currently configured to run on [AngelHttpException]s.
|
||||||
Function(AngelHttpException e, RequestContext req, ResponseContext res)
|
Function(AngelHttpException e, RequestContext req, ResponseContext res)
|
||||||
errorHandler = (AngelHttpException e, req, ResponseContext res) {
|
errorHandler =
|
||||||
|
(AngelHttpException e, RequestContext req, ResponseContext res) {
|
||||||
|
if (!req.accepts('text/html') &&
|
||||||
|
(req.accepts('application/json') ||
|
||||||
|
req.accepts('application/javascript'))) {
|
||||||
|
res.json(e.toJson());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
res.headers[HttpHeaders.CONTENT_TYPE] = ContentType.HTML.toString();
|
res.headers[HttpHeaders.CONTENT_TYPE] = ContentType.HTML.toString();
|
||||||
res.statusCode = e.statusCode;
|
res.statusCode = e.statusCode;
|
||||||
res.write("<!DOCTYPE html><html><head><title>${e.message}</title>");
|
res.write("<!DOCTYPE html><html><head><title>${e.message}</title>");
|
||||||
|
@ -130,7 +149,7 @@ class Angel extends AngelBase {
|
||||||
/// Starts the server.
|
/// Starts the server.
|
||||||
///
|
///
|
||||||
/// Returns false on failure; otherwise, returns the HttpServer.
|
/// Returns false on failure; otherwise, returns the HttpServer.
|
||||||
Future<HttpServer> startServer([InternetAddress address, int port]) async {
|
Future<HttpServer> startServer([address, int port]) async {
|
||||||
var host = address ?? InternetAddress.LOOPBACK_IP_V4;
|
var host = address ?? InternetAddress.LOOPBACK_IP_V4;
|
||||||
this.httpServer = await _serverGenerator(host, port ?? 0);
|
this.httpServer = await _serverGenerator(host, port ?? 0);
|
||||||
|
|
||||||
|
@ -185,8 +204,6 @@ class Angel extends AngelBase {
|
||||||
await httpServer.close(force: true);
|
await httpServer.close(force: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
_onController.close();
|
|
||||||
|
|
||||||
await Future.forEach(services.values, (Service service) async {
|
await Future.forEach(services.values, (Service service) async {
|
||||||
await service.close();
|
await service.close();
|
||||||
});
|
});
|
||||||
|
@ -330,18 +347,7 @@ class Angel extends AngelBase {
|
||||||
}
|
}
|
||||||
|
|
||||||
res.statusCode = e.statusCode;
|
res.statusCode = e.statusCode;
|
||||||
|
|
||||||
if (req.headers.value(HttpHeaders.ACCEPT) == null ||
|
|
||||||
req.acceptsAll ||
|
|
||||||
req.accepts(ContentType.JSON) ||
|
|
||||||
req.accepts('application/javascript')) {
|
|
||||||
res.serialize(e.toMap(),
|
|
||||||
contentType: res.headers[HttpHeaders.CONTENT_TYPE] ??
|
|
||||||
ContentType.JSON.mimeType);
|
|
||||||
} else {
|
|
||||||
await errorHandler(e, req, res);
|
await errorHandler(e, req, res);
|
||||||
}
|
|
||||||
|
|
||||||
res.end();
|
res.end();
|
||||||
return await sendResponse(request, req, res,
|
return await sendResponse(request, req, res,
|
||||||
ignoreFinalizers: ignoreFinalizers == true);
|
ignoreFinalizers: ignoreFinalizers == true);
|
||||||
|
@ -349,12 +355,12 @@ class Angel extends AngelBase {
|
||||||
|
|
||||||
/// Handles a single request.
|
/// Handles a single request.
|
||||||
Future handleRequest(HttpRequest request) async {
|
Future handleRequest(HttpRequest request) async {
|
||||||
|
var req = await createRequestContext(request);
|
||||||
|
var res = await createResponseContext(request.response, req);
|
||||||
var zoneSpec = await createZoneForRequest(request, req, res);
|
var zoneSpec = await createZoneForRequest(request, req, res);
|
||||||
var zone = Zone.current.fork(specification: zoneSpec);
|
var zone = Zone.current.fork(specification: zoneSpec);
|
||||||
|
|
||||||
return zone.run(() async {
|
return zone.run(() async {
|
||||||
var req = await createRequestContext(request);
|
|
||||||
var res = await createResponseContext(request.response, req);
|
|
||||||
String requestedUrl;
|
String requestedUrl;
|
||||||
|
|
||||||
// Faster way to get path
|
// Faster way to get path
|
||||||
|
@ -377,7 +383,7 @@ class Angel extends AngelBase {
|
||||||
|
|
||||||
if (requestedUrl.isEmpty) requestedUrl = '/';
|
if (requestedUrl.isEmpty) requestedUrl = '/';
|
||||||
|
|
||||||
var tuple = _handlerCache.putIfAbsent(requestedUrl, () {
|
var tuple = _handlerCache.putIfAbsent('${req.method}:$requestedUrl', () {
|
||||||
Router r = isProduction ? (_flattened ??= flatten(this)) : this;
|
Router r = isProduction ? (_flattened ??= flatten(this)) : this;
|
||||||
var resolved =
|
var resolved =
|
||||||
r.resolveAll(requestedUrl, requestedUrl, method: req.method);
|
r.resolveAll(requestedUrl, requestedUrl, method: req.method);
|
||||||
|
@ -439,10 +445,6 @@ class Angel extends AngelBase {
|
||||||
}
|
}
|
||||||
|
|
||||||
void _walk(Router router) {
|
void _walk(Router router) {
|
||||||
if (router is Angel) {
|
|
||||||
router..before.forEach(_add)..after.forEach(_add);
|
|
||||||
}
|
|
||||||
|
|
||||||
router.requestMiddleware.forEach((k, v) => _add(v));
|
router.requestMiddleware.forEach((k, v) => _add(v));
|
||||||
router.middleware.forEach(_add);
|
router.middleware.forEach(_add);
|
||||||
router.routes.forEach((r) {
|
router.routes.forEach((r) {
|
||||||
|
@ -553,9 +555,6 @@ class Angel extends AngelBase {
|
||||||
/// Applies an [AngelConfigurer] to this instance.
|
/// Applies an [AngelConfigurer] to this instance.
|
||||||
Future configure(AngelConfigurer configurer) async {
|
Future configure(AngelConfigurer configurer) async {
|
||||||
await configurer(this);
|
await configurer(this);
|
||||||
|
|
||||||
if (configurer is Controller)
|
|
||||||
_onController.add(controllers[configurer.findExpose().path] = configurer);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Mounts the child on this router. If [routable] is `null`,
|
/// Mounts the child on this router. If [routable] is `null`,
|
||||||
|
@ -589,19 +588,15 @@ class Angel extends AngelBase {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
routable.controllers.forEach((k, v) {
|
routable._controllers.forEach((k, v) {
|
||||||
var tail = k.toString().replaceAll(_straySlashes, '');
|
var tail = k.toString().replaceAll(_straySlashes, '');
|
||||||
controllers['$head/$tail'.replaceAll(_straySlashes, '')] = v;
|
_controllers['$head/$tail'.replaceAll(_straySlashes, '')] = v;
|
||||||
});
|
});
|
||||||
|
|
||||||
routable.services.forEach((k, v) {
|
routable.services.forEach((k, v) {
|
||||||
var tail = k.toString().replaceAll(_straySlashes, '');
|
var tail = k.toString().replaceAll(_straySlashes, '');
|
||||||
services['$head/$tail'.replaceAll(_straySlashes, '')] = v;
|
services['$head/$tail'.replaceAll(_straySlashes, '')] = v;
|
||||||
});
|
});
|
||||||
|
|
||||||
_onController.whenInitialized(() {
|
|
||||||
routable.onController.listen(_onController.add);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (routable is Service) {
|
if (routable is Service) {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
name: angel_framework
|
name: angel_framework
|
||||||
version: 1.1.0-alpha+4
|
version: 1.1.0-alpha+5
|
||||||
description: A high-powered HTTP server with DI, routing and more.
|
description: A high-powered HTTP server with DI, routing and more.
|
||||||
author: Tobe O <thosakwe@gmail.com>
|
author: Tobe O <thosakwe@gmail.com>
|
||||||
homepage: https://github.com/angel-dart/angel_framework
|
homepage: https://github.com/angel-dart/angel_framework
|
||||||
|
|
|
@ -15,7 +15,6 @@ import 'server_test.dart' as server;
|
||||||
import 'services_test.dart' as services;
|
import 'services_test.dart' as services;
|
||||||
import 'streaming_test.dart' as streaming;
|
import 'streaming_test.dart' as streaming;
|
||||||
import 'typed_service_test.dart' as typed_service;
|
import 'typed_service_test.dart' as typed_service;
|
||||||
import 'util_test.dart' as util;
|
|
||||||
import 'view_generator_test.dart' as view_generator;
|
import 'view_generator_test.dart' as view_generator;
|
||||||
import 'package:test/test.dart';
|
import 'package:test/test.dart';
|
||||||
|
|
||||||
|
@ -38,6 +37,5 @@ main() {
|
||||||
group('services', services.main);
|
group('services', services.main);
|
||||||
group('streaming', streaming.main);
|
group('streaming', streaming.main);
|
||||||
group('typed_service', typed_service.main);
|
group('typed_service', typed_service.main);
|
||||||
group('util', util.main);
|
|
||||||
group('view generator', view_generator.main);
|
group('view generator', view_generator.main);
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,13 +43,13 @@ main() {
|
||||||
|
|
||||||
setUp(() async {
|
setUp(() async {
|
||||||
app = new Angel();
|
app = new Angel();
|
||||||
app.registerMiddleware("foo", (req, res) async => res.write("Hello, "));
|
app.requestMiddleware["foo"] = (req, res) async => res.write("Hello, ");
|
||||||
app.registerMiddleware("bar", (req, res) async => res.write("world!"));
|
app.requestMiddleware["bar"] = (req, res) async => res.write("world!");
|
||||||
app.get(
|
app.get(
|
||||||
"/redirect",
|
"/redirect",
|
||||||
(req, ResponseContext res) async =>
|
(req, ResponseContext res) async =>
|
||||||
res.redirectToAction("TodoController@foo", {"foo": "world"}));
|
res.redirectToAction("TodoController@foo", {"foo": "world"}));
|
||||||
await app.configure(ctrl = new TodoController());
|
await app.configure((ctrl = new TodoController()).configureServer);
|
||||||
|
|
||||||
print(app.controllers);
|
print(app.controllers);
|
||||||
app.dumpTree();
|
app.dumpTree();
|
||||||
|
@ -71,7 +71,7 @@ main() {
|
||||||
test('require expose', () async {
|
test('require expose', () async {
|
||||||
try {
|
try {
|
||||||
var app = new Angel();
|
var app = new Angel();
|
||||||
await app.configure(new NoExposeController());
|
await app.configure(new NoExposeController().configureServer);
|
||||||
throw 'Should require @Expose';
|
throw 'Should require @Expose';
|
||||||
} on Exception {
|
} on Exception {
|
||||||
// :)
|
// :)
|
||||||
|
@ -93,7 +93,7 @@ main() {
|
||||||
|
|
||||||
test('optional name', () async {
|
test('optional name', () async {
|
||||||
var app = new Angel();
|
var app = new Angel();
|
||||||
await app.configure(new NamedController());
|
await app.configure(new NamedController().configureServer);
|
||||||
expect(app.controllers['foo'], new isInstanceOf<NamedController>());
|
expect(app.controllers['foo'], new isInstanceOf<NamedController>());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -25,8 +25,8 @@ main() {
|
||||||
app.get("/errands", (Todo singleton) => singleton);
|
app.get("/errands", (Todo singleton) => singleton);
|
||||||
app.get("/errands3",
|
app.get("/errands3",
|
||||||
({Errand singleton, Todo foo, RequestContext req}) => singleton.text);
|
({Errand singleton, Todo foo, RequestContext req}) => singleton.text);
|
||||||
await app.configure(new SingletonController());
|
await app.configure(new SingletonController().configureServer);
|
||||||
await app.configure(new ErrandController());
|
await app.configure(new ErrandController().configureServer);
|
||||||
|
|
||||||
server = await app.startServer();
|
server = await app.startServer();
|
||||||
url = "http://${server.address.host}:${server.port}";
|
url = "http://${server.address.host}:${server.port}";
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
import 'dart:convert';
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
import 'package:angel_framework/angel_framework.dart';
|
import 'package:angel_framework/angel_framework.dart';
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
import 'package:json_god/json_god.dart' as god;
|
|
||||||
import 'package:test/test.dart';
|
import 'package:test/test.dart';
|
||||||
|
|
||||||
@Middleware(const ['interceptor'])
|
@Middleware(const ['interceptor'])
|
||||||
|
@ -33,16 +33,15 @@ main() {
|
||||||
app.lazyParseBodies = app.isProduction;
|
app.lazyParseBodies = app.isProduction;
|
||||||
});
|
});
|
||||||
|
|
||||||
app
|
app.requestMiddleware
|
||||||
..registerMiddleware('interceptor', (req, res) async {
|
..['interceptor'] = (req, res) async {
|
||||||
res.write('Middleware');
|
res.write('Middleware');
|
||||||
return false;
|
return false;
|
||||||
})
|
}
|
||||||
..registerMiddleware('intercept_service',
|
..['intercept_service'] = (RequestContext req, res) async {
|
||||||
(RequestContext req, res) async {
|
|
||||||
res.write("Service with ");
|
res.write("Service with ");
|
||||||
return true;
|
return true;
|
||||||
});
|
};
|
||||||
|
|
||||||
todos.get('/action/:action', (req, res) => res.json(req.params));
|
todos.get('/action/:action', (req, res) => res.json(req.params));
|
||||||
|
|
||||||
|
@ -75,8 +74,12 @@ main() {
|
||||||
return "Logged";
|
return "Logged";
|
||||||
});
|
});
|
||||||
|
|
||||||
|
app.get('/method', () => 'Only GET');
|
||||||
|
app.post('/method', () => 'Only POST');
|
||||||
|
|
||||||
app.use('/query', new QueryService());
|
app.use('/query', new QueryService());
|
||||||
app.get('*', 'MJ');
|
|
||||||
|
app.use('MJ');
|
||||||
|
|
||||||
app.dumpTree(header: "DUMPING ROUTES:", showMatchers: true);
|
app.dumpTree(header: "DUMPING ROUTES:", showMatchers: true);
|
||||||
|
|
||||||
|
@ -103,7 +106,7 @@ main() {
|
||||||
test('Can match url with multiple parameters', () async {
|
test('Can match url with multiple parameters', () async {
|
||||||
var response = await client.get('$url/name/HELLO/last/WORLD');
|
var response = await client.get('$url/name/HELLO/last/WORLD');
|
||||||
print('Response: ${response.body}');
|
print('Response: ${response.body}');
|
||||||
var json = god.deserialize(response.body);
|
var json = JSON.decode(response.body);
|
||||||
expect(json, new isInstanceOf<Map<String, String>>());
|
expect(json, new isInstanceOf<Map<String, String>>());
|
||||||
expect(json['first'], equals('HELLO'));
|
expect(json['first'], equals('HELLO'));
|
||||||
expect(json['last'], equals('WORLD'));
|
expect(json['last'], equals('WORLD'));
|
||||||
|
@ -111,13 +114,13 @@ main() {
|
||||||
|
|
||||||
test('Can nest another Angel instance', () async {
|
test('Can nest another Angel instance', () async {
|
||||||
var response = await client.post('$url/nes/ted/foo');
|
var response = await client.post('$url/nes/ted/foo');
|
||||||
var json = god.deserialize(response.body);
|
var json = JSON.decode(response.body);
|
||||||
expect(json['route'], equals('foo'));
|
expect(json['route'], equals('foo'));
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Can parse parameters from a nested Angel instance', () async {
|
test('Can parse parameters from a nested Angel instance', () async {
|
||||||
var response = await client.get('$url/todos/1337/action/test');
|
var response = await client.get('$url/todos/1337/action/test');
|
||||||
var json = god.deserialize(response.body);
|
var json = JSON.decode(response.body);
|
||||||
print('JSON: $json');
|
print('JSON: $json');
|
||||||
expect(json['id'], equals('1337'));
|
expect(json['id'], equals('1337'));
|
||||||
expect(json['action'], equals('test'));
|
expect(json['action'], equals('test'));
|
||||||
|
@ -136,10 +139,10 @@ main() {
|
||||||
|
|
||||||
test('Can serialize function result as JSON', () async {
|
test('Can serialize function result as JSON', () async {
|
||||||
Map headers = {'Content-Type': 'application/json'};
|
Map headers = {'Content-Type': 'application/json'};
|
||||||
String postData = god.serialize({'it': 'works'});
|
String postData = JSON.encode({'it': 'works'});
|
||||||
var response =
|
var response =
|
||||||
await client.post("$url/lambda", headers: headers, body: postData);
|
await client.post("$url/lambda", headers: headers, body: postData);
|
||||||
expect(god.deserialize(response.body)['it'], equals('works'));
|
expect(JSON.decode(response.body)['it'], equals('works'));
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Fallback routes', () async {
|
test('Fallback routes', () async {
|
||||||
|
@ -158,17 +161,31 @@ main() {
|
||||||
test('Redirect to named routes', () async {
|
test('Redirect to named routes', () async {
|
||||||
var response = await client.get('$url/named');
|
var response = await client.get('$url/named');
|
||||||
print(response.body);
|
print(response.body);
|
||||||
expect(god.deserialize(response.body), equals('Hello tests'));
|
expect(JSON.decode(response.body), equals('Hello tests'));
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Match routes, even with query params', () async {
|
test('Match routes, even with query params', () async {
|
||||||
var response =
|
var response =
|
||||||
await client.get("$url/log?foo=bar&bar=baz&baz.foo=bar&baz.bar=foo");
|
await client.get("$url/log?foo=bar&bar=baz&baz.foo=bar&baz.bar=foo");
|
||||||
print(response.body);
|
print(response.body);
|
||||||
expect(god.deserialize(response.body), equals('Logged'));
|
expect(JSON.decode(response.body), equals('Logged'));
|
||||||
|
|
||||||
response = await client.get("$url/query/foo?bar=baz");
|
response = await client.get("$url/query/foo?bar=baz");
|
||||||
print(response.body);
|
print(response.body);
|
||||||
expect(response.body, equals("Service with Middleware"));
|
expect(response.body, equals("Service with Middleware"));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('only match route with matching method', () async {
|
||||||
|
var response = await client.get("$url/method");
|
||||||
|
print(response.body);
|
||||||
|
expect(response.body, '"Only GET"');
|
||||||
|
|
||||||
|
response = await client.post("$url/method");
|
||||||
|
print(response.body);
|
||||||
|
expect(response.body, '"Only POST"');
|
||||||
|
|
||||||
|
response = await client.patch("$url/method");
|
||||||
|
print(response.body);
|
||||||
|
expect(response.body, '"MJ"');
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,16 +10,6 @@ final Uri $foo = Uri.parse('http://localhost:3000/foo');
|
||||||
|
|
||||||
/// Additional tests to improve coverage of server.dart
|
/// Additional tests to improve coverage of server.dart
|
||||||
main() {
|
main() {
|
||||||
group('streams fired', () {
|
|
||||||
test('oncontroller fired', () async {
|
|
||||||
var app = new Angel();
|
|
||||||
var ctrl = new FooController();
|
|
||||||
var f = app.onController.first;
|
|
||||||
await app.configure(ctrl);
|
|
||||||
expect(await f, ctrl);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
group('scoping', () {
|
group('scoping', () {
|
||||||
var parent = new Angel()..configuration['two'] = 2;
|
var parent = new Angel()..configuration['two'] = 2;
|
||||||
var child = new Angel();
|
var child = new Angel();
|
||||||
|
@ -168,7 +158,8 @@ main() {
|
||||||
tearDown(() => app.close());
|
tearDown(() => app.close());
|
||||||
|
|
||||||
test('can send json', () async {
|
test('can send json', () async {
|
||||||
var rq = new MockHttpRequest('GET', new Uri(path: 'wtf'));
|
var rq = new MockHttpRequest('GET', new Uri(path: 'wtf'))
|
||||||
|
..headers.set(HttpHeaders.ACCEPT, ContentType.JSON.toString());
|
||||||
rq.close();
|
rq.close();
|
||||||
await app.handleRequest(rq);
|
await app.handleRequest(rq);
|
||||||
expect(rq.response.statusCode, HttpStatus.FORBIDDEN);
|
expect(rq.response.statusCode, HttpStatus.FORBIDDEN);
|
||||||
|
@ -177,7 +168,8 @@ main() {
|
||||||
});
|
});
|
||||||
|
|
||||||
test('can throw in finalizer', () async {
|
test('can throw in finalizer', () async {
|
||||||
var rq = new MockHttpRequest('GET', new Uri(path: 'wtf'));
|
var rq = new MockHttpRequest('GET', new Uri(path: 'wtf'))
|
||||||
|
..headers.set(HttpHeaders.ACCEPT, ContentType.JSON.toString());
|
||||||
rq.close();
|
rq.close();
|
||||||
await app.handleRequest(rq);
|
await app.handleRequest(rq);
|
||||||
expect(rq.response.statusCode, HttpStatus.FORBIDDEN);
|
expect(rq.response.statusCode, HttpStatus.FORBIDDEN);
|
||||||
|
|
|
@ -1,33 +0,0 @@
|
||||||
import 'package:angel_framework/angel_framework.dart';
|
|
||||||
import 'package:test/test.dart';
|
|
||||||
|
|
||||||
class Foo {
|
|
||||||
String name;
|
|
||||||
|
|
||||||
Foo(String this.name);
|
|
||||||
}
|
|
||||||
|
|
||||||
main() {
|
|
||||||
group('Utilities', () {
|
|
||||||
Angel app;
|
|
||||||
|
|
||||||
setUp(() {
|
|
||||||
app = new Angel();
|
|
||||||
});
|
|
||||||
|
|
||||||
tearDown(() async {
|
|
||||||
await app.close();
|
|
||||||
app = null;
|
|
||||||
});
|
|
||||||
|
|
||||||
test('can use app.properties like members', () {
|
|
||||||
app.configuration['hello'] = 'world';
|
|
||||||
app.configuration['foo'] = () => 'bar';
|
|
||||||
app.configuration['Foo'] = new Foo('bar');
|
|
||||||
|
|
||||||
expect(app.hello, equals('world'));
|
|
||||||
expect(app.foo(), equals('bar'));
|
|
||||||
expect(app.Foo.name, equals('bar'));
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
Loading…
Reference in a new issue