org.megam.api.http.TransportMachinery.java Source code

Java tutorial

Introduction

Here is the source code for org.megam.api.http.TransportMachinery.java

Source

/* Copyright 2012 Megam Systems?
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
    
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
    
You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
package org.megam.api.http;

import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.util.Map;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPatch;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.entity.FileEntity;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;

public class TransportMachinery {

    public static TransportResponse post(TransportTools nuts) throws ClientProtocolException, IOException {
        DefaultHttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(nuts.urlString());
        System.out.println("NUTS" + nuts.toString());
        if (nuts.headers() != null) {
            for (Map.Entry<String, String> headerEntry : nuts.headers().entrySet()) {
                httppost.addHeader(headerEntry.getKey(), headerEntry.getValue());
            }
        }
        if (nuts.fileEntity() != null) {
            httppost.setEntity(nuts.fileEntity());
        }
        if (nuts.pairs() != null && (nuts.contentType() == null)) {
            httppost.setEntity(new UrlEncodedFormEntity(nuts.pairs()));
        }

        if (nuts.contentType() != null) {
            httppost.setEntity(new StringEntity(nuts.contentString(), nuts.contentType()));
        }
        TransportResponse transportResp = null;
        System.out.println(httppost.toString());
        try {
            HttpResponse httpResp = httpclient.execute(httppost);
            transportResp = new TransportResponse(httpResp.getStatusLine(), httpResp.getEntity(),
                    httpResp.getLocale());
        } finally {
            httppost.releaseConnection();
        }
        return transportResp;

    }

    public static TransportResponse put(TransportTools nuts) throws ClientProtocolException, IOException {

        DefaultHttpClient httpclient = new DefaultHttpClient();
        HttpPut httpput = new HttpPut(nuts.urlString());

        if (nuts.headers() != null) {
            for (Map.Entry<String, String> headerEntry : nuts.headers().entrySet()) {
                httpput.addHeader(headerEntry.getKey(), headerEntry.getValue());
            }
        }

        if (nuts.pairs() != null && (nuts.contentType() == null)) {
            httpput.setEntity(new UrlEncodedFormEntity(nuts.pairs()));
        }

        if (nuts.contentType() != null) {
            httpput.setEntity(new StringEntity(nuts.contentString(), nuts.contentType()));
        }

        TransportResponse transportResp = null;
        try {
            HttpResponse httpResp = httpclient.execute(httpput);
            transportResp = new TransportResponse(httpResp.getStatusLine(), httpResp.getEntity(),
                    httpResp.getLocale());
        } finally {
            httpput.releaseConnection();
        }
        return transportResp;

    }

    public static TransportResponse patch(TransportTools nuts) throws ClientProtocolException, IOException {

        DefaultHttpClient httpclient = new DefaultHttpClient();
        HttpPatch httppatch = new HttpPatch(nuts.urlString());

        if (nuts.headers() != null) {
            for (Map.Entry<String, String> headerEntry : nuts.headers().entrySet()) {
                httppatch.addHeader(headerEntry.getKey(), headerEntry.getValue());
            }
        }

        if (nuts.pairs() != null && (nuts.contentType() == null)) {
            httppatch.setEntity(new UrlEncodedFormEntity(nuts.pairs()));
        }

        if (nuts.contentType() != null) {
            httppatch.setEntity(new StringEntity(nuts.contentString(), nuts.contentType()));
        }

        TransportResponse transportResp = null;
        try {
            httpclient.execute(httppatch);
            //transportResp = new TransportResponse(httpResp.getStatusLine(), httpResp.getEntity(), httpResp.getLocale());
        } finally {
            httppatch.releaseConnection();
        }
        return transportResp;

    }

    public static TransportResponse get(TransportTools nuts)
            throws URISyntaxException, ClientProtocolException, IOException {

        DefaultHttpClient httpclient = new DefaultHttpClient();
        HttpGet httpget = new HttpGet(nuts.urlString());
        if (nuts.headers() != null) {
            for (Map.Entry<String, String> headerEntry : nuts.headers().entrySet()) {

                //this if condition is set for twilio Rest API to add credentials to DefaultHTTPClient, conditions met twilio work.
                if (headerEntry.getKey().equalsIgnoreCase("provider")
                        & headerEntry.getValue().equalsIgnoreCase(nuts.headers().get("provider"))) {
                    httpclient.getCredentialsProvider().setCredentials(
                            new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT), new UsernamePasswordCredentials(
                                    nuts.headers().get("account_sid"), nuts.headers().get("oauth_token")));
                }
                //this else part statements for other providers
                else {
                    httpget.addHeader(headerEntry.getKey(), headerEntry.getValue());
                }
            }
        }

        if (nuts.isQuery()) {
            URIBuilder uribuilder = new URIBuilder(nuts.urlString());
            uribuilder.setQuery(URLEncodedUtils.format(nuts.pairs(), nuts.encoding()));
            httpget.setURI(uribuilder.build());
        }

        TransportResponse transportResp = null;
        try {
            HttpResponse httpResp = httpclient.execute(httpget);
            transportResp = new TransportResponse(httpResp.getStatusLine(), httpResp.getEntity(),
                    httpResp.getLocale());
        } finally {
            httpget.releaseConnection();
        }

        return transportResp;

    }

    public static TransportResponse delete(TransportTools nuts) throws ClientProtocolException, IOException {
        DefaultHttpClient httpclient = new DefaultHttpClient();
        HttpDelete httpdel = new HttpDelete(nuts.urlString());

        if (nuts.headers() != null) {
            for (Map.Entry<String, String> headerEntry : nuts.headers().entrySet()) {

                //this if condition is set for twilio Rest API to add credentials to DefaultHTTPClient, conditions met twilio work.
                if (headerEntry.getKey().equalsIgnoreCase("provider")
                        & headerEntry.getValue().equalsIgnoreCase(nuts.headers().get("provider"))) {
                    httpclient.getCredentialsProvider().setCredentials(
                            new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT), new UsernamePasswordCredentials(
                                    nuts.headers().get("account_sid"), nuts.headers().get("oauth_token")));
                }
                //this else part statements for other providers
                else {
                    httpdel.addHeader(headerEntry.getKey(), headerEntry.getValue());
                }
            }
        }

        TransportResponse transportResp = null;
        try {
            httpclient.execute(httpdel);
            //transportResp = new TransportResponse(httpResp.getStatusLine(), httpResp.getEntity(), httpResp.getLocale());
        } finally {
            httpdel.releaseConnection();
        }
        return transportResp;

    }

}