aboutsummaryrefslogtreecommitdiff
path: root/src/services/api/api.service.js
blob: ac27865ff84d9aae0b706ec9e607f325170810e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
/* eslint-env browser */
const LOGIN_URL = '/api/account/verify_credentials.json'
// const FRIENDS_TIMELINE_URL='/api/statuses/friends_timeline.json';
// const PUBLIC_TIMELINE_URL='/api/statuses/public_timeline.json';
// const PUBLIC_AND_EXTERNAL_TIMELINE_URL='/api/statuses/public_and_external_timeline.json';
// const CONVERSATION_URL = '/api/statusnet/conversation/';
// const STATUS_UPDATE_URL = '/api/statuses/update.json';
// const MEDIA_UPLOAD_URL = '/api/statusnet/media/upload';
// const FAVORITE_URL = '/api/favorites/create';
// const UNFAVORITE_URL = '/api/favorites/destroy';

// const FORM_CONTENT_TYPE = {'Content-Type': 'application/x-www-form-urlencoded'};

// import { param, ajax } from 'jquery';
// import { merge } from 'lodash';

const apiService = {
  verifyCredentials: (user) => {
    const base64 = btoa(`${user.username}:${user.password}`)
    const authHeaders = { 'Authorization': `Basic ${base64}` }
    return fetch(LOGIN_URL, {
      method: 'POST',
      headers: authHeaders
    })
    // return $http.post(LOGIN_URL, null, { headers: authHeaders });
  }
}

export default apiService

// // TODO: This should probably be in redux.
// let authHeaders = {};

// const apiServiceFactory = ($http) => {
//   // Public
//   const fetchConversation = (id) => {
//     return $http.get(`${CONVERSATION_URL}/${id}.json?count=100`);
//   };

//   const fetchTimeline = ({timeline, since = false, until = false}) => {
//     const timelineUrls = {
//       public: PUBLIC_TIMELINE_URL,
//       friends: FRIENDS_TIMELINE_URL,
//       'public-and-external': PUBLIC_AND_EXTERNAL_TIMELINE_URL
//     };

//     let url = timelineUrls[timeline];

//     if(since) {
//       url += `?since_id=${since}`;
//     }

//     if(until) {
//       url += `?max_id=${until}`;
//     }

//     return fetch(url, { headers: authHeaders }).then((data) => data.json());
//   };

//   // Need credentials
//   const verifyCredentials = (user) => {
//     const base64 = btoa(`${user.username}:${user.password}`);
//     authHeaders = { "Authorization": `Basic ${base64}` };
//     return $http.post(LOGIN_URL, null, { headers: authHeaders });
//   };

//   const postStatus = ({status, mediaIds, in_reply_to_status_id}) => {
//     const idsText = mediaIds.join(',');
//     const form = new FormData();

//     form.append('status', status);
//     form.append('source', 'The Wired FE');
//     form.append('media_ids', idsText);
//     if(in_reply_to_status_id) {
//       form.append('in_reply_to_status_id', in_reply_to_status_id);
//     };

//     return fetch(STATUS_UPDATE_URL, {
//       body: form,
//       method: 'POST',
//       headers: authHeaders
//     });
//   };

//   const favorite = (id) => $http.post(`${FAVORITE_URL}/${id}.json`, null, {headers: authHeaders});
//   const unfavorite = (id) => $http.post(`${UNFAVORITE_URL}/${id}.json`, null, {headers: authHeaders});

//   // This was impossible to get to work with $http. You're supposed to set Content-Type
//   // undefined in the header so it sends the correct header. It would always send a json
//   // content type. This method from jQuery worked right away...
//   // Also, this method is only available as XML output. OLOLOLOLO
//   const uploadMedia = (formData) => ajax({
//     url: MEDIA_UPLOAD_URL,
//     data: formData,
//     type: 'POST',
//     processData: false,
//     contentType: false,
//     headers: authHeaders
//   });

//   const apiService = {
//     verifyCredentials,
//     fetchConversation,
//     postStatus,
//     uploadMedia,
//     favorite,
//     unfavorite,
//     fetchTimeline
//   };

//   return apiService;
// };

// apiServiceFactory.$inject = ['$http'];

// export default apiServiceFactory;