Index: droogle.module
===================================================================
--- droogle.module	(revision 1432)
+++ droogle.module	(working copy)
@@ -66,7 +66,12 @@
     'page callback' => 'droogle_get_google_token',
     'access arguments' => array('administer droogle'),
   );
-  
+  $items ['droogle-upload'] = array(
+	'title' => 'Upload File',
+	'page callback' => 'drupal_get_form',
+	'page arguments' => array ('droogle_upload_form'),
+	'access arguments' => array ('upload google docs')
+  );
 
   return $items;
 }
@@ -219,7 +224,7 @@
     curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
     curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
-    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);	
+    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
 
     $json_response = curl_exec($curl);
     curl_close($curl);
@@ -229,14 +234,13 @@
     $result['refresh_token'] = $authObj->refresh_token;
     $result['access_token'] = $authObj->access_token;
 
+  }else {
+	header ( "Location: " . $request_to );
+  }
+  dpm($result);
+  return 'refesh token is ' . $result['refresh_token'];
 }
 
-header("Location: " . $request_to);
-dpm($result);
-return 'refesh token is ' . $result['refresh_token'];
-  
-}
-
 /**
  *  Implements hook_block_info().
  */
@@ -269,11 +273,11 @@
 function droogle_gdrive_connect($redirect_uri = NULL, $client_id = NULL, $client_secret = NULL, $redirect_uri = NULL) {
   watchdog('redirect_uri', 'redirect is ' . $redirect_uri);
   if ($path = libraries_get_path('google-api-php-client-git-version')) {
-    ini_set('include_path',ini_get('include_path').':' . $_SERVER['DOCUMENT_ROOT'] . '/sites/all/libraries/google-api-php-client-git-version/src');
-    require_once 'Google/Client.php';
-    require_once 'Google/Http/MediaFileUpload.php';
-    require_once 'Google/Service/Drive.php';
-   
+    //ini_set('include_path',ini_get('include_path').':' . $_SERVER['DOCUMENT_ROOT'] . '/sites/all/libraries/google-api-php-client-git-version/src');
+    require_once $path . '/src/Google/autoload.php';
+	require_once $path . '/src/Google/Client.php';
+	require_once $path . '/src/Google/Http/MediaFileUpload.php';
+	require_once $path . '/src/Google/Service/Drive.php';
   }
   else {
     drupal_set_message('You need to install the google api client library in the folder
@@ -507,6 +511,11 @@
       case 'application/vnd.google-apps.drawing':
         $content .= '<a href="' . $file["alternateLink"] . '"><li class="drawing">' . $file["title"] . '</li></a>';
         break;
+      case 'application/pdf' :
+		$content .= '<a href="' . $file ["alternateLink"] . '" target="_blank"><li class="pdf">' . $file ["title"] . '</li></a>';
+		break;
+      default :
+        $content .= '<a href="' . $file["alternateLink"] . '"><li class="word">' . $file["title"] . '</li></a>';
     }
   }
   $content .= '</ul>';
@@ -519,4 +528,128 @@
   return $content;
 }
 
+/**
+ * Droogle file upload form.
+ */
+function droogle_upload_form($form, &$form_state) {
+  drupal_set_title ( 'Upload file to google drive' );
+  $form = array ();
+  $form ['file'] = array (
+	'#type' => 'file',
+	'#title' => t ( 'Upload file' ),
+	'#description' => t ( 'Allowed types are pdf txt doc docx xls xlsx ppt pptx jpg jpeg png' )
+  );
+  $form ['#validate'] = array (
+	'droogle_upload_validate'
+  );
+  $form ['submit'] = array (
+	'#type' => 'submit',
+	'#value' => 'Submit'
+  );
+  return $form;
+}
 
+/**
+ * Validate handler for droogle file upload form.
+ */
+function droogle_upload_validate(&$form, &$form_state) {
+  $validators = array (
+    'file_validate_extensions' => array (
+	  'pdf txt doc docx xls xlsx ppt pptx jpg jpeg png'
+	)
+  );
+	
+  $destination = "public://drive_uploads";
+  file_prepare_directory ( $destination, FILE_CREATE_DIRECTORY );
+	
+  if ($file = file_save_upload ( 'file', $validators, $destination, FILE_EXISTS_RENAME )) {
+	$form_state ['values'] ['file'] = $file;
+  } else {
+	form_set_error ( 'file', t ( 'Unable to copy upload file to !dest', array ('!dest' => $destination) ) );
+  }
+}
+
+/**
+ * Submit handler for droogle file upload form.
+ */
+function droogle_upload_form_submit($form, &$form_state) {
+  $file = $form_state ['values'] ['file'];
+  if (isset ( $file->uri )) {
+  	$status = _droogle_upload_to_drive ( $file );
+	file_delete ( $form_state ['values'] ['file'] );
+  }
+}
+
+/**
+ * Upload file to google drive
+ */
+function _droogle_upload_to_drive($upload_file) {
+  unset ( $result );
+  $return_result = droogle_gdrive_connect ( 'droogle' );
+  $client = $return_result ['client'];
+  $service = $return_result ['service'];
+  if (isset ( $return_result ['authUrl'] )) {
+	 $authUrl = $return_result ['authUrl'];
+  }
+  /**
+  * **********************************************
+  * If we're signed in then lets try to upload our
+  * file.
+  * **********************************************
+  */
+  $refresh_token = variable_get ( 'droogle_refresh_token', '' );
+  if (! empty ( $refresh_token ) && $client->isAccessTokenExpired ()) {
+	$client->refreshToken ( $refresh_token );
+  }
+	
+  if ($client->getAccessToken ()) {
+	$file = new Google_Service_Drive_DriveFile ();
+	$filename = basename ( $upload_file->filename );
+	if (! isset ( $filename )) {
+	  $filename = 'New file ' . time ();
+    }
+	$file->setTitle ( $filename );
+	$mimeType = $upload_file->filemime;
+	$data = $data = file_get_contents ( file_create_url ( $upload_file->uri ) );
+    $result = $service->files->insert ( $file, array (
+	  'data' => $data,
+	  'mimeType' => $mimeType,
+	  'uploadType' => 'multipart',
+	  'fields' => 'id'
+	));
+		
+	//Permission documentation is here: https://developers.google.com/drive/v2/reference/permissions and
+	// here https://developers.google.com/drive/web/manage-sharing
+	$permission = new Google_Service_Drive_Permission ();
+	if (isset ( $permission_values )) {
+	  foreach ( $permission_values as $value ) {
+		$permission->setValue ( $value );
+	  }
+	} else {
+	  $permission->setValue ( variable_get ( 'site_mail', 'wcheung@babson.edu' ) );
+	}
+		
+	if (isset ( $type )) {
+	  $permission->setType ( $type );
+    } else {
+	  $permission->setType ( 'user' );
+	}
+		
+	if (isset ( $role )) {
+	  $permission->setRole ( $role );
+	} else {
+	  $permission->setRole ( 'writer' );
+    }
+		
+	$service->permissions->insert ( $result ['id'], $permission );
+  }
+	
+  $content = '';
+  if (isset ( $authUrl )) {
+	$content .= '<a class="login" href=' . $authUrl . '>Connect Me!</a></div>';
+  }
+  if (isset ( $result ) && $result) {
+	drupal_set_message ( 'File was Created in Google Drive!' );
+  }
+  return $content;
+}
\ No newline at end of file
