From a9d1fcd03b4bcc5d2b9472ed8c41b2566d02becd Mon Sep 17 00:00:00 2001 From: kdxcxs Date: Thu, 3 Dec 2020 00:55:56 +0800 Subject: [PATCH] refactor: replace `post` function in `api/HTTP.js` with `gbkFetch` function to support both POST and GET BREAKING CHANGE: getting decoded gbk post data has changed. Before: import {post} from 'api/HTTP'; post('http://foo.bar', {header: {}, body: 'foo'}); After: import {bgkFetch} from 'api/HTTP'; gbkFetch('POST', 'http://foo.bar', {header: {}, body: 'foo'}); Since fetching data and decoding them from gbk by GET or POST method is barely the same, it's no need to make them two functions. --- src/api/HTTP.js | 6 +++--- src/component/YooLogin.js | 4 ++-- src/component/YooSplash.js | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/api/HTTP.js b/src/api/HTTP.js index adb0ae6..3d79f88 100644 --- a/src/api/HTTP.js +++ b/src/api/HTTP.js @@ -1,7 +1,7 @@ import iconv from 'iconv-lite'; import {Buffer} from 'buffer'; -function post(url, data) { +function gbkFetch(method, url, data) { return new Promise(function (resolve, reject) { const request = new XMLHttpRequest(); @@ -15,7 +15,7 @@ function post(url, data) { request.onerror = () => reject(new Error(request.statusText)); request.responseType = 'arraybuffer'; - request.open('POST', url); + request.open(method, url); for (let headerKey in data.headers) { request.setRequestHeader(headerKey, data.headers[headerKey]); } @@ -23,4 +23,4 @@ function post(url, data) { }); } -export {post}; +export {gbkFetch}; diff --git a/src/component/YooLogin.js b/src/component/YooLogin.js index c9e3f56..2215df7 100644 --- a/src/component/YooLogin.js +++ b/src/component/YooLogin.js @@ -1,7 +1,7 @@ import React, {Component} from 'react'; import YooLoginUI from '../ui/YooLoginUI'; import CookieManager from '@react-native-community/cookies'; -import {post} from '../api/HTTP'; +import {gbkFetch} from '../api/HTTP'; export default class YooLogin extends Component { constructor(props) { @@ -24,7 +24,7 @@ export default class YooLogin extends Component { } login(onFail) { - post('http://eol.ctbu.edu.cn/meol/loginCheck.do', { + gbkFetch('POST', 'http://eol.ctbu.edu.cn/meol/loginCheck.do', { headers: { 'Cache-Control': 'max-age=0', 'Upgrade-Insecure-Requests': '1', diff --git a/src/component/YooSplash.js b/src/component/YooSplash.js index 094b7af..7f0bee7 100644 --- a/src/component/YooSplash.js +++ b/src/component/YooSplash.js @@ -1,12 +1,12 @@ import React, {Component} from 'react'; import {ToastAndroid} from 'react-native'; import YooSplashUI from '../ui/YooSplashUI'; -import {post} from '../api/HTTP'; +import {gbkFetch} from '../api/HTTP'; import CookieManager from '@react-native-community/cookies'; export default class YooSplash extends Component { componentDidMount() { - post('http://eol.ctbu.edu.cn/meol/loginCheck.do', { + gbkFetch('POST', 'http://eol.ctbu.edu.cn/meol/loginCheck.do', { headers: { 'Cache-Control': 'max-age=0', 'Upgrade-Insecure-Requests': '1',