api.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. <?php
  2. use Illuminate\Http\Request;
  3. use Illuminate\Support\Facades\Route;
  4. use App\Http\Controllers\WbwTemplateController;
  5. use App\Http\Controllers\DhammaTermController;
  6. use App\Http\Controllers\SentenceController;
  7. use App\Http\Controllers\ProgressChapterController;
  8. use App\Http\Controllers\SentenceInfoController;
  9. use App\Http\Controllers\SentPrController;
  10. use App\Http\Controllers\TagController;
  11. use App\Http\Controllers\ViewController;
  12. use App\Http\Controllers\LikeController;
  13. use App\Http\Controllers\SentHistoryController;
  14. use App\Http\Controllers\PaliTextController;
  15. use App\Http\Controllers\ChannelController;
  16. use App\Http\Controllers\UserDictController;
  17. use App\Http\Controllers\CollectionController;
  18. use App\Http\Controllers\DictController;
  19. use App\Http\Controllers\AuthController;
  20. use App\Http\Controllers\ArticleController;
  21. use App\Http\Controllers\GroupController;
  22. use App\Http\Controllers\CorpusController;
  23. use App\Http\Controllers\ArticleProgressController;
  24. use App\Http\Controllers\ExportWbwController;
  25. use App\Http\Controllers\WbwLookupController;
  26. use App\Http\Controllers\UploadController;
  27. use App\Http\Controllers\DiscussionController;
  28. use App\Http\Controllers\UserController;
  29. use App\Http\Controllers\GroupMemberController;
  30. use App\Http\Controllers\ShareController;
  31. use App\Http\Controllers\CourseController;
  32. use App\Http\Controllers\CourseMemberController;
  33. use App\Http\Controllers\ExerciseController;
  34. use App\Http\Controllers\ArticleMapController;
  35. use App\Http\Controllers\VocabularyController;
  36. use App\Http\Controllers\CaseController;
  37. use App\Http\Controllers\DictMeaningController;
  38. use App\Http\Controllers\UserOperationDailyController;
  39. use App\Http\Controllers\UserStatisticController;
  40. use App\Http\Controllers\SentSimController;
  41. use App\Http\Controllers\NissayaEndingController;
  42. use App\Http\Controllers\RelationController;
  43. use App\Http\Controllers\TermVocabularyController;
  44. use App\Http\Controllers\RelatedParagraphController;
  45. use App\Http\Controllers\SearchController;
  46. use App\Http\Controllers\WordIndexController;
  47. use App\Http\Controllers\StudioController;
  48. use App\Http\Controllers\GrammarGuideController;
  49. use App\Http\Controllers\WbwController;
  50. use App\Http\Controllers\AttachmentController;
  51. use App\Http\Controllers\ApiController;
  52. use App\Http\Controllers\ProgressImgController;
  53. use App\Http\Controllers\RecentController;
  54. use App\Http\Controllers\MilestoneController;
  55. use App\Http\Controllers\ArticleNavController;
  56. use App\Http\Controllers\InviteController;
  57. use App\Http\Controllers\SignUpController;
  58. use App\Http\Controllers\TermSummaryController;
  59. use App\Http\Controllers\NissayaCardController;
  60. /*
  61. |--------------------------------------------------------------------------
  62. | API Routes
  63. |--------------------------------------------------------------------------
  64. |
  65. | Here is where you can register API routes for your application. These
  66. | routes are loaded by the RouteServiceProvider within a group which
  67. | is assigned the "api" middleware group. Enjoy building your API!
  68. |
  69. */
  70. Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
  71. return $request->user();
  72. });
  73. Route::group(['prefix' => 'v2'],function(){
  74. Route::apiResource('wbw_templates',WbwTemplateController::class);
  75. Route::apiResource('terms',DhammaTermController::class);
  76. Route::get('terms-export',[DhammaTermController::class,"export"]);
  77. Route::get('terms-import',[DhammaTermController::class,"import"]);
  78. Route::apiResource('sentence',SentenceController::class);
  79. Route::post('sent-in-channel',[SentenceController::class,"sent_in_channel"]);
  80. Route::apiResource('sentpr',SentPrController::class);
  81. Route::post('sent-pr-tree',[SentPrController::class,"pr_tree"]);
  82. Route::apiResource('progress',ProgressChapterController::class);
  83. Route::apiResource('tag',TagController::class);
  84. Route::apiResource('view',ViewController::class);
  85. Route::delete('like', [LikeController::class, 'delete']);
  86. Route::apiResource('like',LikeController::class);
  87. Route::apiResource('sent_history',SentHistoryController::class);
  88. Route::get('sent_history_contribution',[SentHistoryController::class,'contribution']);
  89. Route::apiResource('palitext',PaliTextController::class);
  90. Route::apiResource('channel',ChannelController::class);
  91. Route::get('channel-my-number', [ChannelController::class, 'showMyNumber']);
  92. Route::post('channel-progress',[ChannelController::class,"progress"]);
  93. Route::delete('userdict', [UserDictController::class, 'delete']);
  94. Route::apiResource('userdict',UserDictController::class);
  95. Route::apiResource('anthology',CollectionController::class);
  96. Route::get('anthology-my-number', [CollectionController::class, 'showMyNumber']);
  97. Route::apiResource('dict',DictController::class);
  98. Route::apiResource('article',ArticleController::class);
  99. Route::get('article-my-number', [ArticleController::class, 'showMyNumber']);
  100. Route::put('article-preview/{id}', [ArticleController::class, 'preview']);
  101. Route::apiResource('group',GroupController::class);
  102. Route::get('group-my-number', [GroupController::class, 'showMyNumber']);
  103. Route::get('auth/current',[AuthController::class,'getUserInfoByToken']);
  104. Route::post('sign-in',[AuthController::class,'signIn']);
  105. Route::apiResource('corpus',CorpusController::class);
  106. Route::get('corpus-sent/{id}',[CorpusController::class,'showSent']);
  107. Route::get('corpus-chapter/{id}',[CorpusController::class,'showChapter']);
  108. Route::get('corpus-sentences/{type}/{id}',[CorpusController::class,'showSentences']);
  109. Route::apiResource('article-progress',ArticleProgressController::class);
  110. Route::post('export_wbw',[ExportWbwController::class,'index']);
  111. Route::apiResource('attachments',UploadController::class);
  112. Route::apiResource('discussion',DiscussionController::class);
  113. Route::post('sent-discussion-tree',[DiscussionController::class,"discussion_tree"]);
  114. Route::get('discussion-anchor/{id}',[DiscussionController::class,'anchor']);
  115. Route::apiResource('user',UserController::class);
  116. Route::apiResource('group-member',GroupMemberController::class);
  117. Route::apiResource('share',ShareController::class);
  118. Route::apiResource('wbwlookup',WbwLookupController::class);
  119. Route::apiResource('course',CourseController::class);
  120. Route::apiResource('course-member',CourseMemberController::class);
  121. Route::put('course-member_set-channel',[CourseMemberController::class,'set_channel']);
  122. Route::get('course-my-course', [CourseController::class, 'showMyCourseNumber']);
  123. Route::get('course-curr', [CourseMemberController::class, 'curr']);
  124. Route::apiResource('exercise',ExerciseController::class);
  125. Route::apiResource('article-map',ArticleMapController::class);
  126. Route::apiResource('vocabulary',VocabularyController::class);
  127. Route::apiResource('case',CaseController::class);
  128. Route::apiResource('dict-meaning',DictMeaningController::class);
  129. Route::apiResource('user-operation-daily',UserOperationDailyController::class);
  130. Route::apiResource('user-statistic',UserStatisticController::class);
  131. Route::apiResource('sent-sim',SentSimController::class);
  132. Route::apiResource('nissaya-ending',NissayaEndingController::class);
  133. Route::get('nissaya-ending-card',[NissayaEndingController::class,"nissaya_card"]);
  134. Route::get('nissaya-ending-export',[NissayaEndingController::class,"export"]);
  135. Route::get('nissaya-ending-import',[NissayaEndingController::class,"import"]);
  136. Route::get('nissaya-ending-vocabulary',[NissayaEndingController::class,"vocabulary"]);
  137. Route::apiResource('nissaya-card',NissayaCardController::class);
  138. Route::apiResource('relation',RelationController::class);
  139. Route::get('relation-export',[RelationController::class,"export"]);
  140. Route::get('relation-import',[RelationController::class,"import"]);
  141. Route::apiResource('term-vocabulary',TermVocabularyController::class);
  142. Route::apiResource('related-paragraph',RelatedParagraphController::class);
  143. Route::apiResource('search',SearchController::class);
  144. Route::get('search-book-list',[SearchController::class,'book_list']);
  145. Route::apiResource('pali-word-index',WordIndexController::class);
  146. Route::apiResource('studio',StudioController::class);
  147. Route::apiResource('grammar-guide',GrammarGuideController::class);
  148. Route::apiResource('wbw',WbwController::class);
  149. Route::apiResource('attachment',AttachmentController::class);
  150. Route::apiResource('api',ApiController::class);
  151. Route::apiResource('progress-img',ProgressImgController::class);
  152. Route::apiResource('recent',RecentController::class);
  153. Route::apiResource('milestone',MilestoneController::class);
  154. Route::apiResource('article-nav',ArticleNavController::class);
  155. Route::apiResource('invite',InviteController::class);
  156. Route::apiResource('sign-up',SignUpController::class);
  157. Route::apiResource('term-summary',TermSummaryController::class);
  158. Route::get('download/{type1}/{type2}/{uuid}/{filename}', function ($type1,$type2,$uuid,$filename) {
  159. header("Content-Type: {$type1}/{$type1}");
  160. header("Content-Disposition: attachment; filename=\"{$filename}\"");
  161. $content = Cache::get("download/tmp/{$uuid}");
  162. file_put_contents("php://output",$content);
  163. });
  164. Route::get('palibook/{file}', function ($file) {
  165. if($file==='default'){$file="defualt";}
  166. return file_get_contents(public_path("app/palicanon/category/{$file}.json"));
  167. });
  168. Route::get('guide/{lang}/{file}', function ($lang,$file) {
  169. $filename = public_path("app/users_guide/{$lang}/{$file}.md");
  170. if(file_exists($filename)){
  171. return json_encode(['ok'=>true,'message'=>'','data'=>file_get_contents($filename)]);
  172. }else{
  173. return json_encode(['ok'=>false,'message'=>"no file {$lang}/{$file}"]);
  174. }
  175. });
  176. Route::get('siteinfo/{locale}', function ($locale) {
  177. if (! in_array($locale, ['en', 'zh-Hans', 'zh-Hant'])) {
  178. App::setLocale('en');
  179. }else{
  180. App::setLocale($locale);
  181. }
  182. $site = [
  183. 'logo'=> __("site.logo"),
  184. 'title'=> __('site.title'),
  185. 'subhead'=> __('site.subhead'),
  186. 'keywords'=> __('site.keywords'),
  187. 'description'=> __('site.description'),
  188. 'copyright'=> __('site.copyright'),
  189. 'author'=> [
  190. 'name'=> __('site.author.name'),
  191. 'email'=> __('site.author.email'),
  192. ],
  193. ];
  194. return json_encode($site);
  195. });
  196. });