diff options
-rw-r--r-- | src/local/container.nim | 21 | ||||
-rw-r--r-- | src/local/pager.nim | 36 | ||||
-rw-r--r-- | src/server/buffer.nim | 5 | ||||
-rw-r--r-- | src/types/buffersource.nim | 2 |
4 files changed, 33 insertions, 31 deletions
diff --git a/src/local/container.nim b/src/local/container.nim index 9af35c63..a66104f4 100644 --- a/src/local/container.nim +++ b/src/local/container.nim @@ -139,7 +139,7 @@ proc newBuffer*(forkserver: ForkServer, config: BufferConfig, let attrs = getWindowAttributes(stdout) let (process, loaderPid) = forkserver.forkBuffer(source, config, attrs) if fd != -1: - loaderPid.passFd(source.location.host, fd) + loaderPid.passFd(source.request.url.host, fd) if fd == 0: # We are passing stdin. closeStdin() @@ -184,7 +184,7 @@ proc newBufferFrom*(forkserver: ForkServer, attrs: WindowAttributes, ) func location*(container: Container): URL {.jsfget.} = - return container.source.location + return container.source.request.url proc clone*(container: Container, newurl: URL): Promise[Container] = let url = if newurl != nil: @@ -226,7 +226,7 @@ proc clone*(container: Container, newurl: URL): Promise[Container] = cloned: true ) if newurl != nil: - ncontainer.source.location = newurl + ncontainer.source.request.url = newurl return ncontainer ) @@ -344,15 +344,17 @@ func maxScreenWidth(container: Container): int = func getTitle*(container: Container): string {.jsfunc.} = if container.title != "": return container.title - return container.source.location.serialize(excludepassword = true) + return container.location.serialize(excludepassword = true) func currentLineWidth(container: Container): int = if container.numLines == 0: return 0 return container.currentLine.width() -func maxfromy(container: Container): int = max(container.numLines - container.height, 0) +func maxfromy(container: Container): int = + return max(container.numLines - container.height, 0) -func maxfromx(container: Container): int = max(container.maxScreenWidth() - container.width, 0) +func maxfromx(container: Container): int = + return max(container.maxScreenWidth() - container.width, 0) func atPercentOf*(container: Container): int = if container.numLines == 0: return 100 @@ -1355,7 +1357,7 @@ proc onload*(container: Container, res: LoadResult) = container.setNumLines(lines, true) container.needslines = true container.triggerEvent(LOADED) - if not container.hasstart and container.source.location.anchor != "": + if not container.hasstart and container.location.anchor != "": return container.iface.gotoAnchor() ).then(proc(res: Opt[tuple[x, y: int]]) = if res.isSome: @@ -1377,7 +1379,8 @@ proc load(container: Container) = # set referrer policy, if any if res.referrerpolicy.isSome and container.config.referer_from: container.config.referrerpolicy = res.referrerpolicy.get - container.setLoadInfo("Connected to " & $container.source.location & ". Downloading...") + container.setLoadInfo("Connected to " & $container.location & + ". Downloading...") if res.needsAuth: container.triggerEvent(NEEDS_AUTH) if res.redirect != nil: @@ -1510,7 +1513,7 @@ proc windowChange*(container: Container, attrs: WindowAttributes) = container.needslines = true) proc peek(container: Container) {.jsfunc.} = - container.alert($container.source.location) + container.alert($container.location) proc clearHover*(container: Container) = container.lastpeek = low(HoverType) diff --git a/src/local/pager.nim b/src/local/pager.nim index 41ecb6a5..50591ee3 100644 --- a/src/local/pager.nim +++ b/src/local/pager.nim @@ -679,7 +679,7 @@ proc gotoURL(pager: Pager, request: Request, prevurl = none(URL), ctype = none(string), cs = CHARSET_UNKNOWN, replace: Container = nil, redirectdepth = 0, referrer: Container = nil) = if referrer != nil and referrer.config.referer_from: - request.referer = referrer.source.location + request.referer = referrer.location var bufferconfig = pager.applySiteconf(request.url) if prevurl.isNone or not prevurl.get.equals(request.url, true) or request.url.hash == "" or request.httpMethod != HTTP_GET: @@ -692,8 +692,7 @@ proc gotoURL(pager: Pager, request: Request, prevurl = none(URL), let source = BufferSource( request: request, contentType: ctype, - charset: cs, - location: request.url + charset: cs ) if referrer != nil: bufferconfig.referrerpolicy = referrer.config.referrerpolicy @@ -733,7 +732,7 @@ proc loadURL*(pager: Pager, url: string, ctype = none(string), let firstparse = parseURL(url) if firstparse.isSome: let prev = if pager.container != nil: - some(pager.container.source.location) + some(pager.container.location) else: none(URL) pager.gotoURL(newRequest(firstparse.get), prev, ctype, cs) @@ -765,8 +764,7 @@ proc readPipe0*(pager: Pager, ctype: Option[string], cs: Charset, let source = BufferSource( request: newRequest(location), contentType: some(ctype.get("text/plain")), - charset: cs, - location: location + charset: cs ) return pager.newBuffer(bufferconfig, source, title = title, canreinterpret = canreinterpret, fd = fd) @@ -836,12 +834,12 @@ proc updateReadLine*(pager: Pager) = pager.username = lineedit.news pager.setLineEdit("Password: ", PASSWORD, hide = true) of PASSWORD: - let url = newURL(pager.container.source.location) + let url = newURL(pager.container.location) url.username = pager.username url.password = lineedit.news pager.username = "" pager.gotoURL( - newRequest(url), some(pager.container.source.location), + newRequest(url), some(pager.container.location), replace = pager.container, referrer = pager.container ) @@ -878,12 +876,12 @@ proc load(pager: Pager, s = "") {.jsfunc.} = else: var url = s if url == "": - url = pager.container.source.location.serialize() + url = pager.container.location.serialize() pager.setLineEdit("URL: ", LOCATION, url) # Reload the page in a new buffer, then kill the previous buffer. proc reload(pager: Pager) {.jsfunc.} = - pager.gotoURL(newRequest(pager.container.source.location), none(URL), + pager.gotoURL(newRequest(pager.container.location), none(URL), pager.container.contentType, replace = pager.container) proc setEnvVars(pager: Pager) {.jsfunc.} = @@ -1186,7 +1184,7 @@ proc handleEvent0(pager: Pager, container: Container, event: ContainerEvent): bo pager.gotoURL(newRequest(container.retry.pop()), ctype = container.contentType) else: - pager.alert("Can't load " & $container.source.location & " (" & + pager.alert("Can't load " & $container.location & " (" & container.errorMessage & ")") return false of SUCCESS: @@ -1221,7 +1219,7 @@ proc handleEvent0(pager: Pager, container: Container, event: ContainerEvent): bo of REDIRECT: if container.redirectdepth < pager.config.network.max_redirect: pager.alert("Redirecting to " & $event.request.url) - pager.gotoURL(event.request, some(container.source.location), + pager.gotoURL(event.request, some(container.location), replace = container, redirectdepth = container.redirectdepth + 1, referrer = pager.container) else: @@ -1229,7 +1227,7 @@ proc handleEvent0(pager: Pager, container: Container, event: ContainerEvent): bo pager.deleteContainer(container) return false of ANCHOR: - var url2 = newURL(container.source.location) + var url2 = newURL(container.location) url2.setHash(event.anchor) pager.dupeBuffer(container, url2) of NO_ANCHOR: @@ -1250,12 +1248,16 @@ proc handleEvent0(pager: Pager, container: Container, event: ContainerEvent): bo pager.container.readCanceled() pager.redraw = true of OPEN: - if pager.container == nil or not pager.container.isHoverURL(event.request.url): - pager.ask("Open pop-up? " & $event.request.url).then(proc(x: bool) = + let url = event.request.url + if pager.container == nil or not pager.container.isHoverURL(url): + pager.ask("Open pop-up? " & $url).then(proc(x: bool) = if x: - pager.gotoURL(event.request, some(container.source.location), referrer = pager.container)) + pager.gotoURL(event.request, some(container.location), + referrer = pager.container) + ) else: - pager.gotoURL(event.request, some(container.source.location), referrer = pager.container) + pager.gotoURL(event.request, some(container.location), + referrer = pager.container) of INVALID_COMMAND: discard of STATUS: if pager.container == container: diff --git a/src/server/buffer.nim b/src/server/buffer.nim index 19a1407b..7dcca52f 100644 --- a/src/server/buffer.nim +++ b/src/server/buffer.nim @@ -272,7 +272,7 @@ macro task(fun: typed) = fun func url(buffer: Buffer): URL = - return buffer.source.location + return buffer.source.request.url func charsets(buffer: Buffer): seq[Charset] = if buffer.source.charset != CHARSET_UNKNOWN: @@ -852,7 +852,6 @@ proc readFromFd*(buffer: Buffer, url: URL, ishtml: bool) {.proxy.} = let request = newRequest(url) buffer.source = BufferSource( request: request, - location: buffer.source.location, contentType: some(contentType), charset: buffer.source.charset ) @@ -953,7 +952,7 @@ proc clone*(buffer: Buffer, newurl: URL): Pid {.proxy.} = let ssock = initServerSocket(buffered = false) buffer.ssock = ssock ps.write(char(0)) - buffer.source.location = newurl + buffer.source.request.url = newurl for it in buffer.tasks.mitems: it = 0 let socks = ssock.acceptSocketStream() diff --git a/src/types/buffersource.nim b/src/types/buffersource.nim index 675d2a2a..60fd7137 100644 --- a/src/types/buffersource.nim +++ b/src/types/buffersource.nim @@ -1,13 +1,11 @@ import std/options import loader/request -import types/url import chakasu/charset type BufferSource* = object - location*: URL contentType*: Option[string] # override charset*: Charset # fallback request*: Request |