Traffy API Wrapper ด้วย Drupal7

Posted by on February 18, 2011 in Drupal, PHP | 0 comments

Traffy API Wrapper ด้วย  Drupal7

##อ่านก่อนจ้า

รายละเอียดกดอ่านได้จากรูปเลยครับ แต่ถ้าพวกลิ้งก์กดใน blog ข้างล่างรูปได้เลย

README.md at master from NAzT TraffyAPI_Drupal - GitHub

##ลองใช้งาน (อ่านจากลิ้งก์ข้างบนก่อนนะครับ)

* [http://www.together.in.th////getcctv](http://www.together.in.th////getcctv)
* [http://www.together.in.th////getcctvimg?id=255](http://www.together.in.th////getcctvimg?id=255)
* [http://www.together.in.th////getcctv/json](http://www.together.in.th////getcctv/json)
* [http://www.together.in.th////getcctvimg/JPEG/?id=255](http://www.together.in.th////getcctvimg/JPEG/?id=255)
* [http://www.together.in.th////getcctvimg/?id=255&header=jpeg](http://www.together.in.th////getcctvimg/?id=25&header=jpeg)
* [http://www.together.in.th////getlinkallinfo?format=csv](http://www.together.in.th////getlinkallinfo?format=csv)
* [http://www.together.in.th////getvms?format=json&header=json](http://www.together.in.th////getvms?format=json&header=json)
* [http://www.together.in.th////getvmsimg/png/?id=3](http://www.together.in.th/drupal/traffy//getvmsimg/png/?id=3)
* [http://www.together.in.th/drupal/traffy//getvmsimg/?id=3&header=png](http://www.together.in.th/drupal/traffy//getvmsimg/?id=3&header=png)

ส่วนข้างล่างเป็น Text Content ครับ
อยากดูสวยๆ กดตรงภาพข้างบนหรือลิ้งก์ข้างล่างได้เลยครับ

[https://github.com/NAzT/TraffyAPI_Drupal/blob/master/README.md](https://github.com/NAzT/TraffyAPI_Drupal/blob/master/README.md)

* * *

## อ่านข้างบนก่อนสิจ๊ะ

ดองมาจะครบเดือนอยู่แล้ว ต้องอัพเดตเสียหน่อย
##เกริ่น
blog ตอนที่แล้ว [ดูภาพจากกล้อง CCTV ทั่วกรุงเทพ ด้วย TraffyAPI (และ )](http://www.together.in.th/view-cctv-camera-using-traffy--and-/) ได้ทำ module เพื่อทดสอบ Traffy

ผมอาจจะติดกับพวก Public Facebook หรือ Twitter มากเกินไปที่ไม่ต้องใช้ http referrer จนมีปัญหากับ Traffy

## ปัญหาที่พบ (กับตัวเอง)

มีวันนึงผมจะเขียน google chrome extension แต่ว่าเจอปัญหา Request ไปขอข้อมูลอะไรไม่ได้เลย เพราะมึนเรื่อง http referrer เนี่ยแหละ

## ปัญหาที่ทำให้หมดแรงในการพัฒนา เพราะ มึนส์
> 1. หลักการตั้งชื่อไม่เหมือนกัน มีหลายแบบมากดังข้างล่าง
> * getLinkALLInfo
> * getCCTVimg
> * getCCTV
> 2. ในหัวเอกสารไม่ตรงกับที่ต้องเรียกจริงๆ
> * เอกสาร: getTrafficCongestion แต่จริงๆแล้วต้องเรียก getCL
> [ดูหัวเอกสารที่ info.traffy](http://info.traffy.in.th/gettrafficcongestion/)
> * เอกสาร: getCCTVimg แต่จริงๆ ต้องเรียก getcctvimg
> [ดูหัวเอกสารที่ info.traffy](http://info.traffy.in.th/getcctvimg/)
> 3. case sensitive ที่ชื่อ และ format ถ้าไม่ใช่ XML/JSON/TABLE มันเจ๊งงง
> 4. output จาก มีไม่เหมือนกันเลย เช่นบางอัน มี JSON บางอันไม่มี เป็นต้น

## สิ่งที่ทำ

แต่ไม่รู้ว่าจะเรียกว่า หรือ Proxy ดี แต่ชอบคำว่า มากกว่า มันดูเท่ดี (ว่าไปนั่น)

## หน้าที่ของสิ่งที่ทำ

module มีหน้าที่แค่ รับ request จากทางบ้าน แล้ว request ต่อไปที่ Server Traffy

อ้าว!! แล้วมันแตกต่างกับการเรียกใช้ Traffy ของ Nectec ยังไงล่ะ?

## ความแตกต่างระหว่าง Traffy กับ
1. สามารถใช้ได้เลย ไม่ต้องใช้ apikey และ appid (เฉพาะ ที่ผมคิดว่า ไม่จำเป็นต้อง authenticate)
2. (อาจจะ) ไม่ต้องปวดหัวกับ ปัญหา referrer
3. map ให้ตรงกับหัวเอกสาร (เช่น ‘getTrafficCongestion’ => ‘getCL’, ‘getCCTVimg’ => ‘getcctvimg’) แก้ไขปัญหาหัวเอกสารไม่ตรงกับ
4. ปรับให้ใช้เรียก โดยไม่สนใจอักขระตัวเล็กตัวใหญ่ (case insensitive) ทำให้สามารถเรียก getcctv, getcctvimg, gettrafficcongestion ได้เลย

## สำหรับแนวทางการพัฒนาต่อไป
– ผมมีแผนที่จะแคชข้อมูลบางตัวให้ เพื่อแก้ไขปัญหาความช้าของ Server ที่ส่งผลลัพธ์
– ลืมแล้วว่าคิดอะไรไว้ !!

## วิธีการใช้งาน
1. เลือก ที่ต้องการใช้งานจาก [Traffy Info](http://info.traffy.in.th//) แต่แนะนำให้ดู จากเมนูด้านบน ข้างๆเมนู “หน้าแรก” หรือ ตาม ข้างล่าง

## สิ่งที่ผมไม่ได้ทำ

1. ผมไม่ได้ handle เวลาที่ error

2. request ไปที่ path http://www.together.in.th/drupal/traffy//(-to-call) ตัวอย่างเช่น

> – [http://www.together.in.th/drupal/traffy//getcctv](http://www.together.in.th/drupal/traffy//getcctv)
> – [http://www.together.in.th/drupal/traffy//getcctvimg?id=255](http://www.together.in.th/drupal/traffy//getcctvimg?id=255)
หรือ request แบบพิเศษได้ประมาณนี้ http://www.together.in.th/drupal/traffy//getcctv/[HEADER]
>
– [http://www.together.in.th/drupal/traffy//getcctv/json](http://www.together.in.th/drupal/traffy//getcctv/JSON)
> – [http://www.together.in.th/drupal/traffy/wrapper/getcctvimg/jpeg/?id=255](http://www.together.in.th/drupal/traffy/wrapper/getcctvimg/jpeg/?id=255)
หรือ reques แบบส่ง [HEADER] ไปทาง query string ($_GET[‘header’]) ก็ได้ อย่างเช่น
> – [http://www.together.in.th/drupal/traffy/wrapper/getcctvimg/?id=255&header=jpeg](http://www.together.in.th/drupal/traffy/wrapper/getcctvimg/?id=25&header=jpeg)

รายชื่อ header ที่ทั้งหมดที่ใช้ได้

## ที่มีปัญหา
//bad
gettrafficcongestion มีปัญหาเพราะ parameter $_GET[‘q’] มันซ้ำกัน
getlinkallinfo ต้องระบุ format = csv/table

## สิ่งที่ผมไม่ได้ทำ
* ไม่ handle เหตุการณ์เมื่อมี error
* ไม่ได้ทำ cache

## ลองใช้งาน
* [http://www.together.in.th/drupal/traffy/wrapper/getcctv](http://www.together.in.th/drupal/traffy/wrapper/getcctv)
* [http://www.together.in.th/drupal/traffy/wrapper/getcctvimg?id=255](http://www.together.in.th/drupal/traffy/wrapper/getcctvimg?id=255)
* [http://www.together.in.th/drupal/traffy/wrapper/getcctv/json](http://www.together.in.th/drupal/traffy/wrapper/getcctv/json)
* [http://www.together.in.th/drupal/traffy/wrapper/getcctvimg/JPEG/?id=255](http://www.together.in.th/drupal/traffy/wrapper/getcctvimg/JPEG/?id=255)
* [http://www.together.in.th/drupal/traffy/wrapper/getcctvimg/?id=255&header=jpeg](http://www.together.in.th/drupal/traffy/wrapper/getcctvimg/?id=25&header=jpeg)
* [http://www.together.in.th/drupal/traffy/wrapper/getlinkallinfo?format=csv](http://www.together.in.th/drupal/traffy/wrapper/getlinkallinfo?format=csv)
* [http://www.together.in.th/drupal/traffy/wrapper/getvms?format=json&header=json](http://www.together.in.th/drupal/traffy/wrapper/getvms?format=json&header=json)
* [http://www.together.in.th/drupal/traffy/wrapper/getvmsimg/png/?id=3](http://www.together.in.th/drupal/traffy/wrapper/getvmsimg/png/?id=3)
* [http://www.together.in.th/drupal/traffy/wrapper/getvmsimg/?id=3&header=png](http://www.together.in.th/drupal/traffy/wrapper/getvmsimg/?id=3&header=png)

Leave a Comment

Your email address will not be published. Required fields are marked *