<!--
{
  "availability" : [

  ],
  "documentType" : "symbol",
  "framework" : "Tor",
  "identifier" : "/documentation/Tor/ControlProtocolParser/parseAddOnionResponse(_:)-7qmef",
  "metadataVersion" : "0.1.0",
  "role" : "Type Method",
  "symbol" : {
    "kind" : "Type Method",
    "modules" : [
      "Tor"
    ],
    "preciseIdentifier" : "s:3Tor21ControlProtocolParserO21parseAddOnionResponseyAA0fgH0VSaySSGKFZ"
  },
  "title" : "parseAddOnionResponse(_:)"
}
-->

# parseAddOnionResponse(_:)

Decode an `ADD_ONION` response directly from raw reply lines.

```
static func parseAddOnionResponse(_ rawLines: [String]) throws -> AddOnionResponse
```

## Parameters

`rawLines`

Raw reply lines produced by
[`readReply()`](/documentation/Tor/ControlSocket/readReply()).

## Return Value

A decoded [`AddOnionResponse`](/documentation/Tor/AddOnionResponse).

## Discussion

Composes [`parseReply(_:)`](/documentation/Tor/ControlProtocolParser/parseReply(_:)) and
[`parseAddOnionResponse(_:)`](/documentation/Tor/ControlProtocolParser/parseAddOnionResponse(_:)-rg89). Useful when a
caller holds the raw lines (from a persisted transcript or a
mock socket) and doesn’t want to parse in two steps.

> Throws: Errors from both underlying parsers.