Laravel을 사용하여 HelloSign 문서 다운로드
사용한 것
단계
.env
파일에 API 추가HELLO_SIGN_API_KEY=
config 폴더에 생성
hellosign.php
<?php
return [
'api_key' => env('HELLO_SIGN_API_KEY')
];
HelloSign 문서 ID에 대한 마이그레이션
create_signature_requests_table
을 생성하고 다음 열을 추가합니다.$table->string('signature_request_id');
$table->boolean('downloaded');
모델
SignatureRequest
을 생성하고 다음을 추가합니다.$table->string('signature_request_id');
$table->boolean('downloaded');
routes/web.php
로 이동하여 다음을 추가하십시오.use App\Jobs\DownloadJob;
Route::get('/', function () {
$api_key = config('hellosign.api_key');
$page = 1;
$total_pages = 99; // just a temporary high number
while($page <= $total_pages) {
// max out the per page and documents from all accounts
$response = Http::get("https://{$api_key}:@api.hellosign.com/v3/signature_request/list?account_id=all&page_size=100&page={$page}");
$object = $response->object();
// set the number of total pages of documents
if($page == 1) {
$total_pages = $object->list_info->num_pages;
}
// loop through each result and get the signature_request_id if it exists
foreach($object->signature_requests as $sig) {
if(!isset($sig->signature_request_id)){
SignatureRequest::create(['signature_request_id' => $sig->signature_request_id]);
}
}
// increase the page
$page++;
}
});
Route::get('download', function() {
// get all signature ids that are not downloaded yet
$sigs = SignatureRequest::where('downloaded', false)->get();
// chunk it into 20, HelloSign API limits 25 requests per minute
$chunks = $sigs->chunk(20);
$chunks->all();
// wait in minutes
$wait = 0;
foreach($chunks->all() as $chunk) {
foreach($chunk as $sig) {
// dispatch the download job and delay it by now + minutes
dispatch(new DownloadJob($sig))->delay(now()->addMinutes($wait));
}
// increase wait time
$wait++;
}
});
작업
DownloadJob
을 생성하고 다음과 같이 업데이트합니다.namespace App\Jobs;
...
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Storage;
use App\Models\SignatureRequest;
...
public $sig;
public function __construct(SignatureRequest $sig)
{
$this->sig = $sig;
}
public function handle()
{
$api_key = config('hellosign.api_key');
// request the document
$response = Http::get("https://{$api_key}:@api.hellosign.com/v3/signature_request/files/{$this->sig->signature_request_id}");
// only download if response code is 200
if($response->status() == 200) {
// save the document into a `documents` folder in storage with the document id as it's file name
Storage::put("documents/{$this->sig->signature_request_id}.pdf", $response->body() );
// update db to downloaded
$this->sig->downloaded = true;
$this->sig->save();
}
}
php artisan migrate
로 마이그레이션 실행 php artisan queue:work
localhost
로 이동하십시오.localhost/download
로 이동하여 다운로드를 대기열에 넣습니다Reference
이 문제에 관하여(Laravel을 사용하여 HelloSign 문서 다운로드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/devlogbook/download-hellosign-documents-using-laravel-3bcd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)