From 6be477ae76b86502dedbf64554a737c75773e3a5 Mon Sep 17 00:00:00 2001 From: boncey Date: Thu, 6 May 2021 17:44:05 +0100 Subject: [PATCH] Add user search code Example code for issue #443 --- .../flickr/people/PeopleInterface.java | 23 +++++++++++++++++++ .../flickr/test/PeopleInterfaceTest.java | 9 ++++++++ .../flickr/test/util/TransportStub.java | 16 +++++++++---- 3 files changed, 43 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/flickr4java/flickr/people/PeopleInterface.java b/src/main/java/com/flickr4java/flickr/people/PeopleInterface.java index 1286b1b7..39b0bf9b 100644 --- a/src/main/java/com/flickr4java/flickr/people/PeopleInterface.java +++ b/src/main/java/com/flickr4java/flickr/people/PeopleInterface.java @@ -185,6 +185,29 @@ public User getInfo(String userId) throws FlickrException { return user; } + /** + * Search for the specified user. + * + * This method does not require authentication. + * + * @param username + * The user ID + * @return The User object + * @throws FlickrException if there was a problem connecting to Flickr + */ + public void search(String username) throws FlickrException { + Map parameters = new HashMap<>(); + parameters.put("method", "flickr.people.search"); + + parameters.put("username", username); + + Response response = transportAPI.get(transportAPI.getPath(), parameters, apiKey, sharedSecret); + if (response.isError()) { + throw new FlickrException(response.getErrorCode(), response.getErrorMessage()); + } + Element searchElement = response.getPayload(); + } + /** * Get a collection of public groups for the user. * diff --git a/src/test/java/com/flickr4java/flickr/test/PeopleInterfaceTest.java b/src/test/java/com/flickr4java/flickr/test/PeopleInterfaceTest.java index 3c2aeca2..bac527c4 100644 --- a/src/test/java/com/flickr4java/flickr/test/PeopleInterfaceTest.java +++ b/src/test/java/com/flickr4java/flickr/test/PeopleInterfaceTest.java @@ -44,6 +44,15 @@ public void testFindByUsername() throws FlickrException { assertNotNull(person.getId()); } + @Test + public void testSearch() throws FlickrException { + PeopleInterface iface = flickr.getPeopleInterface(); + iface.search(testProperties.getUsername()); +// assertNotNull(person); +// assertEquals(testProperties.getUsername(), person.getUsername()); +// assertNotNull(person.getId()); + } + @Test public void testGetInfo() throws FlickrException { PeopleInterface iface = flickr.getPeopleInterface(); diff --git a/src/test/java/com/flickr4java/flickr/test/util/TransportStub.java b/src/test/java/com/flickr4java/flickr/test/util/TransportStub.java index 368cca1f..34909cdc 100644 --- a/src/test/java/com/flickr4java/flickr/test/util/TransportStub.java +++ b/src/test/java/com/flickr4java/flickr/test/util/TransportStub.java @@ -11,6 +11,7 @@ import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import java.io.StringReader; +import java.net.URL; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; @@ -54,12 +55,17 @@ private Response loadResponseFromFile(Object flickrMethod, String httpMethod) { RESTResponse response; String filename = String.format("/payloads/%s/%s.xml", httpMethod, flickrMethod); try { - Path filePath = Paths.get(this.getClass().getResource(filename).toURI()); - String strXml = new String(Files.readAllBytes(filePath), StandardCharsets.UTF_8); - Document document = builder.parse(new InputSource(new StringReader(strXml))); + URL resource = this.getClass().getResource(filename); + if (resource != null) { + Path filePath = Paths.get(resource.toURI()); + String strXml = new String(Files.readAllBytes(filePath), StandardCharsets.UTF_8); + Document document = builder.parse(new InputSource(new StringReader(strXml))); - response = new RESTResponse(); - response.parse(document); + response = new RESTResponse(); + response.parse(document); + } else { + throw new FlickrRuntimeException(String.format("Unable to load response for %s %s", httpMethod.toUpperCase(), flickrMethod)); + } } catch (Exception e) { throw new FlickrRuntimeException(e); }