Twitter:
TwitterStreamContainer.jsx
import React, { Component } from "react";
import TwitterStream from "./TwitterStream";
class TwitterStreamContainer extends Component {
constructor(props) {
super(props);
this.state = {
result: null
}
}
componentDidMount()
{
fetch('/api/twitter', {
headers: { "Content-Type": "application/json; charset=utf-8" },
method: 'GET'
})
.then(res => res.json())
.then((data) => {
if(data != null) {
console.log("Starting Twitter", this.state.result);
this.setState({result: data});
}
})
}
componentDidUpdate()
{
console.log("Updated twitter", this.state.result);
}
render() {
return (
<div>
<div class="twitter-data">
<TwitterStream data={this.state.result}/>
</div>
</div>
);
}
}
export default TwitterStreamContainer;
router.ex
scope "/api", ProfiloWeb do
pipe_through [:api, :protected]
get "/twitter", PageController, :twitter
end
page_controller.ex
defmodule ProfiloWeb.PageController do
use ProfiloWeb, :controller
def index(conn, _params) do
render(conn, "index.html")
end
def twitter(conn, _params) do
data = ExTwitter.request(:get, "1.1/statuses/home_timeline.json")
render(conn, "data.json", twitter: data)
end
end
page_view.ex
defmodule ProfiloWeb.PageView do
use ProfiloWeb, :view
def render("data.json", %{twitter: data}) do
%{
data: data
}
end
end