Package org.continuouscity

Source Code of org.continuouscity.Application

package org.continuouscity;

import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.security.NoSuchAlgorithmException;
import java.util.UUID;

import org.apache.commons.httpclient.Credentials;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.auth.AuthScope;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jets3t.service.S3Service;
import org.jets3t.service.S3ServiceException;
import org.jets3t.service.acl.AccessControlList;
import org.jets3t.service.impl.rest.httpclient.RestS3Service;
import org.jets3t.service.model.S3Bucket;
import org.jets3t.service.model.S3Object;
import org.jets3t.service.security.AWSCredentials;
import org.red5.server.adapter.ApplicationAdapter;
import org.red5.server.api.IConnection;
import org.red5.server.api.IContext;
import org.red5.server.api.Red5;
import org.springframework.core.io.Resource;

public class Application
    extends ApplicationAdapter {

    public String apiURL;
    public String apiUser;
    public String apiPassword;
   
    public String s3AccessKey;
    public String s3SecretKey;
   
    private static final Log log = LogFactory.getLog(Application.class);

    public void setApiURL(String url) {
        apiURL = url;
    }

    public void setApiUser(String user) {
        apiUser = user;
    }

    public void setApiPassword(String password) {
        apiPassword = password;
    }
   
    public void setS3AccessKey(String accessKey) {
        s3AccessKey = accessKey;
    }
   
    public void setS3SecretKey(String secretKey) {
        s3SecretKey = secretKey;
    }

    public boolean roomConnect(IConnection conn, Object[] params) {
        log.debug("New connection attempt from " + conn.getRemoteAddress() + "...");
        return super.roomConnect(conn, params);
    }

    public void roomDisconnect(IConnection conn) {
        log.debug("Connection closed by " + conn.getRemoteAddress() + "...");
        super.roomDisconnect(conn);
    }

    public String generateUUID() {
        return UUID.randomUUID().toString();
    }

    public boolean storeVideo(String stream_id) {
        log.info("Storing video stream: " + stream_id);
        IContext context = new Red5().getContext();
        Resource flv = context.getResource("streams/" + stream_id + ".flv");
        try {
            AWSCredentials credentials = new AWSCredentials(s3AccessKey, s3SecretKey);
            S3Service s3 = new RestS3Service(credentials);
            S3Bucket bucket = s3.getBucket("xubu");
            File file = flv.getFile();
            S3Object object = new S3Object(bucket, file);
            AccessControlList acl = s3.getBucketAcl(bucket);
            object.setAcl(acl);
            object.setKey("streams/" + stream_id + ".flv");
            object = s3.putObject(bucket, object);
            log.info("http://s3.amazonaws.com/" + bucket.getName() + "/" + object.getKey());
            file.delete();
            return true;
        } catch (IOException e) {
            log.error(e);
            return false;
        } catch (S3ServiceException e) {
            log.error(e);
            return false;
        } catch (NoSuchAlgorithmException e) {
            log.error(e);
            return false;
        }
    }
   
    public boolean insertPerformance(String stream_id, String name, String city) {
        HttpClient client = new HttpClient();
        PostMethod post = new PostMethod(apiURL);
        NameValuePair[] data = {
            new NameValuePair("stream_id", stream_id),
            new NameValuePair("actor", name),
            new NameValuePair("city", city),
            new NameValuePair("public", "true")
        };
        post.setRequestBody(data);
        try {
            AuthScope scope = new AuthScope(new URI(apiURL).getHost(), 80, "Restricted Access");
            Credentials cred = new UsernamePasswordCredentials(apiUser, apiPassword);
            client.getState().setCredentials(scope, cred);
            client.getParams().setAuthenticationPreemptive(true);
            int status = client.executeMethod(post);
            if (status == 201) {
                return true;
            }
            return false;
        } catch (HttpException e) {
            log.error(e);
            return false;
        } catch (IOException e) {
            log.error(e);
            return false;
        } catch (URISyntaxException e) {
            log.error(e);
            return false;
        } finally {
            post.releaseConnection();
        }
    }
}
TOP

Related Classes of org.continuouscity.Application

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.