/**
* Copyright (c) 2015-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
* @flow
* @providesModule XHRExampleFetch
*/
'use strict';
var React = require('react');
var ReactNative = require('react-native');
var {
StyleSheet,
Text,
TextInput,
View,
Platform,
} = ReactNative;
class XHRExampleFetch extends React.Component {
state: any;
responseURL: ?string;
responseHeaders: ?Object;
constructor(props: any) {
super(props);
this.state = {
responseText: null,
};
this.responseURL = null;
this.responseHeaders = null;
}
submit(uri: String) {
fetch(uri).then((response) => {
this.responseURL = response.url;
this.responseHeaders = response.headers;
return response.text();
}).then((body) => {
this.setState({responseText: body});
});
}
_renderHeaders() {
if (!this.responseHeaders) {
return null;
}
var responseHeaders = [];
var keys = Object.keys(this.responseHeaders.map);
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
var value = this.responseHeaders.get(key);
responseHeaders.push({key}: {value});
}
return responseHeaders;
}
render() {
var responseURL = this.responseURL ? (
Server response URL:
{this.responseURL}
) : null;
var responseHeaders = this.responseHeaders ? (
Server response headers:
{this._renderHeaders()}
) : null;
var response = this.state.responseText ? (
Server response:
) : null;
return (
Edit URL to submit:
{
this.submit(event.nativeEvent.text);
}}
style={styles.textInput}
/>
{responseURL}
{responseHeaders}
{response}
);
}
}
var styles = StyleSheet.create({
textInput: {
flex: 1,
borderRadius: 3,
borderColor: 'grey',
borderWidth: 1,
height: Platform.OS === 'android' ? 44 : 30,
paddingLeft: 8,
},
label: {
flex: 1,
color: '#aaa',
fontWeight: '500',
height: 20,
},
textOutput: {
flex: 1,
fontSize: 17,
borderRadius: 3,
borderColor: 'grey',
borderWidth: 1,
height: 200,
paddingLeft: 8,
},
});
module.exports = XHRExampleFetch;