1 package de.dhbwloe.campusapp.network;
3 import android.util.Log;
5 import com.loopj.android.http.AsyncHttpClient;
6 import com.loopj.android.http.AsyncHttpResponseHandler;
8 import net.fortuna.ical4j.data.CalendarBuilder;
9 import net.fortuna.ical4j.data.ParserException;
10 import net.fortuna.ical4j.model.Calendar;
12 import java.io.ByteArrayInputStream;
13 import java.io.IOException;
14 import java.io.InputStream;
15 import java.io.UnsupportedEncodingException;
17 import cz.msebera.android.httpclient.Header;
20 * Created by pk910 on 20.01.2016.
22 public abstract class IscRequestHelper {
24 protected void requestCalenderFromWeb(String url) {
25 AsyncHttpClient client = new AsyncHttpClient();
26 Log.i("HTTPClient", "Request: "+url);
27 client.get(url, new AsyncHttpResponseHandler() {
29 public void onStart() {
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();
38 InputStream inputStream = new ByteArrayInputStream(response);
39 parseIsc(inputStream);
42 public void onFailure(int statusCode, Header[] headers, byte[] errorResponse, Throwable e) {
45 error = new String(errorResponse, "US-ASCII");
46 } catch (UnsupportedEncodingException e1) {
48 Log.i("HTTPClient", " Error: " + statusCode + " - " + error);
49 onCalendarRequestFail(statusCode, error);
52 public void onRetry(int retryNo) {
57 private void parseIsc(InputStream input) {
58 CalendarBuilder builder = new CalendarBuilder();
59 Calendar calendar = null;
61 calendar = builder.build(input);
62 } catch (IOException e) {
64 } catch (ParserException e) {
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();
77 onCalendarReceived(calendar);
80 protected abstract void onCalendarReceived(Calendar calendar);
81 protected abstract void onCalendarRequestFail(int statusCode, String errorMessage);