Skip to content

Repository files navigation

Swift Server Project HTTP APIs

This is an early implementation of the Swift Server Project's HTTP APIs. This provides simple HTTP server on which rich web application frameworks can be built.

Getting Started

Hello World

The following code implements a very simple "Hello World!" server:

import Foundation
import HTTP
func hello(request:HTTPRequest, response:HTTPResponseWriter)->HTTPBodyProcessing{ response.writeHeader(status:.ok) response.writeBody("Hello, World!") response.done()return.discardBody }letserver=HTTPServer()try! server.start(port:8080, handler: hello)RunLoop.current.run()

The hello() function receives a HTTPRequest that describes the request and a HTTPResponseWriter used to write a response.

Data that is received as part of the request body is made available to the closure that is returned by the hello() function. In the "Hello World!" example the request body is not used, so .discardBody is returned.

Echo Server

The following code implements a very simple Echo server that responds with the contents of the incoming request:

import Foundation
import HTTP
func echo(request:HTTPRequest, response:HTTPResponseWriter)->HTTPBodyProcessing{
response.writeHeader(status:.ok)return.processBody {(chunk, stop)inswitch chunk {case.chunk(let data,let finishedProcessing):
response.writeBody(data){ _ infinishedProcessing()}case.end:
response.done()default:
stop =true
response.abort()}}}letserver=HTTPServer()try! server.start(port:8080, handler: echo)RunLoop.current.run()

As the Echo server needs to process the request body data and return it in the reponse, the echo() function returns a .processBody closure. This closure is called with .chunk when data is available for processing from the request, and .end when no more data is available.

Once any data chunk has been processed, finishedProcessing() should be called to signify that it has been handled.

When the response is complete, response.done() should be called.

API Documentation

Full Jazzy documentation of the API is available here:
https://swift-server.github.io/http/

Contributing

Feedback

We are actively seeking feedback on this prototype and your comments are extremely valuable. If you have any comments on the API design, the implementation, or any other aspects of this project, please email the swift-server-dev mailing list.

Writing Code

We also welcome code contributions. If you are developing on macOS, you may want to work within Xcode. This project uses the Swift Package Manager. To work on this project within Xcode you can run the Swift Package Manager command swift package generate-xcodeproj to generate an .xcodeproj to work on within Xcode.

Acknowledgements

This project is based on an inital proposal from @weissi on the swift-server-dev mailing list:
https://lists.swift.org/pipermail/swift-server-dev/Week-of-Mon-20170403/000422.html

About

Repository for the development of cross-platform HTTP APIs

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - swift-vim/http: Repository for the development of cross-platform HTTP APIs · GitHub
Skip to content

Repository files navigation

Swift Server Project HTTP APIs

This is an early implementation of the Swift Server Project's HTTP APIs. This provides simple HTTP server on which rich web application frameworks can be built.

Getting Started

Hello World

The following code implements a very simple "Hello World!" server:

import Foundation
import HTTP
func hello(request:HTTPRequest, response:HTTPResponseWriter)->HTTPBodyProcessing{ response.writeHeader(status:.ok) response.writeBody("Hello, World!") response.done()return.discardBody }letserver=HTTPServer()try! server.start(port:8080, handler: hello)RunLoop.current.run()

The hello() function receives a HTTPRequest that describes the request and a HTTPResponseWriter used to write a response.

Data that is received as part of the request body is made available to the closure that is returned by the hello() function. In the "Hello World!" example the request body is not used, so .discardBody is returned.

Echo Server

The following code implements a very simple Echo server that responds with the contents of the incoming request:

import Foundation
import HTTP
func echo(request:HTTPRequest, response:HTTPResponseWriter)->HTTPBodyProcessing{
response.writeHeader(status:.ok)return.processBody {(chunk, stop)inswitch chunk {case.chunk(let data,let finishedProcessing):
response.writeBody(data){ _ infinishedProcessing()}case.end:
response.done()default:
stop =true
response.abort()}}}letserver=HTTPServer()try! server.start(port:8080, handler: echo)RunLoop.current.run()

As the Echo server needs to process the request body data and return it in the reponse, the echo() function returns a .processBody closure. This closure is called with .chunk when data is available for processing from the request, and .end when no more data is available.

Once any data chunk has been processed, finishedProcessing() should be called to signify that it has been handled.

When the response is complete, response.done() should be called.

API Documentation

Full Jazzy documentation of the API is available here:
https://swift-server.github.io/http/

Contributing

Feedback

We are actively seeking feedback on this prototype and your comments are extremely valuable. If you have any comments on the API design, the implementation, or any other aspects of this project, please email the swift-server-dev mailing list.

Writing Code

We also welcome code contributions. If you are developing on macOS, you may want to work within Xcode. This project uses the Swift Package Manager. To work on this project within Xcode you can run the Swift Package Manager command swift package generate-xcodeproj to generate an .xcodeproj to work on within Xcode.

Acknowledgements

This project is based on an inital proposal from @weissi on the swift-server-dev mailing list:
https://lists.swift.org/pipermail/swift-server-dev/Week-of-Mon-20170403/000422.html

About

Repository for the development of cross-platform HTTP APIs

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - swift-vim/http: Repository for the development of cross-platform HTTP APIs · GitHub
Skip to content

Repository files navigation

Swift Server Project HTTP APIs

This is an early implementation of the Swift Server Project's HTTP APIs. This provides simple HTTP server on which rich web application frameworks can be built.

Getting Started

Hello World

The following code implements a very simple "Hello World!" server:

import Foundation
import HTTP
func hello(request:HTTPRequest, response:HTTPResponseWriter)->HTTPBodyProcessing{ response.writeHeader(status:.ok) response.writeBody("Hello, World!") response.done()return.discardBody }letserver=HTTPServer()try! server.start(port:8080, handler: hello)RunLoop.current.run()

The hello() function receives a HTTPRequest that describes the request and a HTTPResponseWriter used to write a response.

Data that is received as part of the request body is made available to the closure that is returned by the hello() function. In the "Hello World!" example the request body is not used, so .discardBody is returned.

Echo Server

The following code implements a very simple Echo server that responds with the contents of the incoming request:

import Foundation
import HTTP
func echo(request:HTTPRequest, response:HTTPResponseWriter)->HTTPBodyProcessing{
response.writeHeader(status:.ok)return.processBody {(chunk, stop)inswitch chunk {case.chunk(let data,let finishedProcessing):
response.writeBody(data){ _ infinishedProcessing()}case.end:
response.done()default:
stop =true
response.abort()}}}letserver=HTTPServer()try! server.start(port:8080, handler: echo)RunLoop.current.run()

As the Echo server needs to process the request body data and return it in the reponse, the echo() function returns a .processBody closure. This closure is called with .chunk when data is available for processing from the request, and .end when no more data is available.

Once any data chunk has been processed, finishedProcessing() should be called to signify that it has been handled.

When the response is complete, response.done() should be called.

API Documentation

Full Jazzy documentation of the API is available here:
https://swift-server.github.io/http/

Contributing

Feedback

We are actively seeking feedback on this prototype and your comments are extremely valuable. If you have any comments on the API design, the implementation, or any other aspects of this project, please email the swift-server-dev mailing list.

Writing Code

We also welcome code contributions. If you are developing on macOS, you may want to work within Xcode. This project uses the Swift Package Manager. To work on this project within Xcode you can run the Swift Package Manager command swift package generate-xcodeproj to generate an .xcodeproj to work on within Xcode.

Acknowledgements

This project is based on an inital proposal from @weissi on the swift-server-dev mailing list:
https://lists.swift.org/pipermail/swift-server-dev/Week-of-Mon-20170403/000422.html

About

Repository for the development of cross-platform HTTP APIs

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - swift-vim/http: Repository for the development of cross-platform HTTP APIs · GitHub
Skip to content

Repository files navigation

Swift Server Project HTTP APIs

This is an early implementation of the Swift Server Project's HTTP APIs. This provides simple HTTP server on which rich web application frameworks can be built.

Getting Started

Hello World

The following code implements a very simple "Hello World!" server:

import Foundation
import HTTP
func hello(request:HTTPRequest, response:HTTPResponseWriter)->HTTPBodyProcessing{ response.writeHeader(status:.ok) response.writeBody("Hello, World!") response.done()return.discardBody }letserver=HTTPServer()try! server.start(port:8080, handler: hello)RunLoop.current.run()

The hello() function receives a HTTPRequest that describes the request and a HTTPResponseWriter used to write a response.

Data that is received as part of the request body is made available to the closure that is returned by the hello() function. In the "Hello World!" example the request body is not used, so .discardBody is returned.

Echo Server

The following code implements a very simple Echo server that responds with the contents of the incoming request:

import Foundation
import HTTP
func echo(request:HTTPRequest, response:HTTPResponseWriter)->HTTPBodyProcessing{
response.writeHeader(status:.ok)return.processBody {(chunk, stop)inswitch chunk {case.chunk(let data,let finishedProcessing):
response.writeBody(data){ _ infinishedProcessing()}case.end:
response.done()default:
stop =true
response.abort()}}}letserver=HTTPServer()try! server.start(port:8080, handler: echo)RunLoop.current.run()

As the Echo server needs to process the request body data and return it in the reponse, the echo() function returns a .processBody closure. This closure is called with .chunk when data is available for processing from the request, and .end when no more data is available.

Once any data chunk has been processed, finishedProcessing() should be called to signify that it has been handled.

When the response is complete, response.done() should be called.

API Documentation

Full Jazzy documentation of the API is available here:
https://swift-server.github.io/http/

Contributing

Feedback

We are actively seeking feedback on this prototype and your comments are extremely valuable. If you have any comments on the API design, the implementation, or any other aspects of this project, please email the swift-server-dev mailing list.

Writing Code

We also welcome code contributions. If you are developing on macOS, you may want to work within Xcode. This project uses the Swift Package Manager. To work on this project within Xcode you can run the Swift Package Manager command swift package generate-xcodeproj to generate an .xcodeproj to work on within Xcode.

Acknowledgements

This project is based on an inital proposal from @weissi on the swift-server-dev mailing list:
https://lists.swift.org/pipermail/swift-server-dev/Week-of-Mon-20170403/000422.html

About

Repository for the development of cross-platform HTTP APIs

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - swift-vim/http: Repository for the development of cross-platform HTTP APIs · GitHub
Skip to content

Repository files navigation

Swift Server Project HTTP APIs

This is an early implementation of the Swift Server Project's HTTP APIs. This provides simple HTTP server on which rich web application frameworks can be built.

Getting Started

Hello World

The following code implements a very simple "Hello World!" server:

import Foundation
import HTTP
func hello(request:HTTPRequest, response:HTTPResponseWriter)->HTTPBodyProcessing{ response.writeHeader(status:.ok) response.writeBody("Hello, World!") response.done()return.discardBody }letserver=HTTPServer()try! server.start(port:8080, handler: hello)RunLoop.current.run()

The hello() function receives a HTTPRequest that describes the request and a HTTPResponseWriter used to write a response.

Data that is received as part of the request body is made available to the closure that is returned by the hello() function. In the "Hello World!" example the request body is not used, so .discardBody is returned.

Echo Server

The following code implements a very simple Echo server that responds with the contents of the incoming request:

import Foundation
import HTTP
func echo(request:HTTPRequest, response:HTTPResponseWriter)->HTTPBodyProcessing{
response.writeHeader(status:.ok)return.processBody {(chunk, stop)inswitch chunk {case.chunk(let data,let finishedProcessing):
response.writeBody(data){ _ infinishedProcessing()}case.end:
response.done()default:
stop =true
response.abort()}}}letserver=HTTPServer()try! server.start(port:8080, handler: echo)RunLoop.current.run()

As the Echo server needs to process the request body data and return it in the reponse, the echo() function returns a .processBody closure. This closure is called with .chunk when data is available for processing from the request, and .end when no more data is available.

Once any data chunk has been processed, finishedProcessing() should be called to signify that it has been handled.

When the response is complete, response.done() should be called.

API Documentation

Full Jazzy documentation of the API is available here:
https://swift-server.github.io/http/

Contributing

Feedback

We are actively seeking feedback on this prototype and your comments are extremely valuable. If you have any comments on the API design, the implementation, or any other aspects of this project, please email the swift-server-dev mailing list.

Writing Code

We also welcome code contributions. If you are developing on macOS, you may want to work within Xcode. This project uses the Swift Package Manager. To work on this project within Xcode you can run the Swift Package Manager command swift package generate-xcodeproj to generate an .xcodeproj to work on within Xcode.

Acknowledgements

This project is based on an inital proposal from @weissi on the swift-server-dev mailing list:
https://lists.swift.org/pipermail/swift-server-dev/Week-of-Mon-20170403/000422.html

About

Repository for the development of cross-platform HTTP APIs

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - swift-vim/http: Repository for the development of cross-platform HTTP APIs · GitHub
Skip to content

Repository files navigation

Swift Server Project HTTP APIs

This is an early implementation of the Swift Server Project's HTTP APIs. This provides simple HTTP server on which rich web application frameworks can be built.

Getting Started

Hello World

The following code implements a very simple "Hello World!" server:

import Foundation
import HTTP
func hello(request:HTTPRequest, response:HTTPResponseWriter)->HTTPBodyProcessing{ response.writeHeader(status:.ok) response.writeBody("Hello, World!") response.done()return.discardBody }letserver=HTTPServer()try! server.start(port:8080, handler: hello)RunLoop.current.run()

The hello() function receives a HTTPRequest that describes the request and a HTTPResponseWriter used to write a response.

Data that is received as part of the request body is made available to the closure that is returned by the hello() function. In the "Hello World!" example the request body is not used, so .discardBody is returned.

Echo Server

The following code implements a very simple Echo server that responds with the contents of the incoming request:

import Foundation
import HTTP
func echo(request:HTTPRequest, response:HTTPResponseWriter)->HTTPBodyProcessing{
response.writeHeader(status:.ok)return.processBody {(chunk, stop)inswitch chunk {case.chunk(let data,let finishedProcessing):
response.writeBody(data){ _ infinishedProcessing()}case.end:
response.done()default:
stop =true
response.abort()}}}letserver=HTTPServer()try! server.start(port:8080, handler: echo)RunLoop.current.run()

As the Echo server needs to process the request body data and return it in the reponse, the echo() function returns a .processBody closure. This closure is called with .chunk when data is available for processing from the request, and .end when no more data is available.

Once any data chunk has been processed, finishedProcessing() should be called to signify that it has been handled.

When the response is complete, response.done() should be called.

API Documentation

Full Jazzy documentation of the API is available here:
https://swift-server.github.io/http/

Contributing

Feedback

We are actively seeking feedback on this prototype and your comments are extremely valuable. If you have any comments on the API design, the implementation, or any other aspects of this project, please email the swift-server-dev mailing list.

Writing Code

We also welcome code contributions. If you are developing on macOS, you may want to work within Xcode. This project uses the Swift Package Manager. To work on this project within Xcode you can run the Swift Package Manager command swift package generate-xcodeproj to generate an .xcodeproj to work on within Xcode.

Acknowledgements

This project is based on an inital proposal from @weissi on the swift-server-dev mailing list:
https://lists.swift.org/pipermail/swift-server-dev/Week-of-Mon-20170403/000422.html

About

Repository for the development of cross-platform HTTP APIs

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); GitHub - swift-vim/http: Repository for the development of cross-platform HTTP APIs · GitHub
Skip to content

Repository files navigation

Swift Server Project HTTP APIs

This is an early implementation of the Swift Server Project's HTTP APIs. This provides simple HTTP server on which rich web application frameworks can be built.

Getting Started

Hello World

The following code implements a very simple "Hello World!" server:

import Foundation
import HTTP
func hello(request:HTTPRequest, response:HTTPResponseWriter)->HTTPBodyProcessing{ response.writeHeader(status:.ok) response.writeBody("Hello, World!") response.done()return.discardBody }letserver=HTTPServer()try! server.start(port:8080, handler: hello)RunLoop.current.run()

The hello() function receives a HTTPRequest that describes the request and a HTTPResponseWriter used to write a response.

Data that is received as part of the request body is made available to the closure that is returned by the hello() function. In the "Hello World!" example the request body is not used, so .discardBody is returned.

Echo Server

The following code implements a very simple Echo server that responds with the contents of the incoming request:

import Foundation
import HTTP
func echo(request:HTTPRequest, response:HTTPResponseWriter)->HTTPBodyProcessing{
response.writeHeader(status:.ok)return.processBody {(chunk, stop)inswitch chunk {case.chunk(let data,let finishedProcessing):
response.writeBody(data){ _ infinishedProcessing()}case.end:
response.done()default:
stop =true
response.abort()}}}letserver=HTTPServer()try! server.start(port:8080, handler: echo)RunLoop.current.run()

As the Echo server needs to process the request body data and return it in the reponse, the echo() function returns a .processBody closure. This closure is called with .chunk when data is available for processing from the request, and .end when no more data is available.

Once any data chunk has been processed, finishedProcessing() should be called to signify that it has been handled.

When the response is complete, response.done() should be called.

API Documentation

Full Jazzy documentation of the API is available here:
https://swift-server.github.io/http/

Contributing

Feedback

We are actively seeking feedback on this prototype and your comments are extremely valuable. If you have any comments on the API design, the implementation, or any other aspects of this project, please email the swift-server-dev mailing list.

Writing Code

We also welcome code contributions. If you are developing on macOS, you may want to work within Xcode. This project uses the Swift Package Manager. To work on this project within Xcode you can run the Swift Package Manager command swift package generate-xcodeproj to generate an .xcodeproj to work on within Xcode.

Acknowledgements

This project is based on an inital proposal from @weissi on the swift-server-dev mailing list:
https://lists.swift.org/pipermail/swift-server-dev/Week-of-Mon-20170403/000422.html

About

Repository for the development of cross-platform HTTP APIs

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages