mirror of
https://github.com/Xevion/paperless-mobile.git
synced 2025-12-10 08:07:59 -06:00
FEATURE add mock server and main_dev.dart for developement
This commit is contained in:
30
packages/mock_server/.gitignore
vendored
Normal file
30
packages/mock_server/.gitignore
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
# Miscellaneous
|
||||
*.class
|
||||
*.log
|
||||
*.pyc
|
||||
*.swp
|
||||
.DS_Store
|
||||
.atom/
|
||||
.buildlog/
|
||||
.history
|
||||
.svn/
|
||||
migrate_working_dir/
|
||||
|
||||
# IntelliJ related
|
||||
*.iml
|
||||
*.ipr
|
||||
*.iws
|
||||
.idea/
|
||||
|
||||
# The .vscode folder contains launch configuration and tasks you configure in
|
||||
# VS Code which you may wish to be included in version control, so this line
|
||||
# is commented out by default.
|
||||
#.vscode/
|
||||
|
||||
# Flutter/Dart/Pub related
|
||||
# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock.
|
||||
/pubspec.lock
|
||||
**/doc/api/
|
||||
.dart_tool/
|
||||
.packages
|
||||
build/
|
||||
10
packages/mock_server/.metadata
Normal file
10
packages/mock_server/.metadata
Normal file
@@ -0,0 +1,10 @@
|
||||
# This file tracks properties of this Flutter project.
|
||||
# Used by Flutter tool to assess capabilities and perform upgrades etc.
|
||||
#
|
||||
# This file should be version controlled and should not be manually edited.
|
||||
|
||||
version:
|
||||
revision: 84a1e904f44f9b0e9c4510138010edcc653163f8
|
||||
channel: stable
|
||||
|
||||
project_type: package
|
||||
3
packages/mock_server/CHANGELOG.md
Normal file
3
packages/mock_server/CHANGELOG.md
Normal file
@@ -0,0 +1,3 @@
|
||||
## 0.0.1
|
||||
|
||||
* TODO: Describe initial release.
|
||||
1
packages/mock_server/LICENSE
Normal file
1
packages/mock_server/LICENSE
Normal file
@@ -0,0 +1 @@
|
||||
TODO: Add your license here.
|
||||
39
packages/mock_server/README.md
Normal file
39
packages/mock_server/README.md
Normal file
@@ -0,0 +1,39 @@
|
||||
<!--
|
||||
This README describes the package. If you publish this package to pub.dev,
|
||||
this README's contents appear on the landing page for your package.
|
||||
|
||||
For information about how to write a good package README, see the guide for
|
||||
[writing package pages](https://dart.dev/guides/libraries/writing-package-pages).
|
||||
|
||||
For general information about developing packages, see the Dart guide for
|
||||
[creating packages](https://dart.dev/guides/libraries/create-library-packages)
|
||||
and the Flutter guide for
|
||||
[developing packages and plugins](https://flutter.dev/developing-packages).
|
||||
-->
|
||||
|
||||
TODO: Put a short description of the package here that helps potential users
|
||||
know whether this package might be useful for them.
|
||||
|
||||
## Features
|
||||
|
||||
TODO: List what your package can do. Maybe include images, gifs, or videos.
|
||||
|
||||
## Getting started
|
||||
|
||||
TODO: List prerequisites and provide or point to information on how to
|
||||
start using the package.
|
||||
|
||||
## Usage
|
||||
|
||||
TODO: Include short and useful examples for package users. Add longer examples
|
||||
to `/example` folder.
|
||||
|
||||
```dart
|
||||
const like = 'sample';
|
||||
```
|
||||
|
||||
## Additional information
|
||||
|
||||
TODO: Tell users more about the package: where to find more information, how to
|
||||
contribute to the package, how to file issues, what response they can expect
|
||||
from the package authors, and more.
|
||||
4
packages/mock_server/analysis_options.yaml
Normal file
4
packages/mock_server/analysis_options.yaml
Normal file
@@ -0,0 +1,4 @@
|
||||
include: package:flutter_lints/flutter.yaml
|
||||
|
||||
# Additional information about this file can be found at
|
||||
# https://dart.dev/guides/language/analysis-options
|
||||
@@ -0,0 +1,23 @@
|
||||
package io.flutter.plugins;
|
||||
|
||||
import io.flutter.plugin.common.PluginRegistry;
|
||||
|
||||
/**
|
||||
* Generated file. Do not edit.
|
||||
*/
|
||||
public final class GeneratedPluginRegistrant {
|
||||
public static void registerWith(PluginRegistry registry) {
|
||||
if (alreadyRegisteredWith(registry)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean alreadyRegisteredWith(PluginRegistry registry) {
|
||||
final String key = GeneratedPluginRegistrant.class.getCanonicalName();
|
||||
if (registry.hasPlugin(key)) {
|
||||
return true;
|
||||
}
|
||||
registry.registrarFor(key);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
2
packages/mock_server/android/local.properties
Normal file
2
packages/mock_server/android/local.properties
Normal file
@@ -0,0 +1,2 @@
|
||||
sdk.dir=/Users/Konrad.Lys/Library/Android/sdk
|
||||
flutter.sdk=/opt/homebrew/Caskroom/flutter/3.10.0/flutter
|
||||
14
packages/mock_server/ios/Flutter/Generated.xcconfig
Normal file
14
packages/mock_server/ios/Flutter/Generated.xcconfig
Normal file
@@ -0,0 +1,14 @@
|
||||
// This is a generated file; do not edit or check into version control.
|
||||
FLUTTER_ROOT=/opt/homebrew/Caskroom/flutter/3.10.0/flutter
|
||||
FLUTTER_APPLICATION_PATH=/Users/Konrad.Lys/IdeaProjects/paperless-mobile/packages/mock_server
|
||||
COCOAPODS_PARALLEL_CODE_SIGN=true
|
||||
FLUTTER_TARGET=lib/main.dart
|
||||
FLUTTER_BUILD_DIR=build
|
||||
FLUTTER_BUILD_NAME=0.0.1
|
||||
FLUTTER_BUILD_NUMBER=0.0.1
|
||||
EXCLUDED_ARCHS[sdk=iphonesimulator*]=i386
|
||||
EXCLUDED_ARCHS[sdk=iphoneos*]=armv7
|
||||
DART_OBFUSCATION=false
|
||||
TRACK_WIDGET_CREATION=true
|
||||
TREE_SHAKE_ICONS=false
|
||||
PACKAGE_CONFIG=.dart_tool/package_config.json
|
||||
13
packages/mock_server/ios/Flutter/flutter_export_environment.sh
Executable file
13
packages/mock_server/ios/Flutter/flutter_export_environment.sh
Executable file
@@ -0,0 +1,13 @@
|
||||
#!/bin/sh
|
||||
# This is a generated file; do not edit or check into version control.
|
||||
export "FLUTTER_ROOT=/opt/homebrew/Caskroom/flutter/3.10.0/flutter"
|
||||
export "FLUTTER_APPLICATION_PATH=/Users/Konrad.Lys/IdeaProjects/paperless-mobile/packages/mock_server"
|
||||
export "COCOAPODS_PARALLEL_CODE_SIGN=true"
|
||||
export "FLUTTER_TARGET=lib/main.dart"
|
||||
export "FLUTTER_BUILD_DIR=build"
|
||||
export "FLUTTER_BUILD_NAME=0.0.1"
|
||||
export "FLUTTER_BUILD_NUMBER=0.0.1"
|
||||
export "DART_OBFUSCATION=false"
|
||||
export "TRACK_WIDGET_CREATION=true"
|
||||
export "TREE_SHAKE_ICONS=false"
|
||||
export "PACKAGE_CONFIG=.dart_tool/package_config.json"
|
||||
19
packages/mock_server/ios/Runner/GeneratedPluginRegistrant.h
Normal file
19
packages/mock_server/ios/Runner/GeneratedPluginRegistrant.h
Normal file
@@ -0,0 +1,19 @@
|
||||
//
|
||||
// Generated file. Do not edit.
|
||||
//
|
||||
|
||||
// clang-format off
|
||||
|
||||
#ifndef GeneratedPluginRegistrant_h
|
||||
#define GeneratedPluginRegistrant_h
|
||||
|
||||
#import <Flutter/Flutter.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface GeneratedPluginRegistrant : NSObject
|
||||
+ (void)registerWithRegistry:(NSObject<FlutterPluginRegistry>*)registry;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
#endif /* GeneratedPluginRegistrant_h */
|
||||
14
packages/mock_server/ios/Runner/GeneratedPluginRegistrant.m
Normal file
14
packages/mock_server/ios/Runner/GeneratedPluginRegistrant.m
Normal file
@@ -0,0 +1,14 @@
|
||||
//
|
||||
// Generated file. Do not edit.
|
||||
//
|
||||
|
||||
// clang-format off
|
||||
|
||||
#import "GeneratedPluginRegistrant.h"
|
||||
|
||||
@implementation GeneratedPluginRegistrant
|
||||
|
||||
+ (void)registerWithRegistry:(NSObject<FlutterPluginRegistry>*)registry {
|
||||
}
|
||||
|
||||
@end
|
||||
161
packages/mock_server/lib/mock_server.dart
Normal file
161
packages/mock_server/lib/mock_server.dart
Normal file
@@ -0,0 +1,161 @@
|
||||
library mock_server;
|
||||
|
||||
import 'dart:convert';
|
||||
|
||||
|
||||
import 'package:logging/logging.dart';
|
||||
|
||||
import 'package:shelf/shelf.dart';
|
||||
|
||||
import 'package:shelf/shelf_io.dart' as shelf_io;
|
||||
|
||||
import 'package:shelf_router/shelf_router.dart' as shelf_router;
|
||||
|
||||
|
||||
Logger log = Logger('LocalMockApiServer');
|
||||
|
||||
|
||||
class LocalMockApiServer {
|
||||
|
||||
static final host = 'localhost';
|
||||
|
||||
static final port = 3131;
|
||||
|
||||
static get baseUrl => 'http://$host:$port/';
|
||||
|
||||
|
||||
late shelf_router.Router app;
|
||||
|
||||
|
||||
LocalMockApiServer() {
|
||||
|
||||
app = shelf_router.Router();
|
||||
|
||||
|
||||
app.get('/api/', (Request req) async {
|
||||
log.info('Responding to /api');
|
||||
return JsonMockResponse.ok({
|
||||
});
|
||||
});
|
||||
|
||||
app.post('/api/token/', (Request req) async {
|
||||
log.info('Responding to /api/token/');
|
||||
var body = await req.bodyJsonMap();
|
||||
if (body?['username'] == 'test' && body?['password'] == 'test') {
|
||||
return JsonMockResponse.ok({
|
||||
'token': 'testToken'
|
||||
});
|
||||
} else {
|
||||
return Response.unauthorized(
|
||||
'Unauthorized'
|
||||
);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
app.get('/api/ui_settings/', (Request req) async {
|
||||
log.info('Responding to /api/ui_settings/');
|
||||
return JsonMockResponse.ok({
|
||||
'user': {
|
||||
'id': 1,
|
||||
'username': 'test',
|
||||
'displayName': 'Test User'
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
app.get('/api/users/<userId>/', (Request req, String userId) async {
|
||||
log.info('Responding to /api/users/<userId>/');
|
||||
return JsonMockResponse.ok({
|
||||
'id': 1,
|
||||
'username': 'test',
|
||||
'displayName': 'Test User',
|
||||
'email': 'test@test.pl',
|
||||
'firstName': 'Test',
|
||||
'lastName': 'User',
|
||||
'dateJoined': '2000-01-23T01:23:45',
|
||||
'isStaff': false,
|
||||
'isActive': true,
|
||||
'isSuperuser': true,
|
||||
'groups': [],
|
||||
'userPermissions': [],
|
||||
'inheritedPermissions': []
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
Future<void> start() async {
|
||||
|
||||
log.info('starting...');
|
||||
|
||||
|
||||
var handler = const Pipeline().addMiddleware(
|
||||
|
||||
logRequests(logger: (message, isError) {
|
||||
|
||||
if (isError)
|
||||
|
||||
log.severe(message);
|
||||
|
||||
else
|
||||
|
||||
log.info(message);
|
||||
|
||||
}),
|
||||
|
||||
).addHandler(app);
|
||||
|
||||
|
||||
var server = await shelf_io.serve(handler, host, port);
|
||||
|
||||
server.autoCompress = true;
|
||||
|
||||
|
||||
log.info('serving on: $baseUrl');
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
extension on Request {
|
||||
|
||||
Future<String?> bodyJsonValue(String param) async {
|
||||
|
||||
return jsonDecode(await this.readAsString())?[param];
|
||||
|
||||
}
|
||||
|
||||
Future<Map?> bodyJsonMap() async {
|
||||
|
||||
return jsonDecode(await this.readAsString());
|
||||
|
||||
}
|
||||
|
||||
|
||||
String? get accessToken =>
|
||||
|
||||
this.headers['Authorization']?.split('Bearer ').last;
|
||||
|
||||
}
|
||||
|
||||
|
||||
extension JsonMockResponse on Response {
|
||||
|
||||
static ok<T>(T json, {int delay = 800}) async {
|
||||
|
||||
await Future.delayed(Duration(milliseconds: delay)); // Emulate lag
|
||||
|
||||
return Response.ok(
|
||||
|
||||
jsonEncode(json),
|
||||
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
//
|
||||
// Generated file. Do not edit.
|
||||
//
|
||||
|
||||
// clang-format off
|
||||
|
||||
#include "generated_plugin_registrant.h"
|
||||
|
||||
|
||||
void fl_register_plugins(FlPluginRegistry* registry) {
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
//
|
||||
// Generated file. Do not edit.
|
||||
//
|
||||
|
||||
// clang-format off
|
||||
|
||||
#ifndef GENERATED_PLUGIN_REGISTRANT_
|
||||
#define GENERATED_PLUGIN_REGISTRANT_
|
||||
|
||||
#include <flutter_linux/flutter_linux.h>
|
||||
|
||||
// Registers Flutter plugins.
|
||||
void fl_register_plugins(FlPluginRegistry* registry);
|
||||
|
||||
#endif // GENERATED_PLUGIN_REGISTRANT_
|
||||
23
packages/mock_server/linux/flutter/generated_plugins.cmake
Normal file
23
packages/mock_server/linux/flutter/generated_plugins.cmake
Normal file
@@ -0,0 +1,23 @@
|
||||
#
|
||||
# Generated file, do not edit.
|
||||
#
|
||||
|
||||
list(APPEND FLUTTER_PLUGIN_LIST
|
||||
)
|
||||
|
||||
list(APPEND FLUTTER_FFI_PLUGIN_LIST
|
||||
)
|
||||
|
||||
set(PLUGIN_BUNDLED_LIBRARIES)
|
||||
|
||||
foreach(plugin ${FLUTTER_PLUGIN_LIST})
|
||||
add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin})
|
||||
target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin)
|
||||
list(APPEND PLUGIN_BUNDLED_LIBRARIES $<TARGET_FILE:${plugin}_plugin>)
|
||||
list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries})
|
||||
endforeach(plugin)
|
||||
|
||||
foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST})
|
||||
add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin})
|
||||
list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries})
|
||||
endforeach(ffi_plugin)
|
||||
@@ -0,0 +1,10 @@
|
||||
//
|
||||
// Generated file. Do not edit.
|
||||
//
|
||||
|
||||
import FlutterMacOS
|
||||
import Foundation
|
||||
|
||||
|
||||
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
// This is a generated file; do not edit or check into version control.
|
||||
FLUTTER_ROOT=/opt/homebrew/Caskroom/flutter/3.10.0/flutter
|
||||
FLUTTER_APPLICATION_PATH=/Users/Konrad.Lys/IdeaProjects/paperless-mobile/packages/mock_server
|
||||
COCOAPODS_PARALLEL_CODE_SIGN=true
|
||||
FLUTTER_BUILD_DIR=build
|
||||
FLUTTER_BUILD_NAME=0.0.1
|
||||
FLUTTER_BUILD_NUMBER=0.0.1
|
||||
DART_OBFUSCATION=false
|
||||
TRACK_WIDGET_CREATION=true
|
||||
TREE_SHAKE_ICONS=false
|
||||
PACKAGE_CONFIG=.dart_tool/package_config.json
|
||||
12
packages/mock_server/macos/Flutter/ephemeral/flutter_export_environment.sh
Executable file
12
packages/mock_server/macos/Flutter/ephemeral/flutter_export_environment.sh
Executable file
@@ -0,0 +1,12 @@
|
||||
#!/bin/sh
|
||||
# This is a generated file; do not edit or check into version control.
|
||||
export "FLUTTER_ROOT=/opt/homebrew/Caskroom/flutter/3.10.0/flutter"
|
||||
export "FLUTTER_APPLICATION_PATH=/Users/Konrad.Lys/IdeaProjects/paperless-mobile/packages/mock_server"
|
||||
export "COCOAPODS_PARALLEL_CODE_SIGN=true"
|
||||
export "FLUTTER_BUILD_DIR=build"
|
||||
export "FLUTTER_BUILD_NAME=0.0.1"
|
||||
export "FLUTTER_BUILD_NUMBER=0.0.1"
|
||||
export "DART_OBFUSCATION=false"
|
||||
export "TRACK_WIDGET_CREATION=true"
|
||||
export "TREE_SHAKE_ICONS=false"
|
||||
export "PACKAGE_CONFIG=.dart_tool/package_config.json"
|
||||
57
packages/mock_server/pubspec.yaml
Normal file
57
packages/mock_server/pubspec.yaml
Normal file
@@ -0,0 +1,57 @@
|
||||
name: mock_server
|
||||
description: A new Flutter package project.
|
||||
version: 0.0.1
|
||||
homepage:
|
||||
|
||||
environment:
|
||||
sdk: '>=3.0.0 <4.0.0'
|
||||
flutter: ">=1.17.0"
|
||||
|
||||
dependencies:
|
||||
shelf: ^1.4.1
|
||||
shelf_router: ^1.1.4
|
||||
logging: ^1.1.1
|
||||
flutter:
|
||||
sdk: flutter
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
sdk: flutter
|
||||
flutter_lints: ^2.0.0
|
||||
|
||||
# For information on the generic Dart part of this file, see the
|
||||
# following page: https://dart.dev/tools/pub/pubspec
|
||||
|
||||
# The following section is specific to Flutter packages.
|
||||
flutter:
|
||||
|
||||
# To add assets to your package, add an assets section, like this:
|
||||
# assets:
|
||||
# - images/a_dot_burr.jpeg
|
||||
# - images/a_dot_ham.jpeg
|
||||
#
|
||||
# For details regarding assets in packages, see
|
||||
# https://flutter.dev/assets-and-images/#from-packages
|
||||
#
|
||||
# An image asset can refer to one or more resolution-specific "variants", see
|
||||
# https://flutter.dev/assets-and-images/#resolution-aware
|
||||
|
||||
# To add custom fonts to your package, add a fonts section here,
|
||||
# in this "flutter" section. Each entry in this list should have a
|
||||
# "family" key with the font family name, and a "fonts" key with a
|
||||
# list giving the asset and other descriptors for the font. For
|
||||
# example:
|
||||
# fonts:
|
||||
# - family: Schyler
|
||||
# fonts:
|
||||
# - asset: fonts/Schyler-Regular.ttf
|
||||
# - asset: fonts/Schyler-Italic.ttf
|
||||
# style: italic
|
||||
# - family: Trajan Pro
|
||||
# fonts:
|
||||
# - asset: fonts/TrajanPro.ttf
|
||||
# - asset: fonts/TrajanPro_Bold.ttf
|
||||
# weight: 700
|
||||
#
|
||||
# For details regarding fonts in packages, see
|
||||
# https://flutter.dev/custom-fonts/#from-packages
|
||||
@@ -0,0 +1,11 @@
|
||||
//
|
||||
// Generated file. Do not edit.
|
||||
//
|
||||
|
||||
// clang-format off
|
||||
|
||||
#include "generated_plugin_registrant.h"
|
||||
|
||||
|
||||
void RegisterPlugins(flutter::PluginRegistry* registry) {
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
//
|
||||
// Generated file. Do not edit.
|
||||
//
|
||||
|
||||
// clang-format off
|
||||
|
||||
#ifndef GENERATED_PLUGIN_REGISTRANT_
|
||||
#define GENERATED_PLUGIN_REGISTRANT_
|
||||
|
||||
#include <flutter/plugin_registry.h>
|
||||
|
||||
// Registers Flutter plugins.
|
||||
void RegisterPlugins(flutter::PluginRegistry* registry);
|
||||
|
||||
#endif // GENERATED_PLUGIN_REGISTRANT_
|
||||
23
packages/mock_server/windows/flutter/generated_plugins.cmake
Normal file
23
packages/mock_server/windows/flutter/generated_plugins.cmake
Normal file
@@ -0,0 +1,23 @@
|
||||
#
|
||||
# Generated file, do not edit.
|
||||
#
|
||||
|
||||
list(APPEND FLUTTER_PLUGIN_LIST
|
||||
)
|
||||
|
||||
list(APPEND FLUTTER_FFI_PLUGIN_LIST
|
||||
)
|
||||
|
||||
set(PLUGIN_BUNDLED_LIBRARIES)
|
||||
|
||||
foreach(plugin ${FLUTTER_PLUGIN_LIST})
|
||||
add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin})
|
||||
target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin)
|
||||
list(APPEND PLUGIN_BUNDLED_LIBRARIES $<TARGET_FILE:${plugin}_plugin>)
|
||||
list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries})
|
||||
endforeach(plugin)
|
||||
|
||||
foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST})
|
||||
add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin})
|
||||
list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries})
|
||||
endforeach(ffi_plugin)
|
||||
Reference in New Issue
Block a user