This commit is contained in:
regiostech 2016-04-21 22:56:21 -04:00
commit 77af2aa8e4
15 changed files with 330 additions and 0 deletions

112
.gitignore vendored Normal file
View file

@ -0,0 +1,112 @@
### JetBrains template
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff:
.idea/workspace.xml
.idea/tasks.xml
.idea/dictionaries
.idea/vcs.xml
.idea/jsLibraryMappings.xml
# Sensitive or high-churn files:
.idea/dataSources.ids
.idea/dataSources.xml
.idea/dataSources.local.xml
.idea/sqlDataSources.xml
.idea/dynamic.xml
.idea/uiDesigner.xml
# Gradle:
.idea/gradle.xml
.idea/libraries
# Mongo Explorer plugin:
.idea/mongoSettings.xml
## File-based project format:
*.iws
## Plugin-specific files:
# IntelliJ
/out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
### Dart template
# See https://www.dartlang.org/tools/private-files.html
# Files and directories created by pub
.buildlog
.packages
.project
.pub/
build/
**/packages/
# Files created by dart2js
# (Most Dart developers will use pub build to compile Dart, use/modify these
# rules if you intend to use dart2js directly
# Convention is to use extension '.dart.js' for Dart compiled to Javascript to
# differentiate from explicit Javascript files)
*.dart.js
*.part.js
*.js.deps
*.js.map
*.info.json
# Directory created by dartdoc
doc/api/
# Don't commit pubspec lock file
# (Library packages only! Remove pattern if developing an application package)
pubspec.lock
# Created by .ignore support plugin (hsz.mobi)
### JetBrains template
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff:
# Sensitive or high-churn files:
# Gradle:
# Mongo Explorer plugin:
## File-based project format:
## Plugin-specific files:
# IntelliJ
# mpeltonen/sbt-idea plugin
# JIRA plugin
# Crashlytics plugin (for Android Studio and IntelliJ)
### Dart template
# See https://www.dartlang.org/tools/private-files.html
# Files and directories created by pub
# Files created by dart2js
# (Most Dart developers will use pub build to compile Dart, use/modify these
# rules if you intend to use dart2js directly
# Convention is to use extension '.dart.js' for Dart compiled to Javascript to
# differentiate from explicit Javascript files)
# Directory created by dartdoc
# Don't commit pubspec lock file
# (Library packages only! Remove pattern if developing an application package)

View file

@ -0,0 +1,6 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Start Server" type="DartCommandLineRunConfigurationType" factoryName="Dart Command Line Application" singleton="true">
<option name="filePath" value="$PROJECT_DIR$/bin/server.dart" />
<method />
</configuration>
</component>

6
.idea/vcs.xml Normal file
View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

21
LICENSE Normal file
View file

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2016 angel-dart
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

20
bin/server.dart Normal file
View file

@ -0,0 +1,20 @@
import 'dart:async';
import 'dart:io';
import 'package:angel/angel.dart';
import 'package:angel_framework/angel_framework.dart';
main() async {
Angel app = createServer();
runZoned(() async {
await app.startServer(
new InternetAddress(app.properties['host']), app.properties['port']);
print("Angel server listening on ${app.httpServer.address.host}:${app
.httpServer.port}");
}, onError: (error, [StackTrace stackTrace]) {
stderr.writeln("Unhandled error occurred: $error");
if (stackTrace != null) {
stderr.writeln(stackTrace);
}
});
}

2
config/default.yaml Normal file
View file

@ -0,0 +1,2 @@
# Default server configuration.
host: 127.0.0.1

2
config/development.yaml Normal file
View file

@ -0,0 +1,2 @@
# Development-only server configuration.
port: 3000

2
config/production.yaml Normal file
View file

@ -0,0 +1,2 @@
# Production-only server configuration
port: 80

14
lib/angel.dart Normal file
View file

@ -0,0 +1,14 @@
/// Your very own web application!
library angel;
import 'package:angel_framework/angel_framework.dart';
import 'src/config/config.dart' show configureServer;
/// Creates and configures the server instance.
Angel createServer() {
Angel app = new Angel();
app.configure(configureServer);
return app;
}

View file

@ -0,0 +1,14 @@
/// Configuration for this Angel instance.
library angel.config;
import 'dart:io';
import 'package:angel_configuration/angel_configuration.dart';
import 'package:angel_framework/angel_framework.dart';
import 'package:angel_mustache/angel_mustache.dart';
import 'routes.dart';
configureServer(Angel app) {
app.configure(loadConfigurationFile());
app.configure(mustache(new Directory('views')));
app.configure(configureRoutes);
}

View file

@ -0,0 +1,20 @@
/// This app's route configuration.
library angel.routes;
import 'package:angel_framework/angel_framework.dart';
import 'package:angel_static/angel_static.dart';
/// Put your app routes here!
configureRoutes(Angel app) {
app.get('/', (req, ResponseContext res) => res.render('hello'));
app.get('*', serveStatic());
app.on404 = (RequestContext req, ResponseContext res) async {
res.willCloseItself = true;
res.status(404);
res.header('Content-Type', 'text/html');
res.underlyingResponse.write(
await app.viewGenerator('404', {'path': req.path}));
await res.underlyingResponse.close();
};
}

14
pubspec.yaml Normal file
View file

@ -0,0 +1,14 @@
name: angel
description: An easily-extensible web server framework in Dart.
version: 0.0.0-dev.0
author: thosakwe <thosakwe@gmail.com>
homepage: https://github.com/angel-dart/angel
dependencies:
angel_configuration: ">= 1.0.0-dev < 2.0.0"
angel_framework: ">=0.0.0-dev < 0.1.0"
angel_mustache: ">= 1.0.0-dev < 2.0.0"
angel_static: ">= 1.0.0-beta.1 < 1.1.0"
json_god: ">= 1.0.0 < 2.0.0"
dev_dependencies:
http: ">= 0.11.3 < 0.12.0"
test: ">= 0.12.13 < 0.13.0"

50
views/404.mustache Normal file
View file

@ -0,0 +1,50 @@
<!DOCTYPE html>
<html>
<head>
<title>404 Not Found</title>
<link href="https://fonts.googleapis.com/css?family=Lato:100" rel="stylesheet" type="text/css">
<style>
html, body {
height: 100%;
}
body {
margin: 0;
padding: 0;
width: 100%;
display: table;
font-weight: 100;
font-family: 'Lato', sans-serif;
}
.container {
text-align: center;
display: table-cell;
vertical-align: middle;
}
.content {
text-align: center;
display: inline-block;
}
.title {
font-size: 96px;
}
.subtitle {
font-size: 32px;
}
</style>
</head>
<body>
<div class="container">
<div class="content">
<div class="title">404 Not Found</div>
<div class="subtitle">No file was found at "{{path}}".</div>
</div>
</div>
</body>
</html>

45
views/hello.mustache Normal file
View file

@ -0,0 +1,45 @@
<!DOCTYPE html>
<html>
<head>
<title>Angel</title>
<link href="https://fonts.googleapis.com/css?family=Lato:100" rel="stylesheet" type="text/css">
<style>
html, body {
height: 100%;
}
body {
margin: 0;
padding: 0;
width: 100%;
display: table;
font-weight: 100;
font-family: 'Lato', sans-serif;
}
.container {
text-align: center;
display: table-cell;
vertical-align: middle;
}
.content {
text-align: center;
display: inline-block;
}
.title {
font-size: 96px;
}
</style>
</head>
<body>
<div class="container">
<div class="content">
<div class="title">Angel</div>
</div>
</div>
</body>
</html>

2
web/robots.txt Normal file
View file

@ -0,0 +1,2 @@
User-agent: *
Disallow: /admin