package com.airlocksoftware.hackernews.parser; import java.io.IOException; import org.jsoup.nodes.Document; import org.jsoup.select.Elements; import android.util.Log; import com.airlocksoftware.hackernews.data.ConnectionManager; import com.airlocksoftware.hackernews.model.User; public class UserParser { private static final String TAG = "UserParser"; public static User parseUser(String username) { try { User user = new User(); user.username = username; // don't use user cookie so that "about" text appears correctly Document page = ConnectionManager.anonConnect("/user?id=" + username) .get(); Elements trs = page.select("form > table > tbody > tr"); user.created = trs.select("td:containsOwn(created:) + td") .first() .text(); user.karma = Integer.parseInt(trs.select("td:containsOwn(karma:) + td") .first() .text()); try { user.avg = Float.parseFloat(trs.select("td:containsOwn(avg:) + td") .first() .text()); } catch (Exception e) { user.avg = -1.0f; } user.aboutHtml = trs.select("td:containsOwn(about:) + td") .first() .html(); return user; } catch (IOException e) { e.printStackTrace(); Log.d(TAG, "IOException parsing UserModel for: " + username); return null; } catch (NumberFormatException e) { e.printStackTrace(); Log.d(TAG, "NumberFormatException parsing UserModel for: " + username); return null; } catch (NullPointerException e) { e.printStackTrace(); Log.d(TAG, "NullPointerException parsing UserModel for: " + username); return null; } } }