public static function searchCrossRefDOI($doi) { $doi = preg_replace('!\\s+!', ' ', $doi); $url = "http://api.crossref.org/works/" . $doi; $apiRequest = Yii::app()->curl->run($url); if ($apiRequest->hasErrors()) { throw new CHttpException(500, 'Gagal menghubungi server CrossRef'); } else { $apiResponse = CJSON::decode($apiRequest->getData()); if ($apiResponse === null) { throw new CHttpException(404, "Tidak ditemukan hasil dari CrossRef"); } $refType = $apiResponse['message']['type']; $ref = new Reference(); switch ($refType) { case 'journal-article': return $ref->createJournal($apiResponse['message']); case 'proceedings-article': return $ref->createProceeding($apiResponse['message']); case 'book-chapter': return $ref->createBookChapter($apiResponse['message']); case 'reference-entry': return $ref->createBookChapter($apiResponse['message']); default: throw new CHttpException(404, "Tidak ditemukan hasil dari CrossRef"); } } }