Greasy Fork is available in English.

ic2api

虽然作者懒得写描述,但是他至少记得添加过一个默认描述……

Dette scriptet burde ikke installeres direkte. Det er et bibliotek for andre script å inkludere med det nye metadirektivet // @require https://update.greatest.deepsurf.us/scripts/481658/1292161/ic2api.js

  1. /* eslint-disable no-multi-spaces */
  2. /* eslint-disable no-return-assign */
  3.  
  4. // ==UserScript==
  5. // @name ic2api
  6. // @namespace PY-DNG userscripts
  7. // @version 0.1
  8. // @description 虽然作者懒得写描述,但是他至少记得添加过一个默认描述……
  9. // @author PY-DNG
  10. // @license GPL-3.0-or-later
  11. // ==/UserScript==
  12.  
  13. /* global LogLevel DoLog Err $ $All $CrE $AEL $$CrE addStyle detectDom destroyEvent copyProp copyProps parseArgs escJsStr replaceText getUrlArgv dl_browser dl_GM AsyncManager */
  14.  
  15. let IC2API = (function __MAIN__() {
  16. 'use strict';
  17.  
  18. return {
  19. phoneSeatReserve: {
  20. duration() {
  21. return get('ic-web/phoneSeatReserve/duration');
  22. },
  23. reserve(duration) {
  24. return post('ic-web/phoneSeatReserve/duration', JSON.stringify({ duration }));
  25. }
  26. },
  27. seatMenu() {
  28. return get('ic-web/seatMenu');
  29. },
  30. reserve(roomIds, resvDates, sysKind) {
  31. return get('ic-web/reserve', { roomIds, resvDates, sysKind });
  32. },
  33. };
  34.  
  35. function get(url, params) {
  36. return new Promise((resolve, reject) => {
  37. GM_xmlhttpRequest({
  38. method: 'GET',
  39. url: toAbsURL(url, params),
  40. headers: { 'Token': getToken() || '' },
  41. responseType: 'json',
  42. onload: res => {
  43. const data = res.response;
  44. res.status === 200 && data.code === 0 ? resolve(data) : reject(data);
  45. },
  46. onerror: err => {
  47. reject(err);
  48. }
  49. });
  50. });
  51. }
  52.  
  53. function post(url, data) {
  54. return new Promise((resolve, reject) => {
  55. GM_xmlhttpRequest({
  56. method: 'POST',
  57. url: toAbsURL(url),
  58. headers: { 'Token': getToken() || '' },
  59. responseType: 'json',
  60. data,
  61. onload: res => {
  62. const data = res.response;
  63. res.status === 200 && data.code === 0 ? resolve(data) : reject(data);
  64. },
  65. onerror: err => {
  66. reject(err);
  67. }
  68. });
  69. });
  70. }
  71.  
  72. function getToken() {
  73. const storage = sessionStorage.getItem("userInfo");
  74. const userInfo = storage ? JSON.parse(storage) : {}
  75. return userInfo.token;
  76. }
  77.  
  78. function toAbsURL(pathname, searchOptions) {
  79. return new URL(pathname, `${location.protocol}//${location.host}`).href + (searchOptions ? `?${toSearch(searchOptions)}` : '');
  80. }
  81.  
  82. function toSearch(options) {
  83. return new URLSearchParams(options).toString()
  84. }
  85. })();