diff --git a/.gitignore b/.gitignore index cfe11a4..f66e525 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ ## Build generated build/ DerivedData +Package.resolved ## Various settings *.pbxuser @@ -67,3 +68,5 @@ PerfectTemplate.xcodeproj Tests/ webroot/ Package.pins + +.DS_Store diff --git a/Package.swift b/Package.swift index c2604d5..60f9105 100644 --- a/Package.swift +++ b/Package.swift @@ -1,10 +1,21 @@ -// Generated automatically by Perfect Assistant Application -// Date: 2017-09-20 19:30:47 +0000 +// swift-tools-version:4.0 +// The swift-tools-version declares the minimum version of Swift required to build this package. + import PackageDescription + let package = Package( - name: "PerfectTemplate", - targets: [], - dependencies: [ - .Package(url: "https://github.com/PerfectlySoft/Perfect-HTTPServer.git", majorVersion: 3), - ] + name: "PerfectTemplate", + dependencies: [ + // Dependencies declare other packages that this package depends on. + .package(url: "https://github.com/PerfectlySoft/Perfect-HTTPServer.git", from: "3.0.3"), + ], + targets: [ + // Targets are the basic building blocks of a package. A target can define a module or a test suite. + // Targets can depend on other targets in this package, and on products in packages which this package depends on. + .target( + name: "PerfectTemplate", + dependencies: ["PerfectHTTPServer"], + path: "Sources"), + ] ) + diff --git a/README.md b/README.md index 5878a8a..5d21bad 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# PerfectTemplate [简体中文](README.zh_CN.md) +# PerfectTemplate [简体中文](README.zh_CN.md) [Русский](README.ru_RU.md)

@@ -54,8 +54,7 @@ The following will clone and build an empty starter project and launch the serve ``` git clone https://github.com/PerfectlySoft/PerfectTemplate.git cd PerfectTemplate -swift build -.build/debug/PerfectTemplate +swift run ``` You should see the following output: diff --git a/README.ru_RU.md b/README.ru_RU.md new file mode 100644 index 0000000..e86c8cf --- /dev/null +++ b/README.ru_RU.md @@ -0,0 +1,142 @@ +# PerfectTemplate [English](https://github.com/PerfectlySoft/PerfectTemplate) [简体中文](README.zh_CN.md) + +

+ + Get Involed with Perfect! + +

+ +

+ + Star Perfect On Github + + + Stack Overflow + + + Follow Perfect on Twitter + + + Join the Perfect Slack + +

+ +

+ + Swift 4.0 + + + Platforms OS X | Linux + + + License Apache + + + PerfectlySoft Twitter + + + Slack Status + +

+ +Чистый начальный проект Perfect + +Данный репозиторий содержит чистый проект Perfect, который можно клонировать и использовать при начале новой работы. Он собирается с помощью Swift Package Manager и запускает автономный HTTP. + +## Совместимость со Swift + +Ветка master этого проекта компилируется в **Xcode 9.1** и в **Swift 4.0.2** на Ubuntu. + +## Сборка и Запуск + +Клонирование и сборка чистого начального проекта, а также запуск сервера на порте 8080 и 8181. + +``` +git clone https://github.com/PerfectlySoft/PerfectTemplate.git +cd PerfectTemplate +swift run +``` + +После этого должно вывестись: + +``` +[INFO] Starting HTTP server localhost on 0.0.0.0:8181 +``` + +Это значит, что сервер запущен и ожидает соединений. Перейдите на [http://localhost:8181/](http://127.0.0.1:8181/), чтобы увидеть приветствие. Нажмите control-c для остановки сервера. + +## Начальное содержание + +Файл примера содержит простой обработчик запросов "hello, world!" и показывает, как хранить статические файлы, сжимать исходящий контент и запускать сверх одного сервера за раз. + +```swift +import PerfectLib +import PerfectHTTP +import PerfectHTTPServer + +// Пример обработчика запроса. +// Функция 'handler' будет указана непосредственно в конфигурации ниже. +func handler(data: [String:Any]) throws -> RequestHandler { + return { + request, response in + // Ответ простым сообщением. + response.setHeader(.contentType, value: "text/html") + response.appendBody(string: "Hello, world!Hello, world!") + // Убедитесь, что вызывается response.completed() в конце функции обработчика. + response.completed() + } +} + +// Конфигурация сервера-примера. +// Данный пример конфигурации показывает, как запускать сервер +// используя dictionary с ней. + + +let confData = [ + "servers": [ + // Конфигурация для одного сервера, который: + // * Хранит сообщение hello world на :/ + // * Хранит статические файлы в директории "./webroot" + // (которая должна быть размещена в данной рабочей директории). + // * По необходимости сжимает исходящие данные. + [ + "name":"localhost", + "port":8181, + "routes":[ + ["method":"get", "uri":"/", "handler":handler], + ["method":"get", "uri":"/**", "handler":PerfectHTTPServer.HTTPHandler.staticFiles, + "documentRoot":"./webroot", + "allowResponseFilters":true] + ], + "filters":[ + [ + "type":"response", + "priority":"high", + "name":PerfectHTTPServer.HTTPFilter.contentCompression, + ] + ] + ] + ] +] + +do { + // Запуск серверов на основе конфигурации. + try HTTPServer.launch(configurationData: confData) +} catch { + fatalError("\(error)") // fatal error при запуске одного из серверов +} +``` + + +## Проблемы + +Мы переходим к использованию JIRA для всех багов и решения проблем, поэтому GitHub Issues отключены. + +Если вы нашли ошибку, баг, или у вас есть любое другое полезное предложение по документации, пожалуйста, перейдите на [http://jira.perfect.org:8080/servicedesk/customer/portal/1](http://jira.perfect.org:8080/servicedesk/customer/portal/1) и напишите об этом. + +Весь список известных проблем находится на [http://jira.perfect.org:8080/projects/ISS/issues](http://jira.perfect.org:8080/projects/ISS/issues) + + + +## Дальнейшая информация +Для большей информации о проекте Perfect, пожалуйста, посетите [perfect.org](http://perfect.org). diff --git a/README.zh_CN.md b/README.zh_CN.md index a87a930..ea2980c 100644 --- a/README.zh_CN.md +++ b/README.zh_CN.md @@ -1,4 +1,4 @@ -# PerfectTemplate [English](https://github.com/PerfectlySoft/PerfectTemplate) +# PerfectTemplate [English](https://github.com/PerfectlySoft/PerfectTemplate) [Русский](README.ru_RU.md)

@@ -45,7 +45,7 @@ Perfect Web服务器项目模板 ###Swift兼容性 -本项目目前使用Swift 4.0工具链(Ubuntu)或Xcode 9编译。 +本项目目前使用Swift 4.0.2工具链(Ubuntu)或Xcode 9.1编译。 ## 编译运行 @@ -54,8 +54,7 @@ Perfect Web服务器项目模板 ``` git clone https://github.com/PerfectlySoft/PerfectTemplate.git cd PerfectTemplate -swift build -.build/debug/PerfectTemplate +swift run ``` 如果没有问题,输出应该看起来像是这样: