SendGrid: Cara Pakai API Dengan Authentication Menggunakan PHP dan cURL

SendGrid menyediakan REST API sebagai penghubung antara aplikasi kita dengan layanan yang mereka berikan. Untuk berinteraksi dengan API mereka, kita membutuhkan API KEY yang didapat dari account kita di SendGrid.

Sesuai dengan dokumentasi di website SendGrid, berikut cara panggil API nya menggunakan cURL.

curl --request POST \
  --url https://api.sendgrid.com/v3/mail/batch \
  --header 'authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \

Contoh diatas untuk mendapatkan Batch id.

Authentication diatas menggunakan Bearer atau token berupa API KEY account kita di SendGrid.

Berikut ketika cURL digunakan pada PHP.

$url = '<url api>';
$apikey = '<api key anda>';
$content = json_encode('<array content anda>');

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-type: application/json","authorization: Bearer ".$apikey));
curl_setopt($curl, CURLOPT_HTTPGET, 1); //untuk GET method

$json_response = curl_exec($curl);

curl_close($curl);

$response = json_decode($json_response, true);

 

 

Cara Panggil REST API di Client Menggunakan PHP dan cURL

POST

$url = "url yang jadi interface";    
$content = json_encode("data body yang di post dalam bentuk php array");

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-type: application/json"));
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $content);

$json_response = curl_exec($curl);

curl_close($curl);

$response = json_decode($json_response, true);

GET

$url = "url yang jadi interface";    

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-type: application/json"));
curl_setopt($curl, CURLOPT_HTTPGET, 1)

$json_response = curl_exec($curl);

curl_close($curl);

$response = json_decode($json_response, true);

untuk menambahkan authentikasi pada saat memanggil API menggunakan bearer atau token authentication, bisa ditambahkan di dalam komponen array sejajar dengan “Content-type”

misalnya seperti

$url = "url yang jadi interface";    

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-type: application/json", "authorization: Bearer <token>"));
curl_setopt($curl, CURLOPT_HTTPGET, 1)

$json_response = curl_exec($curl);

curl_close($curl);

$response = json_decode($json_response, true);

 

 

PHP read csv file, save in variable, and display in the browser

In this case, we would like to read comma separated value (csv) than save in the php variable and display to the browser.

For example, we have csv file with name data.csv and containing data looks like below:

"First Name","Last Name","e-mail"
"John","Doe","[email protected]"
"Alex","Joe","[email protected]"

Create a php file for example readcsv.php. The PHP code is looks like below:

<?PHP

    $file_handle = fopen('./data.csv', 'r');
    while (!feof($file_handle) ) {
        $text[] = fgetcsv($file_handle, null, ",");
    }
    fclose($file_handle);


    echo '<pre>';
    print_r($text);
    echo '</pre>';

?>

Open php file in the browser and it will display csv data in the array format.

reference:

  • http://codedevelopr.com/articles/reading-csv-files-into-php-array/
  • http://php.net/manual/en/function.fgetcsv.php

Fungsi PHP untuk Auto Convert URL menjadi Clickable Hyperlink

Fungsi yang sangat berguna untuk membuat url pada sebuah text menjadi link yang bisa di-click.

Cara pakainya tinggal masukkan string yang ada url nya kedalam fungsi make_clickable($string). Nanti semua kata yang mengandung format link seperti www dan http akan diubah menjadi clickable.

Fungsi berikut berasal dari wordpress yang saya cuplik dari sumber di sini

function _make_url_clickable_cb($matches) {
	$ret = '';
	$url = $matches[2];
 
	if ( empty($url) )
		return $matches[0];
	// removed trailing [.,;:] from URL
	if ( in_array(substr($url, -1), array('.', ',', ';', ':')) === true ) {
		$ret = substr($url, -1);
		$url = substr($url, 0, strlen($url)-1);
	}
	return $matches[1] . "<a href=\"$url\" rel=\"nofollow\">$url</a>" . $ret;
}
 
function _make_web_ftp_clickable_cb($matches) {
	$ret = '';
	$dest = $matches[2];
	$dest = 'http://' . $dest;
 
	if ( empty($dest) )
		return $matches[0];
	// removed trailing [,;:] from URL
	if ( in_array(substr($dest, -1), array('.', ',', ';', ':')) === true ) {
		$ret = substr($dest, -1);
		$dest = substr($dest, 0, strlen($dest)-1);
	}
	return $matches[1] . "<a href=\"$dest\" rel=\"nofollow\">$dest</a>" . $ret;
}
 
function _make_email_clickable_cb($matches) {
	$email = $matches[2] . '@' . $matches[3];
	return $matches[1] . "<a href=\"mailto:$email\">$email</a>";
}
 
function make_clickable($ret) {
	$ret = ' ' . $ret;
	// in testing, using arrays here was found to be faster
	$ret = preg_replace_callback('#([\s>])([\w]+?://[\w\\x80-\\xff\#$%&~/.\-;:=,?@\[\]+]*)#is', '_make_url_clickable_cb', $ret);
	$ret = preg_replace_callback('#([\s>])((www|ftp)\.[\w\\x80-\\xff\#$%&~/.\-;:=,?@\[\]+]*)#is', '_make_web_ftp_clickable_cb', $ret);
	$ret = preg_replace_callback('#([\s>])([.0-9a-z_+-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,})#i', '_make_email_clickable_cb', $ret);
 
	// this one is not in an array because we need it to run last, for cleanup of accidental links within links
	$ret = preg_replace("#(<a( [^>]+?>|>))<a [^>]+?>([^>]+?)</a></a>#i", "$1$3</a>", $ret);
	$ret = trim($ret);
	return $ret;
}

 

Install Web Server di Ubuntu 12.04 LTS

Ubuntu
Ubuntu

Saya tuliskan beberapa catatan saat instalasi web server menggunakan Ubuntu 12.04. Saya tuliskan disini biar nanti kalau butuh gak nyari-nyari lagi.

Saya menggunakan versi desktop karena kebetulan server ini juga rencananya akan saya pakai untuk kegiatan komputasi sehari-hari dan kebutuhan server untuk web ini hanya untuk sementara semasa pengembangan saja.

  1. Installasi Ubuntu Desktop 12.04 LTS
    Installasi ubuntu seperti biasanya, dalam kasus ini, saya menggunakan USB FDD. Pada awalnya ada sedikit masalah karena tidak BIOS tidak mau booting dari USB FDD padahal first boot sudah diatur ke USB FDD. Tapi akhirnya bisa booting setelah Hard Disk priority-nya diubah ke USB-FDD. Agar bisa dipilih dalam prioritas Hard Disk di BIOS, USB berarti harus sudah diposisinya sebelum masuk ke BIOS.
  2. Ubah repository Ubuntu 12.04 ke lokal
    Dalam hal ini, karena saya ingin berhemat dengan bandwidth international yang ada, maka saya ubah repository default ke repository dalam negeri, yaitu repository Kambing UI dan FTP ITB. Selain menghemat bandwidth internasional juga lebih cepat dalam aksesnya.

    sudo gedit /etc/apt/sources.list

    ganti dengan berikut

    ## ITB
    deb ftp://ftp.itb.ac.id/pub/ubuntu/ precise-proposed main restricted universe multiverse
    deb ftp://ftp.itb.ac.id/pub/ubuntu/ precise-security main restricted universe multiverse
    deb ftp://ftp.itb.ac.id/pub/ubuntu/ precise-updates main restricted universe multiverse
    deb ftp://ftp.itb.ac.id/pub/ubuntu/ precise main restricted universe multiverse
    
    # Kambing
    deb http://kambing.ui.ac.id/ubuntu/ precise-proposed main restricted universe multiverse
    deb http://kambing.ui.ac.id/ubuntu/ precise-security main restricted universe multiverse
    deb http://kambing.ui.ac.id/ubuntu/ precise-updates main restricted universe multiverse
    deb http://kambing.ui.ac.id/ubuntu/ precise main restricted universe multiverse

    Simpan kemudian

    sudo apt-get update

    biar ubuntunya tau kemana harus nyari aplikasi.

  3. Installasi LAMP (Linux-Apache-MySQL-PHP) Server
    Untuk bagian yang paling penting dalam web server ini saya pakai tasksel, suatau tools untuk menginstall satu paket lamp, biar gampang.

    sudo apt-get install tasksel

    setelah selesai

    sudo tasksel

    karena saya mengalami sedikit masalah dengan installasi menggunakan GUI tasksel, akhirnya saya pakai command

    sudo apt-get install lamp-server
  4. Install phpmyadmin
    Sebenarnya bisa tanpa phpmyadmin tetapi butuh waktu untuk menyesuaikan diri pakai text command, jadi pakai phpmyadmin saja.

    sudo apt-get install phpmyadmin

    Setelah installasi selesai, tinggal tambahkan phpmyadmin kedalam konfiguarsi apache.

    sudo gedit /etc/apache2/apache2.conf

    Memasukkan phpmyadmin agar phpmyadmin bisa diakses dari browser.

    Include /etc/phpmyadmin/apache.conf

    Restart apache:

    sudo service apache2 restart
  5. Install ProFTPD
    Install

    sudo apt-get install proftpd

    Sedikit konfigurasi

    sudo nano /etc/proftpd/proftpd.conf

    Menentukan direktori pengguna agar di berada di direktori home masing-masing.

    # Use this to jail all users in their homes
     DefaultRoot                    ~

    Restart:

    sudo service proftpd restart
  6. Selesai

Informasi ini berupa garis besarnya saja yang saya rangkum dari berbagai sumber di internet. Terimakasih bagi semua yang telah berbagi ilmu pengetahuan. Semoga dengan niat yang ikhlas Lillahi Ta’ala bisa mendatangkan pahala untuk ilmu yang bermanfaat..aamiin…