public String executeStmt(String method, String urlString, String statement, List<NameValuePair> qparams) throws IOException { Check.notNull(statement); GenericUrl url = setParams(new GenericUrl(urlString), qparams); UrlEncodedContent urlEntity = setMediaType(getUrlEncodedSql(statement)); HttpRequestFactory rf = httpTransport.createRequestFactory(credential); HttpResponse response = rf.buildRequest(method, url, urlEntity).execute(); String result = readGoogleResponse(response); if (response.getStatusCode() != HttpServletResponse.SC_OK) throw new RuntimeException(result.toString() + statement); return result; }
private static String getGoogleIdToken(String jwt) throws Exception { final GenericData tokenRequest = new GenericData().set("grant_type", JWT_BEARER_TOKEN_GRANT_TYPE).set("assertion", jwt); final UrlEncodedContent content = new UrlEncodedContent(tokenRequest); final HttpRequestFactory requestFactory = httpTransport.createRequestFactory(); final HttpRequest request = requestFactory .buildPostRequest(new GenericUrl(OAUTH_TOKEN_URI), content) .setParser(new JsonObjectParser(JacksonFactory.getDefaultInstance())); HttpResponse response; String idToken = null; response = request.execute(); GenericData responseData = response.parseAs(GenericData.class); idToken = (String) responseData.get("id_token"); return idToken; }
/** * Login an exiting Kickflip User and make it active. * * @param username The Kickflip user's username * @param password The Kickflip user's password * @param cb This callback will receive a User in {@link io.kickflip.sdk.api.KickflipCallback#onSuccess(io.kickflip.sdk.api.json.Response)} * or an Exception {@link io.kickflip.sdk.api.KickflipCallback#onError(io.kickflip.sdk.exception.KickflipException)}. */ public void loginUser(String username, final String password, final KickflipCallback cb) { GenericData data = new GenericData(); data.put("username", username); data.put("password", password); post(GET_USER_PRIVATE, new UrlEncodedContent(data), User.class, new KickflipCallback() { @Override public void onSuccess(final Response response) { if (VERBOSE) Log.i(TAG, "loginUser response: " + response); storeNewUserResponse((User) response, password); postResponseToCallback(cb, response); } @Override public void onError(final KickflipException error) { Log.w(TAG, "loginUser Error: " + error); postExceptionToCallback(cb, error); } }); }
/** * Get public user info * * @param username The Kickflip user's username * @param cb This callback will receive a User in {@link io.kickflip.sdk.api.KickflipCallback#onSuccess(io.kickflip.sdk.api.json.Response)} * or an Exception {@link io.kickflip.sdk.api.KickflipCallback#onError(io.kickflip.sdk.exception.KickflipException)}. */ public void getUserInfo(String username, final KickflipCallback cb) { if (!assertActiveUserAvailable(cb)) return; GenericData data = new GenericData(); data.put("username", username); post(GET_USER_PUBLIC, new UrlEncodedContent(data), User.class, new KickflipCallback() { @Override public void onSuccess(final Response response) { if (VERBOSE) Log.i(TAG, "getUserInfo response: " + response); postResponseToCallback(cb, response); } @Override public void onError(final KickflipException error) { Log.w(TAG, "getUserInfo Error: " + error); postExceptionToCallback(cb, error); } }); }
/** * Start a new Stream owned by the given User. Must be called after * {@link io.kickflip.sdk.api.KickflipApiClient#createNewUser(KickflipCallback)} * Delivers stream endpoint destination data via a {@link io.kickflip.sdk.api.KickflipCallback}. * * @param user The Kickflip User on whose behalf this request is performed. * @param cb This callback will receive a Stream subclass in {@link io.kickflip.sdk.api.KickflipCallback#onSuccess(io.kickflip.sdk.api.json.Response)} * depending on the Kickflip account type. Implementors should * check if the response is instanceof HlsStream, StartRtmpStreamResponse, etc. */ private void startStreamWithUser(User user, Stream stream, final KickflipCallback cb) { checkNotNull(user); checkNotNull(stream); GenericData data = new GenericData(); data.put("uuid", user.getUUID()); data.put("private", stream.isPrivate()); if (stream.getTitle() != null) { data.put("title", stream.getTitle()); } if (stream.getDescription() != null) { data.put("description", stream.getDescription()); } if (stream.getExtraInfo() != null) { data.put("extra_info", new Gson().toJson(stream.getExtraInfo())); } post(START_STREAM, new UrlEncodedContent(data), HlsStream.class, cb); }
/** * <pre> * status[drink_id]=50fb3d16ce007c40fc00080d&status[dealer_id]=52cd8b5e7a58b40eae004e40&status[status]=1 * </pre> */ @Override public DrinkStatus loadDataFromNetwork() throws Exception { Map<String, String> tempParameters = new HashMap<>(); tempParameters.put("status[drink_id]", drinkId); tempParameters.put("status[dealer_id]",dealerId); tempParameters.put("status[status]",drinkStatus.getStatusId()); HttpContent tempContent = new UrlEncodedContent(tempParameters); HttpRequest request = getHttpRequestFactory().buildPostRequest(new GenericUrl(URL_BASE + URL_STATUS_UPDATE), tempContent); GsonBuilder tmpBuilder = new GsonBuilder(); tmpBuilder.registerTypeAdapter(Dealer.class, new DealerDetailsDeserializer()); Gson tempGson = tmpBuilder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create(); DrinkStatus tmpDealer; try (InputStream in = request.execute().getContent()) { tmpDealer = tempGson.fromJson(new InputStreamReader(in), DrinkStatus.class); if (tmpDealer == null) { Log.e(LOGTAG, "No dealer details downloaded"); } else { Log.i(LOGTAG, "Downloaded dealer details: " + tmpDealer); } } return tmpDealer; }
private String extractPayload(HttpHeaders headers, @Nullable HttpContent content) { StringBuilder messageBuilder = new StringBuilder(); if (headers != null) { appendMapAsString(messageBuilder, headers); } if (content != null) { messageBuilder.append(String.format("%nContent:%n")); if (content instanceof UrlEncodedContent) { UrlEncodedContent encodedContent = (UrlEncodedContent) content; appendMapAsString(messageBuilder, Data.mapOf(encodedContent.getData())); } else if (content != null) { ByteArrayOutputStream byteStream = new ByteArrayOutputStream(); try { content.writeTo(byteStream); messageBuilder.append(byteStream.toString(StandardCharsets.UTF_8.name())); } catch (IOException e) { messageBuilder.append("Unable to read request content due to exception: " + e); } } } return messageBuilder.toString(); }
public void post() { try { HashMap<Object, Object> payloadToSend = Maps.newHashMap(); payloadToSend.put("payload", getPayloadAsJson()); requestFactory.buildPostRequest(new GenericUrl(url), new UrlEncodedContent(payloadToSend)) .execute(); } catch (Exception ex) { ex.printStackTrace(); } }
UrlEncodedContent buildAuthContent() { Map<String, String> content = new LinkedHashMap<>(); content.put("grant_type", "password"); content.put("client_id", this.config.consumerKey); content.put("client_secret", this.config.consumerSecret); content.put("username", this.config.username); String password = String.format("%s%s", this.config.password, this.config.passwordToken); content.put("password", password); return new UrlEncodedContent(content); }
@Override public void intercept(HttpRequest request) throws IOException { Map<String, Object> data = Data.mapOf(UrlEncodedContent.getContent(request).getData()); if (clientSecret != null) { data.put("client_assertion", clientSecret); } data.put("client_assertion_type", CLIENT_ASSERTION_TYPE); data.put("grant_type", GRANT_TYPE); }
@Override public final void doPost(final HttpServletRequest req, final HttpServletResponse resp) throws IOException { HttpTransport httpTransport; try { Map<Object, Object> params = new HashMap<>(); params.putAll(req.getParameterMap()); params.put("task", req.getHeader("X-AppEngine-TaskName")); httpTransport = GoogleNetHttpTransport.newTrustedTransport(); GoogleCredential credential = GoogleCredential.getApplicationDefault() .createScoped(Collections.singleton("https://www.googleapis.com/auth/userinfo.email")); HttpRequestFactory requestFactory = httpTransport.createRequestFactory(); GenericUrl url = new GenericUrl(ConfigurationConstants.IMAGE_RESIZER_URL); HttpRequest request = requestFactory.buildPostRequest(url, new UrlEncodedContent(params)); credential.initialize(request); HttpResponse response = request.execute(); if (!response.isSuccessStatusCode()) { log("Call to the imageresizer failed: " + response.getContent().toString()); resp.setStatus(HttpStatusCodes.STATUS_CODE_SERVER_ERROR); } else { resp.setStatus(response.getStatusCode()); } } catch (GeneralSecurityException | IOException e) { log("Http request error: " + e.getMessage()); resp.setStatus(HttpStatusCodes.STATUS_CODE_SERVER_ERROR); } }
private void send(String s) throws IOException { HashMap<Object, Object> payloadToSend = Maps.newHashMap(); payloadToSend.put("payload", s); requestFactory.buildPostRequest(new GenericUrl(url), new UrlEncodedContent(payloadToSend)).execute(); }
/** * Set the current active user's meta info. Pass a null argument to leave it as-is. * * @param newPassword the user's new password * @param email the user's new email address * @param displayName The desired display name * @param extraInfo Arbitrary String data to associate with this user. * @param cb This callback will receive a User in {@link io.kickflip.sdk.api.KickflipCallback#onSuccess(io.kickflip.sdk.api.json.Response)} * or an Exception {@link io.kickflip.sdk.api.KickflipCallback#onError(io.kickflip.sdk.exception.KickflipException)}. */ public void setUserInfo(final String newPassword, String email, String displayName, Map extraInfo, final KickflipCallback cb) { if (!assertActiveUserAvailable(cb)) return; GenericData data = new GenericData(); final String finalPassword; if (newPassword != null){ data.put("new_password", newPassword); finalPassword = newPassword; } else { finalPassword = getPasswordForActiveUser(); } if (email != null) data.put("email", email); if (displayName != null) data.put("display_name", displayName); if (extraInfo != null) data.put("extra_info", new Gson().toJson(extraInfo)); post(EDIT_USER, new UrlEncodedContent(data), User.class, new KickflipCallback() { @Override public void onSuccess(final Response response) { if (VERBOSE) Log.i(TAG, "setUserInfo response: " + response); storeNewUserResponse((User) response, finalPassword); postResponseToCallback(cb, response); } @Override public void onError(final KickflipException error) { Log.w(TAG, "setUserInfo Error: " + error); postExceptionToCallback(cb, error); } }); }
/** * Stop a Stream owned by the given Kickflip User. * * @param cb This callback will receive a Stream subclass in #onSuccess(response) * depending on the Kickflip account type. Implementors should * check if the response is instanceof HlsStream, etc. */ private void stopStream(User user, Stream stream, final KickflipCallback cb) { checkNotNull(stream); // TODO: Add start / stop lat lon to Stream? GenericData data = new GenericData(); data.put("stream_id", stream.getStreamId()); data.put("uuid", user.getUUID()); if (stream.getLatitude() != 0) { data.put("lat", stream.getLatitude()); } if (stream.getLongitude() != 0) { data.put("lon", stream.getLongitude()); } post(STOP_STREAM, new UrlEncodedContent(data), HlsStream.class, cb); }
/** * Send Stream Metadata for a {@link io.kickflip.sdk.api.json.Stream}. * The target Stream must be owned by the User created with {@link io.kickflip.sdk.api.KickflipApiClient#createNewUser(KickflipCallback)} * from this KickflipApiClient. * * @param stream the {@link io.kickflip.sdk.api.json.Stream} to get Meta data for * @param cb A callback to receive the updated Stream upon request completion */ public void setStreamInfo(Stream stream, final KickflipCallback cb) { if (!assertActiveUserAvailable(cb)) return; GenericData data = new GenericData(); data.put("stream_id", stream.getStreamId()); data.put("uuid", getActiveUser().getUUID()); if (stream.getTitle() != null) { data.put("title", stream.getTitle()); } if (stream.getDescription() != null) { data.put("description", stream.getDescription()); } if (stream.getExtraInfo() != null) { data.put("extra_info", new Gson().toJson(stream.getExtraInfo())); } if (stream.getLatitude() != 0) { data.put("lat", stream.getLatitude()); } if (stream.getLongitude() != 0) { data.put("lon", stream.getLongitude()); } if (stream.getCity() != null) { data.put("city", stream.getCity()); } if (stream.getState() != null) { data.put("state", stream.getState()); } if (stream.getCountry() != null) { data.put("country", stream.getCountry()); } if (stream.getThumbnailUrl() != null) { data.put("thumbnail_url", stream.getThumbnailUrl()); } data.put("private", stream.isPrivate()); data.put("deleted", stream.isDeleted()); post(SET_META, new UrlEncodedContent(data), Stream.class, cb); }
/** * Get a List of {@link io.kickflip.sdk.api.json.Stream} objects created by the given Kickflip User. * * @param username the target Kickflip username * @param cb A callback to receive the resulting List of Streams */ public void getStreamsByUsername(String username, int pageNumber, int itemsPerPage, final KickflipCallback cb) { if (!assertActiveUserAvailable(cb)) return; GenericData data = new GenericData(); addPaginationData(pageNumber, itemsPerPage, data); data.put("uuid", getActiveUser().getUUID()); data.put("username", username); post(SEARCH_USER, new UrlEncodedContent(data), StreamList.class, cb); }
/** * Get a List of {@link io.kickflip.sdk.api.json.Stream}s containing a keyword. * <p/> * This method searches all public recordings made by Users of your Kickflip app. * * @param keyword The String keyword to query * @param cb A callback to receive the resulting List of Streams */ public void getStreamsByKeyword(String keyword, int pageNumber, int itemsPerPage, final KickflipCallback cb) { if (!assertActiveUserAvailable(cb)) return; GenericData data = new GenericData(); addPaginationData(pageNumber, itemsPerPage, data); data.put("uuid", getActiveUser().getUUID()); if (keyword != null) { data.put("keyword", keyword); } post(SEARCH_KEYWORD, new UrlEncodedContent(data), StreamList.class, cb); }
/** * Get a List of {@link io.kickflip.sdk.api.json.Stream}s near a geographic location. * <p/> * This method searches all public recordings made by Users of your Kickflip app. * * @param location The target Location * @param radius The target Radius in meters * @param cb A callback to receive the resulting List of Streams */ public void getStreamsByLocation(Location location, int radius, int pageNumber, int itemsPerPage, final KickflipCallback cb) { if (!assertActiveUserAvailable(cb)) return; GenericData data = new GenericData(); data.put("uuid", getActiveUser().getUUID()); data.put("lat", location.getLatitude()); data.put("lon", location.getLongitude()); if (radius != 0) { data.put("radius", radius); } post(SEARCH_GEO, new UrlEncodedContent(data), StreamList.class, cb); }
/** * Generate a meme. * * @param topText the text to appear on the top of the image * @param bottomText the text to appear on the bottom of the image * @return meme URL */ private Optional<String> generateMeme(String templateId, String topText, String bottomText) { logger.info("Generating meme: \"{}\" \"{}\" \"{}\"", templateId, topText, bottomText); GenericUrl url; try { url = new GenericUrl(BASE_URL + IMAGE_URL); HttpContent content = new UrlEncodedContent( new CaptionRequest(templateId, username, password, topText, bottomText)); HttpRequest request = requestFactory.buildPostRequest(url, content); HttpResponse response = request.execute(); CaptionResponse captionResponse = response.parseAs(CaptionResponse.class); if (captionResponse.success) { return Optional.of(captionResponse.data.url); } else { logger.error("Error making API query: {}", captionResponse.error_message); return Optional.empty(); } } catch (IOException e) { logger.error("Error making API query: {}", e); } return Optional.empty(); }
public MultipartFormDataContent addUrlEncodedContent(String name, String value) { GenericData data = new GenericData(); data.put(value, ""); Part part = new Part(); part.setContent(new UrlEncodedContent(data)); part.setName(name); this.addPart(part); return this; }
@Override public HttpContent getHttpContent() { Map<String, String> data = Maps.newHashMap(); data.put(REPORT_QUERY_KEY, reportQuery); data.put(FORMAT_KEY, format); return new UrlEncodedContent(data); }
private UrlEncodedContent getUrlEncodedSql(String statement) { Map<String, String> content = new HashMap<String, String>(); content.put("sql", statement); return new UrlEncodedContent(content); }
public String executeStmt(String method, String urlString, String statement, List<NameValuePair> qparams) throws IOException { Check.notNull(statement); GenericUrl url = setParams(new GenericUrl(urlString), qparams); UrlEncodedContent urlEntity = setMediaType(getUrlEncodedSql(statement)); HttpRequestFactory rf = httpTransport.createRequestFactory(credential); HttpResponse response = rf.buildRequest(method, url, urlEntity).execute(); String result = readGoogleResponse(response); if (response.getStatusCode() != HttpServletResponse.SC_OK) throw new IOException(result.toString() + statement); return result; }
/** * Create a new Kickflip User. * The User created as a result of this request is cached and managed by this KickflipApiClient * throughout the life of the host Android application installation. * <p/> * The other methods of this client will be performed on behalf of the user created by this request, * unless noted otherwise. * * @param username The desired username for this Kickflip User. Will be altered if not unique for this Kickflip app. * @param password The password for this Kickflip user. * @param email The email address for this Kickflip user. * @param displayName The display name for this Kickflip user. * @param extraInfo Map data to be associated with this Kickflip User. * @param cb This callback will receive a User in {@link io.kickflip.sdk.api.KickflipCallback#onSuccess(io.kickflip.sdk.api.json.Response)} * or an Exception {@link io.kickflip.sdk.api.KickflipCallback#onError(io.kickflip.sdk.exception.KickflipException)}. */ public void createNewUser(String username, String password, String email, String displayName, Map extraInfo, final KickflipCallback cb) { GenericData data = new GenericData(); if (username != null) { data.put("username", username); } final String finalPassword; if (password != null) { finalPassword = password; } else { finalPassword = generateRandomPassword(); } data.put("password", finalPassword); if (displayName != null) { data.put("display_name", displayName); } if (email != null) { data.put("email", email); } if (extraInfo != null) { data.put("extra_info", new Gson().toJson(extraInfo)); } post(NEW_USER, new UrlEncodedContent(data), User.class, new KickflipCallback() { @Override public void onSuccess(final Response response) { if (VERBOSE) Log.i(TAG, "createNewUser response: " + response); storeNewUserResponse((User) response, finalPassword); postResponseToCallback(cb, response); } @Override public void onError(final KickflipException error) { Log.w(TAG, "createNewUser Error: " + error); postExceptionToCallback(cb, error); } }); }
@Override public HttpContent getHttpContent() { Map<String, String> data = Maps.newHashMap(); data.put(REPORT_XML_KEY, reportDefinitionXml); return new UrlEncodedContent(data); }
/** * Sets all instance variables to values for a successful request. Tests that require failed * requests or null/empty values should mutate the instance variables accordingly. */ @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); requestMethod = "POST"; url = "http://www.foo.com/bar"; reportServiceLogger = new ReportServiceLogger(loggerDelegate); requestFactory = new NetHttpTransport().createRequestFactory(); // Constructs the request headers. rawRequestHeaders = new HashMap<>(); // Adds headers that should be scrubbed. for (String scrubbedHeader : ReportServiceLogger.SCRUBBED_HEADERS) { rawRequestHeaders.put(scrubbedHeader, "foo" + scrubbedHeader); } // Adds headers that should not be scrubbed. rawRequestHeaders.put("clientCustomerId", "123-456-7890"); rawRequestHeaders.put("someOtherHeader", "SomeOtherValue"); GenericData postData = new GenericData(); postData.put("__rdquery", "SELECT CampaignId FROM CAMPAIGN_PERFORMANCE_REPORT"); httpRequest = requestFactory.buildPostRequest(new GenericUrl(url), new UrlEncodedContent(postData)); for (Entry<String, String> rawHeaderEntry : rawRequestHeaders.entrySet()) { String key = rawHeaderEntry.getKey(); if ("authorization".equalsIgnoreCase(key)) { httpRequest .getHeaders() .setAuthorization(Collections.<String>singletonList(rawHeaderEntry.getValue())); } else { httpRequest.getHeaders().put(key, rawHeaderEntry.getValue()); } } httpRequest.getResponseHeaders().setContentType("text/csv; charset=UTF-8"); httpRequest.getResponseHeaders().put("someOtherResponseHeader", "foo"); httpRequest .getResponseHeaders() .put("multiValueHeader", Arrays.<String>asList("value1", "value2")); }
/** * Get Stream Metadata for a a public {@link io.kickflip.sdk.api.json.Stream}. * The target Stream must belong a User of your Kickflip app. * * @param stream the {@link io.kickflip.sdk.api.json.Stream} to get Meta data for * @param cb A callback to receive the updated Stream upon request completion */ public void getStreamInfo(Stream stream, final KickflipCallback cb) { GenericData data = new GenericData(); data.put("stream_id", stream.getStreamId()); post(GET_META, new UrlEncodedContent(data), Stream.class, cb); }
/** * Get Stream Metadata for a a public {@link io.kickflip.sdk.api.json.Stream#mStreamId}. * The target Stream must belong a User within your Kickflip app. * <p/> * This method is useful when digesting a Kickflip.io/<stream_id> url, where only * the StreamId String is known. * * @param streamId the stream Id of the given stream. This is the value that appears * in urls of form kickflip.io/<stream_id> * @param cb A callback to receive the current {@link io.kickflip.sdk.api.json.Stream} upon request completion */ public void getStreamInfo(String streamId, final KickflipCallback cb) { GenericData data = new GenericData(); data.put("stream_id", streamId); post(GET_META, new UrlEncodedContent(data), Stream.class, cb); }
/** * Flag a {@link io.kickflip.sdk.api.json.Stream}. Used when the active Kickflip User does not own the Stream. * <p/> * To delete a recording the active Kickflip User owns, use * {@link io.kickflip.sdk.api.KickflipApiClient#setStreamInfo(io.kickflip.sdk.api.json.Stream, KickflipCallback)} * * @param stream The Stream to flag. * @param cb A callback to receive the result of the flagging operation. */ public void flagStream(Stream stream, final KickflipCallback cb) { if (!assertActiveUserAvailable(cb)) return; GenericData data = new GenericData(); data.put("uuid", getActiveUser().getUUID()); data.put("stream_id", stream.getStreamId()); post(FLAG_STREAM, new UrlEncodedContent(data), Stream.class, cb); }