Grundaufbau der App
[DHBWCampusApp.git] / app / src / main / java / de / dhbwloe / campusapp / network / IscRequestHelper.java
1 package de.dhbwloe.campusapp.network;
2
3 import android.util.Log;
4
5 import com.loopj.android.http.AsyncHttpClient;
6 import com.loopj.android.http.AsyncHttpResponseHandler;
7
8 import net.fortuna.ical4j.data.CalendarBuilder;
9 import net.fortuna.ical4j.data.ParserException;
10 import net.fortuna.ical4j.model.Calendar;
11
12 import java.io.ByteArrayInputStream;
13 import java.io.IOException;
14 import java.io.InputStream;
15 import java.io.UnsupportedEncodingException;
16
17 import cz.msebera.android.httpclient.Header;
18
19 /**
20  * Created by pk910 on 20.01.2016.
21  */
22 public abstract class IscRequestHelper {
23
24     protected void requestCalenderFromWeb(String url) {
25         AsyncHttpClient client = new AsyncHttpClient();
26         Log.i("HTTPClient", "Request: "+url);
27         client.get(url, new AsyncHttpResponseHandler() {
28             @Override
29             public void onStart() {
30             }
31             @Override
32             public void onSuccess(int statusCode, Header[] headers, byte[] response) {
33                 String plainisc = new String(response);
34                 // Google Calendar parse error!
35                 plainisc = plainisc.replaceAll("(X-APPLE-TRAVEL-ADVISORY-BEHAVIOR;)?ACKNOWLEDGED[:=][0-9TZ]+(:AUTOMATIC)?[\\r\\n]*", "");
36                 response = plainisc.getBytes();
37
38                 InputStream inputStream = new ByteArrayInputStream(response);
39                 parseIsc(inputStream);
40             }
41             @Override
42             public void onFailure(int statusCode, Header[] headers, byte[] errorResponse, Throwable e) {
43                 String error = null;
44                 try {
45                     error = new String(errorResponse, "US-ASCII");
46                 } catch (UnsupportedEncodingException e1) {
47                 }
48                 Log.i("HTTPClient", "  Error: " + statusCode + " - " + error);
49                 onCalendarRequestFail(statusCode, error);
50             }
51             @Override
52             public void onRetry(int retryNo) {
53             }
54         });
55     }
56
57     private void parseIsc(InputStream input) {
58         CalendarBuilder builder = new CalendarBuilder();
59         Calendar calendar = null;
60         try {
61             calendar = builder.build(input);
62         } catch (IOException e) {
63             e.printStackTrace();
64         } catch (ParserException e) {
65             e.printStackTrace();
66         }
67         if(calendar == null)
68             return;
69         /*
70         ComponentList events = calendar.getComponents(Component.VEVENT);
71         ListIterator<Component> iterator = events.listIterator();
72         while (iterator.hasNext()) {
73             Component event = iterator.next();
74             event.getProperties();
75         }
76         */
77         onCalendarReceived(calendar);
78     }
79
80     protected abstract void onCalendarReceived(Calendar calendar);
81     protected abstract void onCalendarRequestFail(int statusCode, String errorMessage);
82
83 }