mirror of
https://github.com/wailsapp/wails.git
synced 2026-03-16 23:55:52 +01:00
This commit integrates iOS platform support for Wails v3, adapting the iOS-specific code to work with the new transport layer architecture. Key changes: - Add iOS-specific application, webview, and runtime files - Add iOS event types and processing - Add iOS examples and templates - Update messageprocessor to handle iOS requests - Move badge_ios.go to dock package Note: The iOS branch was based on an older v3-alpha and required significant conflict resolution due to the transport layer refactor (PR #4702). Some iOS-specific code may need further adaptation: - processIOSMethod needs to be implemented with new RuntimeRequest signature - iOS event generation in tasks/events/generate.go needs updating 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
77 lines
2.1 KiB
Go
77 lines
2.1 KiB
Go
package assetserver
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
"fmt"
|
|
"io"
|
|
"log/slog"
|
|
"net/http"
|
|
"strings"
|
|
)
|
|
|
|
const (
|
|
HeaderHost = "Host"
|
|
HeaderContentType = "Content-Type"
|
|
HeaderContentLength = "Content-Length"
|
|
HeaderUserAgent = "User-Agent"
|
|
// TODO: Is this needed?
|
|
HeaderCacheControl = "Cache-Control"
|
|
HeaderUpgrade = "Upgrade"
|
|
|
|
WailsUserAgentValue = "wails.io"
|
|
)
|
|
|
|
type assetServerLogger struct{}
|
|
|
|
var assetServerLoggerKey assetServerLogger
|
|
|
|
func ServeFile(rw http.ResponseWriter, filename string, blob []byte) error {
|
|
header := rw.Header()
|
|
header.Set(HeaderContentLength, fmt.Sprintf("%d", len(blob)))
|
|
if mimeType := header.Get(HeaderContentType); mimeType == "" {
|
|
mimeType = GetMimetype(filename, blob)
|
|
header.Set(HeaderContentType, mimeType)
|
|
// Debug CSS serving with clear markers
|
|
if strings.HasSuffix(filename, ".css") {
|
|
fmt.Printf("\n🎨🎨🎨🎨🎨🎨🎨🎨🎨🎨🎨🎨🎨🎨🎨\n")
|
|
fmt.Printf("CSS FILE BEING SERVED:\n")
|
|
fmt.Printf(" Filename: %s\n", filename)
|
|
fmt.Printf(" MimeType: %s\n", mimeType)
|
|
fmt.Printf(" Size: %d bytes\n", len(blob))
|
|
if len(blob) > 0 {
|
|
preview := string(blob)
|
|
if len(preview) > 100 {
|
|
preview = preview[:100] + "..."
|
|
}
|
|
fmt.Printf(" Preview: %s\n", preview)
|
|
}
|
|
fmt.Printf("🎨🎨🎨🎨🎨🎨🎨🎨🎨🎨🎨🎨🎨🎨🎨\n\n")
|
|
}
|
|
}
|
|
|
|
rw.WriteHeader(http.StatusOK)
|
|
_, err := io.Copy(rw, bytes.NewReader(blob))
|
|
return err
|
|
}
|
|
|
|
func isWebSocket(req *http.Request) bool {
|
|
upgrade := req.Header.Get(HeaderUpgrade)
|
|
return strings.EqualFold(upgrade, "websocket")
|
|
}
|
|
|
|
func contextWithLogger(ctx context.Context, logger *slog.Logger) context.Context {
|
|
return context.WithValue(ctx, assetServerLoggerKey, logger)
|
|
}
|
|
|
|
func logInfo(ctx context.Context, message string, args ...interface{}) {
|
|
if logger, _ := ctx.Value(assetServerLoggerKey).(*slog.Logger); logger != nil {
|
|
logger.Info(message, args...)
|
|
}
|
|
}
|
|
|
|
func logError(ctx context.Context, message string, args ...interface{}) {
|
|
if logger, _ := ctx.Value(assetServerLoggerKey).(*slog.Logger); logger != nil {
|
|
logger.Error(message, args...)
|
|
}
|
|
}
|