@@ -3,12 +3,10 @@ import { URL } from "@nsnanocat/url";
3
3
import database from "./function/database.mjs" ;
4
4
import setENV from "./function/setENV.mjs" ;
5
5
import providerNameToLogo from "./function/providerNameToLogo.mjs" ;
6
- import WeatherKit2 from "./class/WeatherKit2.mjs" ;
7
6
import WAQI from "./class/WAQI.mjs" ;
8
7
import ColorfulClouds from "./class/ColorfulClouds.mjs" ;
9
8
import QWeather from "./class/QWeather.mjs" ;
10
9
import AirQuality from "./class/AirQuality.mjs" ;
11
- import * as flatbuffers from "flatbuffers" ;
12
10
/***************** Processing *****************/
13
11
// 解构URL
14
12
const url = new URL ( $request . url ) ;
@@ -93,83 +91,11 @@ log(`⚠ FORMAT: ${FORMAT}`, "");
93
91
case "application/grpc+proto" :
94
92
case "application/octet-stream" : {
95
93
//log(`🚧 $response: ${JSON.stringify($response, null, 2)}`, "");
96
- let rawBody = $app === "Quantumult X" ? new Uint8Array ( $response . bodyBytes ?? [ ] ) : ( $response . body ?? new Uint8Array ( ) ) ;
94
+ const rawBody = $app === "Quantumult X" ? new Uint8Array ( $response . bodyBytes ?? [ ] ) : ( $response . body ?? new Uint8Array ( ) ) ;
97
95
//log(`🚧 isBuffer? ${ArrayBuffer.isView(rawBody)}: ${JSON.stringify(rawBody)}`, "");
98
96
switch ( FORMAT ) {
99
- case "application/vnd.apple.flatbuffer" : {
100
- // 解析FlatBuffer
101
- const ByteBuffer = new flatbuffers . ByteBuffer ( rawBody ) ;
102
- const Builder = new flatbuffers . Builder ( ) ;
103
- // 主机判断
104
- switch ( HOST ) {
105
- case "weatherkit.apple.com" :
106
- // 路径判断
107
- if ( PATH . startsWith ( "/api/v2/weather/" ) ) {
108
- body = WeatherKit2 . decode ( ByteBuffer , "all" ) ;
109
- if ( url . searchParams . get ( "dataSets" ) . includes ( "airQuality" ) ) {
110
- log ( `🚧 body.airQuality: ${ JSON . stringify ( body ?. airQuality , null , 2 ) } ` , "" ) ;
111
- // InjectAirQuality
112
- if ( Settings ?. AQI ?. ReplaceProviders ?. includes ( body ?. airQuality ?. metadata ?. providerName ) ) body = await InjectAirQuality ( url , body , Settings ) ;
113
- // CompareAirQuality
114
- body = await CompareAirQuality ( url , body , Settings ) ;
115
- // PollutantUnitConverter
116
- switch ( body ?. airQuality ?. metadata ?. providerName ?. split ( "\n" ) ?. [ 0 ] ) {
117
- case "和风天气" :
118
- case "QWeather" :
119
- if ( body ?. airQuality ?. pollutants )
120
- body . airQuality . pollutants = body . airQuality . pollutants . map ( pollutant => {
121
- switch ( pollutant . pollutantType ) {
122
- case "CO" : // Fix CO amount units
123
- pollutant . units = "MILLIGRAMS_PER_CUBIC_METER" ;
124
- break ;
125
- default :
126
- break ;
127
- }
128
- return pollutant ;
129
- } ) ;
130
- break ;
131
- }
132
- // ConvertAirQuality
133
- if ( Settings ?. AQI ?. Local ?. ReplaceScales . includes ( body ?. airQuality ?. scale . split ( "." ) ?. [ 0 ] ) ) body = ConvertAirQuality ( body , Settings ) ;
134
- // Fix Convert units that does not supported in Apple Weather
135
- if ( body ?. airQuality ?. pollutants ) body . airQuality . pollutants = AirQuality . FixUnits ( body . airQuality . pollutants ) ;
136
- // ProviderLogo
137
- if ( body ?. airQuality ?. metadata ?. providerName && ! body ?. airQuality ?. metadata ?. providerLogo ) body . airQuality . metadata . providerLogo = providerNameToLogo ( body ?. airQuality ?. metadata ?. providerName , "v2" ) ;
138
- }
139
- if ( url . searchParams . get ( "dataSets" ) . includes ( "currentWeather" ) ) {
140
- if ( body ?. currentWeather ?. metadata ?. providerName && ! body ?. currentWeather ?. metadata ?. providerLogo ) body . currentWeather . metadata . providerLogo = providerNameToLogo ( body ?. currentWeather ?. metadata ?. providerName , "v2" ) ;
141
- //log(`🚧 body.currentWeather: ${JSON.stringify(body?.currentWeather, null, 2)}`, "");
142
- }
143
- if ( url . searchParams . get ( "dataSets" ) . includes ( "forecastNextHour" ) ) {
144
- log ( `🚧 body.forecastNextHour: ${ JSON . stringify ( body ?. forecastNextHour , null , 2 ) } ` , "" ) ;
145
- if ( ! body ?. forecastNextHour ) body = await InjectForecastNextHour ( url , body , Settings ) ;
146
- if ( body ?. forecastNextHour ?. metadata ?. providerName && ! body ?. forecastNextHour ?. metadata ?. providerLogo ) body . forecastNextHour . metadata . providerLogo = providerNameToLogo ( body ?. forecastNextHour ?. metadata ?. providerName , "v2" ) ;
147
- }
148
- if ( url . searchParams . get ( "dataSets" ) . includes ( "weatherAlerts" ) ) {
149
- if ( body ?. weatherAlerts ?. metadata ?. providerName && ! body ?. weatherAlerts ?. metadata ?. providerLogo ) body . weatherAlerts . metadata . providerLogo = providerNameToLogo ( body ?. weatherAlerts ?. metadata ?. providerName , "v2" ) ;
150
- log ( `🚧 body.weatherAlerts: ${ JSON . stringify ( body ?. weatherAlerts , null , 2 ) } ` , "" ) ;
151
- }
152
- if ( url . searchParams . get ( "dataSets" ) . includes ( "WeatherChange" ) ) {
153
- if ( body ?. WeatherChanges ?. metadata ?. providerName && ! body ?. WeatherChanges ?. metadata ?. providerLogo ) body . WeatherChanges . metadata . providerLogo = providerNameToLogo ( body ?. WeatherChanges ?. metadata ?. providerName , "v2" ) ;
154
- log ( `🚧 body.WeatherChanges: ${ JSON . stringify ( body ?. WeatherChanges , null , 2 ) } ` , "" ) ;
155
- }
156
- if ( url . searchParams . get ( "dataSets" ) . includes ( "trendComparison" ) ) {
157
- if ( body ?. historicalComparisons ?. metadata ?. providerName && ! body ?. historicalComparisons ?. metadata ?. providerLogo ) body . historicalComparisons . metadata . providerLogo = providerNameToLogo ( body ?. historicalComparisons ?. metadata ?. providerName , "v2" ) ;
158
- log ( `🚧 body.historicalComparisons: ${ JSON . stringify ( body ?. historicalComparisons , null , 2 ) } ` , "" ) ;
159
- }
160
- if ( url . searchParams . get ( "dataSets" ) . includes ( "locationInfo" ) ) {
161
- if ( body ?. locationInfo ?. metadata ?. providerName && ! body ?. locationInfo ?. metadata ?. providerLogo ) body . locationInfo . metadata . providerLogo = providerNameToLogo ( body ?. locationInfo ?. metadata ?. providerName , "v2" ) ;
162
- log ( `🚧 body.locationInfo: ${ JSON . stringify ( body ?. locationInfo , null , 2 ) } ` , "" ) ;
163
- }
164
- const WeatherData = WeatherKit2 . encode ( Builder , "all" , body ) ;
165
- Builder . finish ( WeatherData ) ;
166
- break ;
167
- }
168
- break ;
169
- }
170
- rawBody = Builder . asUint8Array ( ) ; // Of type `Uint8Array`.
97
+ case "application/vnd.apple.flatbuffer" :
171
98
break ;
172
- }
173
99
case "application/protobuf" :
174
100
case "application/x-protobuf" :
175
101
case "application/vnd.google.protobuf" :
0 commit comments