Browse Source

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.
pull/1/head
kdxcxs 4 years ago
parent
commit
a9d1fcd03b
  1. 6
      src/api/HTTP.js
  2. 4
      src/component/YooLogin.js
  3. 4
      src/component/YooSplash.js

6
src/api/HTTP.js

@ -1,7 +1,7 @@
import iconv from 'iconv-lite'; import iconv from 'iconv-lite';
import {Buffer} from 'buffer'; import {Buffer} from 'buffer';
function post(url, data) { function gbkFetch(method, url, data) {
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
const request = new XMLHttpRequest(); const request = new XMLHttpRequest();
@ -15,7 +15,7 @@ function post(url, data) {
request.onerror = () => reject(new Error(request.statusText)); request.onerror = () => reject(new Error(request.statusText));
request.responseType = 'arraybuffer'; request.responseType = 'arraybuffer';
request.open('POST', url); request.open(method, url);
for (let headerKey in data.headers) { for (let headerKey in data.headers) {
request.setRequestHeader(headerKey, data.headers[headerKey]); request.setRequestHeader(headerKey, data.headers[headerKey]);
} }
@ -23,4 +23,4 @@ function post(url, data) {
}); });
} }
export {post}; export {gbkFetch};

4
src/component/YooLogin.js

@ -1,7 +1,7 @@
import React, {Component} from 'react'; import React, {Component} from 'react';
import YooLoginUI from '../ui/YooLoginUI'; import YooLoginUI from '../ui/YooLoginUI';
import CookieManager from '@react-native-community/cookies'; import CookieManager from '@react-native-community/cookies';
import {post} from '../api/HTTP'; import {gbkFetch} from '../api/HTTP';
export default class YooLogin extends Component { export default class YooLogin extends Component {
constructor(props) { constructor(props) {
@ -24,7 +24,7 @@ export default class YooLogin extends Component {
} }
login(onFail) { login(onFail) {
post('http://eol.ctbu.edu.cn/meol/loginCheck.do', { gbkFetch('POST', 'http://eol.ctbu.edu.cn/meol/loginCheck.do', {
headers: { headers: {
'Cache-Control': 'max-age=0', 'Cache-Control': 'max-age=0',
'Upgrade-Insecure-Requests': '1', 'Upgrade-Insecure-Requests': '1',

4
src/component/YooSplash.js

@ -1,12 +1,12 @@
import React, {Component} from 'react'; import React, {Component} from 'react';
import {ToastAndroid} from 'react-native'; import {ToastAndroid} from 'react-native';
import YooSplashUI from '../ui/YooSplashUI'; import YooSplashUI from '../ui/YooSplashUI';
import {post} from '../api/HTTP'; import {gbkFetch} from '../api/HTTP';
import CookieManager from '@react-native-community/cookies'; import CookieManager from '@react-native-community/cookies';
export default class YooSplash extends Component { export default class YooSplash extends Component {
componentDidMount() { componentDidMount() {
post('http://eol.ctbu.edu.cn/meol/loginCheck.do', { gbkFetch('POST', 'http://eol.ctbu.edu.cn/meol/loginCheck.do', {
headers: { headers: {
'Cache-Control': 'max-age=0', 'Cache-Control': 'max-age=0',
'Upgrade-Insecure-Requests': '1', 'Upgrade-Insecure-Requests': '1',

Loading…
Cancel
Save