From b5e29cb638d6ae56559c7c7052026bd635777e0b Mon Sep 17 00:00:00 2001 From: Ryan Valdron Date: Wed, 23 Apr 2014 16:30:47 -0300 Subject: [PATCH 1/6] Adding Locations. Adding a getLocations method that expects a page Id. It will fetch all the Location(child) pages of the parent page passed in. --- .../springframework/social/facebook/api/PageOperations.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/spring-social-facebook/src/main/java/org/springframework/social/facebook/api/PageOperations.java b/spring-social-facebook/src/main/java/org/springframework/social/facebook/api/PageOperations.java index 663429b8e..07f07da86 100644 --- a/spring-social-facebook/src/main/java/org/springframework/social/facebook/api/PageOperations.java +++ b/spring-social-facebook/src/main/java/org/springframework/social/facebook/api/PageOperations.java @@ -52,6 +52,12 @@ public interface PageOperations { */ PagedList getAccounts(); + /** + * Retrieves a list of Account objects for the location pages given a parent page. + * Requires "manage_pages" permission. + */ + PagedList getLocations(String pageId); + /** * Posts a message to a page's feed as a page administrator. * Requires that the application is granted "manage_pages" permission and that the authenticated user be an administrator of the page. From a4782498164cad93ab7fcb75957b3a6d1ea88369 Mon Sep 17 00:00:00 2001 From: Ryan Valdron Date: Wed, 23 Apr 2014 16:32:21 -0300 Subject: [PATCH 2/6] Adding getLocations implementation Fetches location(child) pages given a parent page Id. --- .../social/facebook/api/impl/PageTemplate.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/spring-social-facebook/src/main/java/org/springframework/social/facebook/api/impl/PageTemplate.java b/spring-social-facebook/src/main/java/org/springframework/social/facebook/api/impl/PageTemplate.java index 9439bc248..069e36748 100644 --- a/spring-social-facebook/src/main/java/org/springframework/social/facebook/api/impl/PageTemplate.java +++ b/spring-social-facebook/src/main/java/org/springframework/social/facebook/api/impl/PageTemplate.java @@ -52,6 +52,12 @@ public PagedList getAccounts() { requireAuthorization(); return graphApi.fetchConnections("me", "accounts", Account.class); } + + public PagedList getLocations(String pageId) + { + requireAuthorization(); + return graphApi.fetchConnections(pageId, "locations", Account.class); + } public String post(String pageId, String message) { requireAuthorization(); From 307980a389e08b8c588020c36938702c45bfd8c5 Mon Sep 17 00:00:00 2001 From: Ryan Valdron Date: Fri, 25 Apr 2014 22:04:11 -0300 Subject: [PATCH 3/6] Update PageOperations.java added getLocations passing parameters. --- .../social/facebook/api/PageOperations.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/spring-social-facebook/src/main/java/org/springframework/social/facebook/api/PageOperations.java b/spring-social-facebook/src/main/java/org/springframework/social/facebook/api/PageOperations.java index 07f07da86..84a411e69 100644 --- a/spring-social-facebook/src/main/java/org/springframework/social/facebook/api/PageOperations.java +++ b/spring-social-facebook/src/main/java/org/springframework/social/facebook/api/PageOperations.java @@ -55,9 +55,18 @@ public interface PageOperations { /** * Retrieves a list of Account objects for the location pages given a parent page. * Requires "manage_pages" permission. + * @param pageId the parent page Id */ PagedList getLocations(String pageId); + /** + * Retrieves a list of Account objects for the location pages that the authenticated user is an administrator given a parent page id. + * Requires "manage_pages" permission. + * @param pageId the parent page Id + * @param queryParameters parameters to be included in the request. + */ + PagedList getLocations(String pageId, MultiValueMap queryParameters); + /** * Posts a message to a page's feed as a page administrator. * Requires that the application is granted "manage_pages" permission and that the authenticated user be an administrator of the page. From b6e9c60cf5a78b1016ef2476a4f17059e3fc44c3 Mon Sep 17 00:00:00 2001 From: Ryan Valdron Date: Fri, 25 Apr 2014 22:07:48 -0300 Subject: [PATCH 4/6] Update PageTemplate.java Adding getLocations with query parameters to pass to fb. --- .../social/facebook/api/impl/PageTemplate.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/spring-social-facebook/src/main/java/org/springframework/social/facebook/api/impl/PageTemplate.java b/spring-social-facebook/src/main/java/org/springframework/social/facebook/api/impl/PageTemplate.java index 069e36748..ddb5a32a6 100644 --- a/spring-social-facebook/src/main/java/org/springframework/social/facebook/api/impl/PageTemplate.java +++ b/spring-social-facebook/src/main/java/org/springframework/social/facebook/api/impl/PageTemplate.java @@ -58,6 +58,12 @@ public PagedList getLocations(String pageId) requireAuthorization(); return graphApi.fetchConnections(pageId, "locations", Account.class); } + + public PagedList getLocations(String pageId, MultiValueMap queryParameters) + { + requireAuthorization(); + return graphApi.fetchConnections(pageId, "locations", Account.class, queryParameters); + } public String post(String pageId, String message) { requireAuthorization(); From 31231522518541f6bdee89dc0267178ede427049 Mon Sep 17 00:00:00 2001 From: Ryan Valdron Date: Fri, 25 Apr 2014 22:47:05 -0300 Subject: [PATCH 5/6] Create place-page-locations.json used for testing location pages call --- .../facebook/api/place-page-locations.json | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 spring-social-facebook/src/test/resources/org/springframework/social/facebook/api/place-page-locations.json diff --git a/spring-social-facebook/src/test/resources/org/springframework/social/facebook/api/place-page-locations.json b/spring-social-facebook/src/test/resources/org/springframework/social/facebook/api/place-page-locations.json new file mode 100644 index 000000000..8a826fbde --- /dev/null +++ b/spring-social-facebook/src/test/resources/org/springframework/social/facebook/api/place-page-locations.json @@ -0,0 +1,55 @@ + { + "category": "Local business", + "category_list": [ + { + "id": "176139629103647", + "name": "Dance Club" + } + ], + "name": "Booooooooof Miramichi", + "id": "251118525076385" + }, + { + "category": "Arts/entertainment/nightlife", + "category_list": [ + { + "id": "176139629103647", + "name": "Dance Club" + } + ], + "name": "Booooooooof Moncton", + "id": "578747338900172" + }, + { + "category": "Arts/entertainment/nightlife", + "category_list": [ + { + "id": "176139629103647", + "name": "Dance Club" + } + ], + "name": "Booooooooof Halifax", + "id": "223991034461281" + }, + { + "category": "Arts/entertainment/nightlife", + "category_list": [ + { + "id": "176139629103647", + "name": "Dance Club" + } + ], + "name": "Booooooooof Saint John", + "id": "432790206855954" + }, + { + "category": "Arts/entertainment/nightlife", + "category_list": [ + { + "id": "176139629103647", + "name": "Dance Club" + } + ], + "name": "Booooooooof Fredericton", + "id": "1384040068504197" + } From 134997272bafbdcaac260ae909376c226d7be1c6 Mon Sep 17 00:00:00 2001 From: Ryan Valdron Date: Fri, 25 Apr 2014 23:07:36 -0300 Subject: [PATCH 6/6] Update PageTemplateTest.java Adding test for fetching location pages from a parent page --- .../social/facebook/api/PageTemplateTest.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/spring-social-facebook/src/test/java/org/springframework/social/facebook/api/PageTemplateTest.java b/spring-social-facebook/src/test/java/org/springframework/social/facebook/api/PageTemplateTest.java index 1f09e8e48..76cbc3296 100644 --- a/spring-social-facebook/src/test/java/org/springframework/social/facebook/api/PageTemplateTest.java +++ b/spring-social-facebook/src/test/java/org/springframework/social/facebook/api/PageTemplateTest.java @@ -237,6 +237,19 @@ public void getAccounts() { assertEquals("Page", accounts.get(1).getCategory()); assertEquals("page2AccessToken", accounts.get(1).getAccessToken()); } + + @Test + public void getLocations(){ + mockServer.expect(requestTo("https://graph.facebook.com/214112095464587/locations")) + .andExpect(method(GET)) + .andExpect(header("Authorization", "OAuth someAccessToken")) + .andRespond(withSuccess(jsonResource("place-page-locations"), MediaType.APPLICATION_JSON)); + + PagedList locations = facebook.pageOperations().getLocations("214112095464587"); + assertTrue(locations.size() == 5); + Account page = locations.get(0); + assertEquals("251118525076385", page.getId()); + } @Test public void post_message() throws Exception {