001package com.pusher.client.util; 002 003import java.io.UnsupportedEncodingException; 004import java.net.URLEncoder; 005import java.util.HashMap; 006import java.util.Map; 007 008/** 009 * Form URL-Encoded Connection Factory 010 * 011 * Allows HttpAuthorizer to write URL parameters to the connection 012 */ 013public class UrlEncodedConnectionFactory extends ConnectionFactory { 014 015 private Map<String, String> mQueryStringParameters = new HashMap<String, String>(); 016 017 /** 018 * Create a Form URL-encoded factory 019 */ 020 public UrlEncodedConnectionFactory() { 021 } 022 023 /** 024 * Create a Form URL-encoded factory 025 * 026 * @param queryStringParameters extra parameters that need to be added to query string. 027 */ 028 public UrlEncodedConnectionFactory(final Map<String, String> queryStringParameters) { 029 this.mQueryStringParameters = queryStringParameters; 030 } 031 032 @Override 033 public String getCharset() { 034 return "UTF-8"; 035 } 036 037 @Override 038 public String getContentType() { 039 return "application/x-www-form-urlencoded"; 040 } 041 042 public String getBody() { 043 final StringBuffer urlParameters = new StringBuffer(); 044 try { 045 urlParameters.append("channel_name=").append(URLEncoder.encode(getChannelName(), getCharset())); 046 urlParameters.append("&socket_id=").append(URLEncoder.encode(getSocketId(), getCharset())); 047 048 // Adding extra parameters supplied to be added to query string. 049 for (final String parameterName : mQueryStringParameters.keySet()) { 050 urlParameters.append("&").append(parameterName).append("="); 051 urlParameters.append(URLEncoder.encode(mQueryStringParameters.get(parameterName), getCharset())); 052 } 053 } catch (UnsupportedEncodingException e) { 054 e.printStackTrace(); 055 } 056 return urlParameters.toString(); 057 } 058}