summaryrefslogtreecommitdiff
path: root/vendor/aws/aws-crt-php/src/AWS/CRT/Auth/Signable.php
blob: 100b56ad56f06cac04f66bcc9043402e261a57d8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
/**
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * SPDX-License-Identifier: Apache-2.0.
 */
namespace AWS\CRT\Auth;

use AWS\CRT\IO\InputStream;
use AWS\CRT\NativeResource as NativeResource;

class Signable extends NativeResource {

    public static function fromHttpRequest($http_message) {
        return new Signable(function() use ($http_message) {
            return self::$crt->signable_new_from_http_request($http_message->native);
        });
    }

    public static function fromChunk($chunk_stream, $previous_signature="") {
        if (!($chunk_stream instanceof InputStream)) {
            $chunk_stream = new InputStream($chunk_stream);
        }
        return new Signable(function() use($chunk_stream, $previous_signature) {
            return self::$crt->signable_new_from_chunk($chunk_stream->native, $previous_signature);
        });
    }

    public static function fromCanonicalRequest($canonical_request) {
        return new Signable(function() use($canonical_request) {
            return self::$crt->signable_new_from_canonical_request($canonical_request);
        });
    }

    protected function __construct($ctor) {
        parent::__construct();
        $this->acquire($ctor());
    }

    function __destruct() {
        self::$crt->signable_release($this->release());
        parent::__destruct();
    }
}