s3storage/docs/Structs/S3Storage.html

320 lines
18 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<title>S3Storage Structure Reference</title>
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
<meta charset='utf-8'>
<script src="../js/jquery.min.js" defer></script>
<script src="../js/jazzy.js" defer></script>
</head>
<body>
<a name="//apple_ref/swift/Struct/S3Storage" class="dashAnchor"></a>
<a title="S3Storage Structure Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="../index.html"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="../index.html"> Reference</a>
<img id="carat" src="../img/carat.png" />
S3Storage Structure Reference
</p>
</div>
<div class="content-wrapper">
<nav class="sidebar">
<ul class="nav-groups">
<li class="nav-group-name">
<a href="../Extensions.html">Extensions</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="../Extensions/S3.html">S3</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a href="../Protocols.html">Protocols</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="../Protocols/S3StorageClient.html">S3StorageClient</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a href="../Structs.html">Structures</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="../Structs/S3Storage.html">S3Storage</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section>
<section class="section">
<h1>S3Storage</h1>
<div class="declaration">
<div class="language">
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">S3Storage</span><span class="p">:</span> <span class="kt">Storage</span><span class="p">,</span> <span class="kt">ServiceType</span></code></pre>
</div>
</div>
<p>A <code>Storage</code> interface for the Amazon S3 API, backed with the <a href="https://github.com/LiveUI/S3">LiveUI/S3</a> library.</p>
<p><code>S3Storage</code> use an <code><a href="../Protocols/S3StorageClient.html">S3StorageClient</a></code> instead of <code>S3Client</code>. We conform the basic <code>S3</code> type for you, so as long as you register
your <code>S3</code> instance properly, everything should work as normal.</p>
<pre class="highlight swift"><code><span class="k">try</span> <span class="n">services</span><span class="o">.</span><span class="nf">register</span><span class="p">(</span><span class="kt">S3</span><span class="p">(</span><span class="n">defaultBucket</span><span class="p">:</span> <span class="n">bucket</span><span class="p">,</span> <span class="nv">signer</span><span class="p">:</span> <span class="n">signer</span><span class="p">),</span> <span class="nv">as</span><span class="p">:</span> <span class="kt">S3StorageClient</span><span class="o">.</span><span class="k">self</span><span class="p">)</span>
</code></pre>
<p>When uploading a file to Amazon S3, you can pass a path into the <code>.store(file:at:)</code> method. If you do, the file&rsquo;s localtion will be
<code>path/filename</code>. If no path is passed in and there is no default path, the file will be located at <code>filename</code>.</p>
<p>When accessing a file to read, override, or delete it, use the reletive path instead of the full URL.</p>
<pre class="highlight swift"><code><span class="n">storage</span><span class="o">.</span><span class="nf">fetch</span><span class="p">(</span><span class="nv">file</span><span class="p">:</span> <span class="s">"documents/README.md"</span><span class="p">)</span>
</code></pre>
</section>
<section class="section task-group-section">
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:9S3StorageAAV11makeService3forAB0D09Container_p_tKFZ"></a>
<a name="//apple_ref/swift/Method/makeService(for:)" class="dashAnchor"></a>
<a class="token" href="#/s:9S3StorageAAV11makeService3forAB0D09Container_p_tKFZ">makeService(for:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>See <code>ServiceType.makeService(for:)</code>.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="nf">makeService</span><span class="p">(</span><span class="k">for</span> <span class="nv">worker</span><span class="p">:</span> <span class="kt">Container</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-&gt;</span> <span class="kt">S3Storage</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:9S3StorageAAV11defaultPathSSSgvp"></a>
<a name="//apple_ref/swift/Property/defaultPath" class="dashAnchor"></a>
<a class="token" href="#/s:9S3StorageAAV11defaultPathSSSgvp">defaultPath</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The path that will be used if <code>nil</code> is passed into the <code><a href="../Structs/S3Storage.html#/s:9S3StorageAAV5store4file2at3NIO15EventLoopFutureCySSG4Core4FileV_SSSgtF">S3Storage.store(file:at:)</a></code> method</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">defaultPath</span><span class="p">:</span> <span class="kt">String</span><span class="p">?</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:9S3StorageAAV9container11defaultPathAB7Service9Container_p_SSSgtcfc"></a>
<a name="//apple_ref/swift/Method/init(container:defaultPath:)" class="dashAnchor"></a>
<a class="token" href="#/s:9S3StorageAAV9container11defaultPathAB7Service9Container_p_SSSgtcfc">init(container:defaultPath:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Creates a new <code>S3Storage</code> instance.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="nv">container</span><span class="p">:</span> <span class="kt">Container</span><span class="p">,</span> <span class="n"><a href="../Structs/S3Storage.html#/s:9S3StorageAAV11defaultPathSSSgvp">defaultPath</a></span><span class="p">:</span> <span class="kt">String</span><span class="p">?</span> <span class="o">=</span> <span class="kc">nil</span><span class="p">)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>container</em>
</code>
</td>
<td>
<div>
<p>The container used by the <code>S3Client</code> instance to create, read, and delete files.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>defaultPath</em>
</code>
</td>
<td>
<div>
<p>The default path that files will be stored at.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:9S3StorageAAV5store4file2at3NIO15EventLoopFutureCySSG4Core4FileV_SSSgtF"></a>
<a name="//apple_ref/swift/Method/store(file:at:)" class="dashAnchor"></a>
<a class="token" href="#/s:9S3StorageAAV5store4file2at3NIO15EventLoopFutureCySSG4Core4FileV_SSSgtF">store(file:at:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>See <code>Storage.store(file:at:)</code></p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">store</span><span class="p">(</span><span class="nv">file</span><span class="p">:</span> <span class="kt">Vapor</span><span class="o">.</span><span class="kt">File</span><span class="p">,</span> <span class="n">at</span> <span class="nv">path</span><span class="p">:</span> <span class="kt">String</span><span class="p">?</span> <span class="o">=</span> <span class="kc">nil</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kt">EventLoopFuture</span><span class="o">&lt;</span><span class="kt">String</span><span class="o">&gt;</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:9S3StorageAAV5fetch4file3NIO15EventLoopFutureCy4Core4FileVGSS_tF"></a>
<a name="//apple_ref/swift/Method/fetch(file:)" class="dashAnchor"></a>
<a class="token" href="#/s:9S3StorageAAV5fetch4file3NIO15EventLoopFutureCy4Core4FileVGSS_tF">fetch(file:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>See <code>Storage.fetch(file:)</code>.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">fetch</span><span class="p">(</span><span class="nv">file</span><span class="p">:</span> <span class="kt">String</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kt">EventLoopFuture</span><span class="o">&lt;</span><span class="kt">Vapor</span><span class="o">.</span><span class="kt">File</span><span class="o">&gt;</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:9S3StorageAAV5write4file4with7options3NIO15EventLoopFutureCy4Core4FileVGSS_10Foundation4DataVSo20NSDataWritingOptionsVtF"></a>
<a name="//apple_ref/swift/Method/write(file:with:options:)" class="dashAnchor"></a>
<a class="token" href="#/s:9S3StorageAAV5write4file4with7options3NIO15EventLoopFutureCy4Core4FileVGSS_10Foundation4DataVSo20NSDataWritingOptionsVtF">write(file:with:options:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>See <code>Storage.write(file:data:options:)</code>.</p>
<p>Amazon S3 does not support mutating files, so we just delete the existing one and upload a new version
with the data passed in. The <code>options</code> parameter is ignored.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">write</span><span class="p">(</span><span class="nv">file</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> <span class="n">with</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">options</span><span class="p">:</span> <span class="kt">Data</span><span class="o">.</span><span class="kt">WritingOptions</span> <span class="o">=</span> <span class="p">[])</span> <span class="o">-&gt;</span> <span class="kt">EventLoopFuture</span><span class="o">&lt;</span><span class="kt">Vapor</span><span class="o">.</span><span class="kt">File</span><span class="o">&gt;</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:9S3StorageAAV6delete4file3NIO15EventLoopFutureCyytGSS_tF"></a>
<a name="//apple_ref/swift/Method/delete(file:)" class="dashAnchor"></a>
<a class="token" href="#/s:9S3StorageAAV6delete4file3NIO15EventLoopFutureCyytGSS_tF">delete(file:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>See <code>Storage.delete(file:)</code>.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">delete</span><span class="p">(</span><span class="nv">file</span><span class="p">:</span> <span class="kt">String</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kt">EventLoopFuture</span><span class="o">&lt;</span><span class="kt">Void</span><span class="o">&gt;</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
</section>
</section>
<section id="footer">
<p>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-12-14)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.1</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>