@@ -24,15 +24,71 @@ export default (fastify, options, done) => {
2424 const query = method === 'GET' ? request . query : request . body ;
2525 const protocol = request . protocol ;
2626 const hostname = request . hostname ;
27- const proxyUrl = `${ protocol } ://${ hostname } ${ request . url } ` . split ( '?' ) [ 0 ] . replace ( '/api/' , '/proxy/' ) + '/?do=js' ;
27+ // const proxyUrl = `${protocol}://${hostname}${request.url}`.split('?')[0].replace('/api/', '/proxy/') + '/?do=js';
28+ // const proxyUrl = `${protocol}://${hostname}/proxy/${moduleName}/?do=js`;
29+ // console.log('proxyUrl:', proxyUrl);
30+
2831 const publicUrl = `${ protocol } ://${ hostname } /public/` ;
2932 const httpUrl = `${ protocol } ://${ hostname } /http` ;
3033 const mediaProxyUrl = `${ protocol } ://${ hostname } /mediaProxy` ;
34+
3135 // console.log(`proxyUrl:${proxyUrl}`);
32- const env = {
33- proxyUrl, publicUrl, httpUrl, mediaProxyUrl, getProxyUrl : function ( ) {
36+ function getEnv ( moduleName ) {
37+ const proxyUrl = `${ protocol } ://${ hostname } /proxy/${ moduleName } /?do=js` ;
38+ const getProxyUrl = function ( ) {
3439 return proxyUrl
40+ } ;
41+ return {
42+ proxyUrl, publicUrl, httpUrl, mediaProxyUrl, getProxyUrl
43+ }
44+ }
45+
46+ const env = getEnv ( moduleName ) ;
47+ env . getRule = async function ( _moduleName ) {
48+ const _modulePath = path . join ( options . jsDir , `${ _moduleName } .js` ) ;
49+ if ( ! existsSync ( _modulePath ) ) {
50+ return null ;
3551 }
52+ const _env = getEnv ( _moduleName ) ;
53+ const RULE = await drpy . getRule ( _modulePath , _env ) ;
54+ RULE . callRuleFn = async function ( _method , _args ) {
55+ let invokeMethod = null ;
56+ switch ( _method ) {
57+ case 'class_parse' :
58+ invokeMethod = 'home' ;
59+ break ;
60+ case '推荐' :
61+ invokeMethod = 'homeVod' ;
62+ break ;
63+ case '一级' :
64+ invokeMethod = 'cate' ;
65+ break ;
66+ case '二级' :
67+ invokeMethod = 'detail' ;
68+ break ;
69+ case '搜索' :
70+ invokeMethod = 'search' ;
71+ break ;
72+ case 'lazy' :
73+ invokeMethod = 'play' ;
74+ break ;
75+ case 'proxy_rule' :
76+ invokeMethod = 'proxy' ;
77+ break ;
78+ case 'action' :
79+ invokeMethod = 'action' ;
80+ break ;
81+ }
82+ if ( ! invokeMethod ) {
83+ if ( typeof RULE [ _method ] !== 'function' ) {
84+ return null
85+ } else {
86+ return await RULE [ _method ]
87+ }
88+ }
89+ return await drpy [ invokeMethod ] ( _modulePath , _env , ..._args )
90+ } ;
91+ return RULE
3692 } ;
3793 const pg = Number ( query . pg ) || 1 ;
3894 try {
0 commit comments