/core/src/main/java/com/pc/dailymile/utils/DailyMileUtil.java

http://dailymile-client.googlecode.com/ · Java · 153 lines · 103 code · 32 blank · 18 comment · 20 complexity · 7f29215ffd75a216c89ea6d9a419c64c MD5 · raw file

  1. /*
  2. Copyright 2010 platers.code
  3. Licensed under the Apache License, Version 2.0 (the "License");
  4. you may not use this file except in compliance with the License.
  5. You may obtain a copy of the License at
  6. http://www.apache.org/licenses/LICENSE-2.0
  7. Unless required by applicable law or agreed to in writing, software
  8. distributed under the License is distributed on an "AS IS" BASIS,
  9. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  10. See the License for the specific language governing permissions and
  11. limitations under the License.
  12. */
  13. package com.pc.dailymile.utils;
  14. import java.text.MessageFormat;
  15. import java.util.Date;
  16. import com.google.gson.Gson;
  17. import com.google.gson.GsonBuilder;
  18. import com.pc.dailymile.domain.converters.DateConverter;
  19. import com.pc.dailymile.domain.converters.TypeConverter;
  20. public class DailyMileUtil {
  21. public static final String ENTRIES_URL = "https://api.dailymile.com/entries.json";
  22. public static final String PUBLIC_STREAM_PAGED_URL = ENTRIES_URL + "?page={0}";
  23. //This hits the actual site, adding friends isn't part of the api
  24. private static final String ADD_FRIEND = "https://www.dailymile.com/people/{0}/friends.json";
  25. public static final String USER_AND_FRIENDS_STREAM_URL =
  26. "https://api.dailymile.com/entries/friends.json";
  27. private static final String USER_AND_FRIENDS_STREAM_PAGED_URL =
  28. "https://api.dailymile.com/entries/friends.json?page={0}";
  29. private static final String POPULAR_STREAM_PAGED_URL =
  30. "https://api.dailymile.com/entries/popular.json?page={0}";
  31. private static final String USER_ROUTES = "https://api.dailymile.com/people/{0}/routes.json";
  32. private static final String FRIENDS_URL = "https://api.dailymile.com/people/{0}/friends.json";
  33. private static final String USER_URL = "https://api.dailymile.com/people/{0}.json";
  34. private static final String COMMENT_URL = "https://api.dailymile.com/entries/{0}/comments.json";
  35. private static final String USER_STREAM_URL =
  36. "https://api.dailymile.com/people/{0}/entries.json";
  37. private static final String ENTRY_URL = "https://api.dailymile.com/entries/{0}.json";
  38. private static final String USER_STREAM_PAGED_URL =
  39. "https://api.dailymile.com/people/{0}/entries.json?page={1}";
  40. private static final String LIKE_URL = "https://api.dailymile.com/entries/{0}/likes.json";
  41. // date format: 2010-03-29T21:25:09-04:00
  42. private static final GsonBuilder GSON_BUILDER = new GsonBuilder()
  43. .setDateFormat("yyyy-MM-dd'T'HH:mm:ss.Z")
  44. .registerTypeAdapter(Type.class, new TypeConverter())
  45. .registerTypeAdapter(Date.class, new DateConverter());
  46. public static Gson getGson() {
  47. return GSON_BUILDER.create();
  48. }
  49. public static String buildUserUrl(String username) {
  50. return MessageFormat.format(USER_URL, username);
  51. }
  52. public static String buildUserStreamUrl(String username) {
  53. return MessageFormat.format(USER_STREAM_URL, username);
  54. }
  55. public static String buildUserStreamUrl(String username, int pageNumber, EntryCriteria query) {
  56. StringBuilder rtn = new StringBuilder();
  57. rtn.append(MessageFormat.format(USER_STREAM_PAGED_URL, username, pageNumber));
  58. if (query != null) {
  59. String queryString = query.buildQueryString();
  60. if (queryString != null && queryString.length() > 0) {
  61. rtn.append("&").append(queryString);
  62. }
  63. }
  64. return rtn.toString();
  65. }
  66. public static String buildUserAndFriendsStreamUrl(int pageNumber, EntryCriteria query) {
  67. StringBuilder rtn = new StringBuilder();
  68. rtn.append(MessageFormat.format(USER_AND_FRIENDS_STREAM_PAGED_URL, pageNumber));
  69. if (query != null) {
  70. String queryString = query.buildQueryString();
  71. if (queryString != null && queryString.length() > 0) {
  72. rtn.append("&").append(queryString);
  73. }
  74. }
  75. return rtn.toString();
  76. }
  77. public static String buildPublicStreamUrl(int pageNumber, EntryCriteria query) {
  78. StringBuilder rtn = new StringBuilder();
  79. rtn.append(MessageFormat.format(PUBLIC_STREAM_PAGED_URL, pageNumber));
  80. if (query != null) {
  81. String queryString = query.buildQueryString();
  82. if (queryString != null && queryString.length() > 0) {
  83. rtn.append("&").append(queryString);
  84. }
  85. }
  86. return rtn.toString();
  87. }
  88. public static String buildPopularStreamUrl(int pageNumber, EntryCriteria query) {
  89. StringBuilder rtn = new StringBuilder();
  90. rtn.append(MessageFormat.format(POPULAR_STREAM_PAGED_URL, pageNumber));
  91. if (query != null) {
  92. String queryString = query.buildQueryString();
  93. if (queryString != null && queryString.length() > 0) {
  94. rtn.append("&").append(queryString);
  95. }
  96. }
  97. return rtn.toString();
  98. }
  99. public static String buildEntryUrl(Long id) {
  100. return MessageFormat.format(ENTRY_URL, id.toString());
  101. }
  102. public static String buildCommentUrl(Long id) {
  103. return MessageFormat.format(COMMENT_URL, id.toString());
  104. }
  105. public static String buildFriendsUrl(String username) {
  106. return MessageFormat.format(FRIENDS_URL, username);
  107. }
  108. public static String buildRequestFriendUrl(String username) {
  109. return MessageFormat.format(ADD_FRIEND, username);
  110. }
  111. public static String buildUserRoutesUrl(String username) {
  112. return MessageFormat.format(USER_ROUTES, username);
  113. }
  114. public static String buildLikeUrl(Long id) {
  115. return MessageFormat.format(LIKE_URL, id.toString());
  116. }
  117. }