OfflineIndexController.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use Illuminate\Support\Facades\Cache;
  5. use App\Tools\RedisClusters;
  6. use Illuminate\Support\Facades\Redis;
  7. use Illuminate\Support\Facades\Log;
  8. use Illuminate\Support\Facades\Storage;
  9. use Illuminate\Support\Facades\App;
  10. class OfflineIndexController extends Controller
  11. {
  12. /**
  13. * Display a listing of the resource.
  14. *
  15. * @return \Illuminate\Http\Response
  16. */
  17. public function index(Request $request)
  18. {
  19. //
  20. $key = '/offline/index/wikipali-offline';
  21. if($request->has('file')){
  22. $key .= '-'.$request->get('file');
  23. }
  24. if(RedisClusters::has($key)){
  25. $fileInfo = RedisClusters::get($key);
  26. foreach ($fileInfo as $key => $file) {
  27. $zipFile = $file['filename'];
  28. $bucket = config('mint.attachments.bucket_name.temporary');
  29. $tmpFile = $bucket.'/'. $zipFile ;
  30. $url = array();
  31. foreach (config('mint.server.cdn_urls') as $key => $cdn) {
  32. $url[] = [
  33. 'link' => $cdn . '/' . $zipFile,
  34. 'hostname' =>'cdn-' . $key,
  35. ];
  36. }
  37. if (App::environment('local')) {
  38. $s3Link = Storage::url($tmpFile);
  39. }else{
  40. try{
  41. $s3Link = Storage::temporaryUrl($tmpFile, now()->addDays(2));
  42. }catch(\Exception $e){
  43. Log::error('offline-index {Exception}',['exception'=>$e]);
  44. continue;
  45. }
  46. }
  47. Log::info('offline-index: link='.$s3Link);
  48. $url[] = [
  49. 'link'=>$s3Link,
  50. 'hostname'=>'Amazon cloud storage(Hongkong)',
  51. ];
  52. $fileInfo[$key]['url'] = $url;
  53. }
  54. return response()->json($fileInfo,
  55. 200,
  56. [
  57. 'Content-Type' => 'application/json;charset=UTF-8',
  58. 'Charset' => 'utf-8'
  59. ],
  60. JSON_UNESCAPED_UNICODE
  61. );
  62. }else{
  63. return [];
  64. }
  65. }
  66. /**
  67. * Store a newly created resource in storage.
  68. *
  69. * @param \Illuminate\Http\Request $request
  70. * @return \Illuminate\Http\Response
  71. */
  72. public function store(Request $request)
  73. {
  74. //
  75. }
  76. /**
  77. * Display the specified resource.
  78. *
  79. * @param string $filename
  80. * @return \Illuminate\Http\Response
  81. */
  82. public function show($filename)
  83. {
  84. }
  85. /**
  86. * Update the specified resource in storage.
  87. *
  88. * @param \Illuminate\Http\Request $request
  89. * @param int $id
  90. * @return \Illuminate\Http\Response
  91. */
  92. public function update(Request $request, $id)
  93. {
  94. //
  95. }
  96. /**
  97. * Remove the specified resource from storage.
  98. *
  99. * @param int $id
  100. * @return \Illuminate\Http\Response
  101. */
  102. public function destroy($id)
  103. {
  104. //
  105. }
  106. }