SlideShare a Scribd company logo
Movable Type 6 Overview
New York Perl Mongers Tech Talk / Oct 18th, 2013

Yuji Takayama
13年10月26日土曜日
AGENDA
•

About Me

•

Six Apart is ...

•

Movable Type is ...

•

Movable Type 6
•
•

New features

•

•

Data API
Loupe

Panel Discussion
•

Fumiaki Yoshimatsu

•

Akira Sawada

•

Yuji Takayama

13年10月26日土曜日
ABOUT ME

Yuji Takayama
1973, Born in Yamagata, Japan
2006, Started working at Six Apart
ytakayama@sixapart.com

@yuji

yuji

Developer for Movable Type 3.2, 3.3, 4.x, 5.x and 6.0 Acted as the Engineer Lead
for the development team starting from 5.1. As a Program Manager, focuses
mostly on development of product specifications.

Cat Lover
My social media links are listed on the left. Feel free to follow me!

swordbreaker

13年10月26日土曜日

This is my second year in a row visiting New York
City.
Do you know “Six Apart”?
Title
13年10月26日土曜日
SIX APART IS...
•

2001, Founded in San Francisco

•

2003, Open Japanese branch

•

2010, Six Apart(US) merged with Video Egg, -> Say MEDIA

•

2011, Six Apart(JP) acquired by infocom, a Japanese information
technology company

•

2013, Six Apart(US) Re-brunch

•

Famous Perl monger from Six Apart

13年10月26日土曜日
SIX APART ALUMNI CLUB

Tatsuhiko Miyagawa
13年10月26日土曜日
SIX APART ALUMNI CLUB

David Recordon
13年10月26日土曜日
SIX APART ALUMNI CLUB

Brad Fitzpatrick
13年10月26日土曜日
13年10月26日土曜日
Do you know “Movable Type”?
13年10月26日土曜日
movable type
13年10月26日土曜日
12th Anniversary
13年10月26日土曜日
MOVABLE TYPE IS...
•

2001, Released Movable Type 1.0

•

Perl based CMS/Blogging tool.

•

Primary development team is in Tokyo with help from American
and European teams
•

Movable Type is available in 6 languages

•

Supported a combination of both Static and Dynamic Publishing

•

Source code available on Github
•

Pull request Welcome!

https://github.com/movabletype/

13年10月26日土曜日
MOVABLE TYPE IS...
•

MTML (Movable Type Markup Language)

•

Available Plugin mechanism that will be able to add new features,
link with web services, and more

•

Support multiple databases
•
•

MS SQL Server, Oracle (Movable Type Advanced)

•

•

MySQL

PostgreSQL, SQLite (technical support not available)

Windows Ready
•

Windows Azure Ready

13年10月26日土曜日
MOVABLE TYPE MARKUP LANGUAGE
•

Simple template markup language

•

Syntax is similar to HTML

•

Learning cost is low

•

High compatibility with old versions

13年10月26日土曜日
MOVABLE TYPE MARKUP LANGUAGE

<MTBlogs>
<MTEntries category=”foo” limit=”10”>
<MTEntryHeader>
<ul>
</MTEntryHeader>
<li><a href=”<MTEntryPermalink>”>
<MTEntryTitle>
</a></li>
<MTEntryFooter>
<ul>
</MTEntryFooter>
</MTEntries>
</MTBlogs>
13年10月26日土曜日
MOVABLE TYPE MARKUP LANGUAGE

<MTBlogs>
<MTEntries category=”foo” limit=”10”>
<MTEntryHeader>
<ul>
</MTEntryHeader>
<li><a href=”<MTEntryPermalink>”>
<MTEntryTitle>
</a></li>
<MTEntryFooter>
<ul>
</MTEntryFooter>
</MTEntries>
</MTBlogs>
13年10月26日土曜日
WORDPRESS TEMPLATE

<ul>
<?php
$cat_id = get_cat_ID('foo');
$postslist = get_posts(
"category=$cat_id&numberposts=10");
foreach ( $postslist as $post ) {
?>
<li><a href=<?php echo get_permalink( $post->ID ); ?
>><?php echo $post->post_title; ?></a></li>
<?php
}
?>
</ul>
13年10月26日土曜日
WORDPRESS TEMPLATE

<ul>
<?php
$cat_id = get_cat_ID('foo');
$postslist = get_posts(
"category=$cat_id&numberposts=10");
foreach ( $postslist as $post ) {
?>
<li><a href=<?php echo get_permalink( $post->ID ); ?
>><?php echo $post->post_title; ?></a></li>
<?php
}
?>
</ul>
13年10月26日土曜日
WHICH ONE IS SIMPLE
FOR NON DEVELOPER?

18
13年10月26日土曜日
MOVABLE TYPE IS...
•

Data::ObjectDriver

•

Memcached

•

PSGI/Plack

•

OpenID

•

TheSchwartz

•

Perl 5.8.1+

•

CGI.pm

13年10月26日土曜日
MT::OBJECT
use MT;
use MT::Entry;

use MT;
use MT::Entry;

my $mt = MT->new;
my $e = MT::Entry->new;

my $mt = MT->new;
my @entries = MT::Entry->load({
title => { like => ‘%foo%’ },
}, {
sort_by => ‘title’,
});
foreach my $e ( @entries ) {
print $e->text;
}

$e->title(‘foo’);
$e->text(‘bar’);
$e->blog_id(1);
$e->save or die;

13年10月26日土曜日
Oct 16th, 2013 Movable Type 6 Debut
13年10月26日土曜日
WHAT’S NEW IN MOVABLE TYPE 6
•

New APIs
•
•

•

Movable Type Data API
Movable Type Chart API

Website management improvements
•

Entries can be created and posted directly on a website

•

New feature for scheduled unpublish entry

•

Google Analytics API integration
•

•

Page view stats accessible on the Dashboard

Loupe, a mobile web app
•

Monitors site stats and offers basic administrative abilities

13年10月26日土曜日
MOVABLE TYPE DATA API
•

REST/JSON API

•

MT Authentication

•

JavaScript Library

•

Pluggable

•

CGI based API

13年10月26日土曜日
MOVABLE TYPE DATA API - REST API

Entry
Comment
Trackback
User
Site(Blog, Website)
Category
Site Statistics
Asset

Create
P
P

Read
P
P
P
P
P
P
P

Update
P
P
P
P

Delete
P
P
P

P

ex) http(s)://<your-server>/<your-mt>/mt-data-api.cgi/v1/sites/2/entries
13年10月26日土曜日
https://github.com/movabletype/Documentation/wiki/Quick-reference
13年10月26日土曜日
curl -i http://localhost/cgi-bin/mt/mt-data-api.cgi/v1/sites/1
HTTP/1.1 200 OK
Date: Fri, 02 Aug 2013 13:12:10 GMT
Server: Apache/2.2.22 (Unix) DAV/2 PHP/5.3.15
X-content-type: nosniff
Cache-control: no-cache
Transfer-Encoding: chunked
Content-Type: application/json; charset=UTF-8
{"name":"First Website","archiveUrl":"http://localhost/blogs/
20130731-1/","url":"http://localhost/blogs/
20130731-1/","id":"1","class":"website","description":null}

13年10月26日土曜日
curl -i http://localhost/cgi-bin/mt/mt-data-api.cgi/v1/users/me
HTTP/1.1 401 Authorization Required
Date: Fri, 02 Aug 2013 13:14:54 GMT
Server: Apache/2.2.22 (Unix) DAV/2 PHP/5.3.15
X-content-type: nosniff
Cache-control: no-cache
Transfer-Encoding: chunked
Content-Type: application/json; charset=UTF-8
{"error":{"code":401,"message":"Unauthorized"}}

13年10月26日土曜日
curl -i -d clientId=test -d username=takayama -d password=password
http://localhost/cgi-bin/mt/mt-data-api.cgi/v1/authentication
HTTP/1.1 200 OK
Date: Fri, 02 Aug 2013 13:20:08 GMT
Server: Apache/2.2.22 (Unix) DAV/2 PHP/5.3.15
X-content-type: nosniff
Cache-control: no-cache
Transfer-Encoding: chunked
Content-Type: application/json; charset=UTF-8
{"accessToken":"MAQgv0HhhN82CQm88aP6r0QjtYpvRtMm8cS0av7
E","sessionId":"Z9STct7OztObi6Bd4aDMH8qcZBbPh6mlxpkh5yQo","e
xpiresIn":3600,"remember":false}
13年10月26日土曜日
curl -H "X-MT-Authorization: MTAuth
accessToken=MAQgv0HhhN82CQm88aP6r0QjtYpvRtMm8cS0av7E"
-i http://localhost/cgi-bin/mt/mt-data-api.cgi/v1/users/me
HTTP/1.1 200 OK
Date: Fri, 02 Aug 2013 13:31:13 GMT
Server: Apache/2.2.22 (Unix) DAV/2 PHP/5.3.15
X-content-type: nosniff
Cache-control: no-cache
Transfer-Encoding: chunked
Content-Type: application/json; charset=UTF-8
{"email":"ytakayama@sixapart.com","userpicUrl":null,"language":"ja","url":null,"
name":"takayama","updatable":true,"id":"1","displayName":"Yuji Takayama"}
13年10月26日土曜日
curl -i http://localhost/cgi-bin/mt/mt-data-api.cgi/v1/users/1
HTTP/1.1 200 OK
Date: Fri, 02 Aug 2013 13:34:34 GMT
Server: Apache/2.2.22 (Unix) DAV/2 PHP/5.3.15
X-content-type: nosniff
Cache-control: no-cache
Transfer-Encoding: chunked
Content-Type: application/json; charset=UTF-8
{"email":"ytakayama@sixapart.com","userpicUrl":null,"language":"ja","url":
null,"updatable":false,"displayName":"Yuji Takayama"}

13年10月26日土曜日
MOVABLE TYPE DATA API - JAVASCRIPT LIBRARY
•

JavaScript library for Data API is available

•

MIT license

13年10月26日土曜日
var	
  api	
  =	
  new	
  MT.DataAPI({
	
  	
  baseUrl:	
  	
  "https://your-­‐host/mt/mt-­‐data-­‐api.cgi",
	
  	
  clientId:	
  "your-­‐client-­‐id"
});
api.listEntries(siteId,	
  function(response)	
  {
	
  	
  if	
  (response.error)	
  {
	
  	
  	
  	
  //	
  Handle	
  error
	
  	
  	
  	
  return;
	
  	
  }
	
  	
  for	
  (var	
  i	
  =	
  0;	
  i	
  <	
  response.items.length;	
  i++)	
  {
	
  	
  	
  	
  	
  	
  var	
  entry	
  =	
  response.items[i];
	
  	
  	
  	
  	
  	
  //	
  Render	
  an	
  entry
	
  	
  }
});

13年10月26日土曜日
var	
  api	
  =	
  new	
  MT.DataAPI({
	
  	
  baseUrl:	
  	
  "https://your-­‐host/mt/mt-­‐data-­‐api.cgi",
	
  	
  clientId:	
  "your-­‐client-­‐id"
});
api.getToken(function(response)	
  {
	
  	
  if	
  (response.error)	
  {
	
  	
  	
  	
  if	
  (response.error.code	
  ===	
  401)	
  {
	
  	
  	
  	
  	
  	
  //	
  You	
  have	
  not	
  been	
  authenticated	
  yet.
	
  	
  	
  	
  	
  	
  location.href	
  =	
  api.getAuthorizationUrl(location.href);
	
  	
  	
  	
  }	
  else	
  {	
  /*	
  Handle	
  error	
  */	
  }
	
  	
  }	
  else	
  {
	
  	
  	
  	
  //	
  You	
  have	
  been	
  authenticated.
	
  	
  	
  	
  api.listEntries(siteId,	
  {status:	
  'Draft'},	
  function(response)	
  {
	
  	
  	
  	
  	
  	
  if	
  (response.error)	
  {	
  /*	
  Handle	
  error	
  */	
  return;	
  }	
  	
  
	
  	
  	
  	
  	
  	
  //	
  Fetched	
  a	
  list	
  of	
  drafts.
	
  	
  	
  	
  	
  	
  for	
  (var	
  i	
  =	
  0;	
  i	
  <	
  response.items.length;	
  i++)	
  {
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  var	
  entry	
  =	
  response.items[i];
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  //	
  Render	
  an	
  entry
	
  	
  	
  	
  	
  	
  }
	
  	
  	
  	
  });
	
  	
  }
});
13年10月26日土曜日
var	
  api	
  =	
  new	
  MT.DataAPI({
	
  	
  baseUrl:	
  	
  "https://your-­‐host/mt/mt-­‐data-­‐api.cgi",
	
  	
  clientId:	
  "your-­‐client-­‐id"
});
var	
  params	
  =	
  {
	
  	
  search:	
  "foo",
	
  	
  searchFields:	
  "title,body",
	
  	
  fields:	
  "assets,author,title,permalink,body,categories"
};
api.listEntries(siteId,	
  params,	
  function(response)	
  {
	
  	
  if	
  (response.error)	
  {
	
  	
  	
  	
  //	
  Handle	
  error
	
  	
  	
  	
  return;
	
  	
  }
	
  	
  for	
  (var	
  i	
  =	
  0;	
  i	
  <	
  response.items.length;	
  i++)	
  {
	
  	
  	
  	
  	
  	
  var	
  entry	
  =	
  response.items[i];
	
  	
  	
  	
  	
  	
  //	
  Render	
  an	
  entry
	
  	
  }
});
13年10月26日土曜日
https://github.com/movabletype/mt-data-api-sdk-js
13年10月26日土曜日
MOVABLE TYPE DATA API - PLUGGABLE
•

REST API endpoints can be added via plugin

•

Output formats can be added via plugin (Default is JSON format)

•

Create your own custom object with endpoints via plugin

13年10月26日土曜日
YAML
applications:
data_api:
endpoints:
- id: list_foobar
route: /sites/:site_id/foobars
verb: GET
version: 1
handler: $Core::MT::API::Endpoint::FooBar::list
requires_login: 0
default_params:
limit: 10
offset: 0
sort_by: authored_on
sort_order: descend
search_fields: title,text,text_more,keywords
error_codes:
403:blah blah blah

13年10月26日土曜日
LOUPE - MOBILE WEB APPLICATION
•

A reference app created with JavaScript + Movable Type Data API
+ Chart API

•

Available for iPhone and Android

•

MIT License

https://github.com/movabletype/mt-plugin-Loupe
13年10月26日土曜日
LOUPE - FEATURES
•

Monitor your Movable Type site stats
•
•

•

Today's page views
Page views from over the past 10 days

Comment management
•

Leave responses

•

Delete spam comments

•

Upload image files

•

Manage entries

13年10月26日土曜日
ANY QUESTIONS?

13年10月26日土曜日
THANK YOU FOR LISTING
13年10月26日土曜日

More Related Content

PDF
Elasticsearch入門 pyfes 201207
PDF
ElasticsearchとTasteプラグインで作るレコメンドシステム
PDF
Movable Type 6 overview spec3
KEY
Movable Type 5.2 Overview at MTDDC 2012
PDF
MDEM Book
PDF
Data API + AWS = (CMS どうでしょう 札幌編)
PDF
Data api workshop at Co-Edo
PDF
初めての Data api cms どうでしょう - 大阪夏の陣
Elasticsearch入門 pyfes 201207
ElasticsearchとTasteプラグインで作るレコメンドシステム
Movable Type 6 overview spec3
Movable Type 5.2 Overview at MTDDC 2012
MDEM Book
Data API + AWS = (CMS どうでしょう 札幌編)
Data api workshop at Co-Edo
初めての Data api cms どうでしょう - 大阪夏の陣

Similar to Movable Type 6 Overview - New York Perl Mongers Tech Talk (20)

PDF
Movable Type 6 Overview SPEC2
PDF
Mtddc2013: Movable Type 6 Overview
PDF
意図を表現するプログラミング
PDF
Nodejsによるapiサーバ構築事例
PDF
初めての Data API CMS どうでしょう - 仙台編 -
PDF
Sqale の Puppet と Chef (と テスト)
PDF
Data apiで実現 進化するwebの世界
PDF
初めての Data api
PDF
Complex Event Processing on Ruby, Fluentd and Norikra #rubykaigi
PDF
早稲田大学授業 - モバイルプログラミング
PDF
Mtddc kyusyu-lightningtalks
PDF
Google Dev Fest 2010 Japan LT: OpenSocial JavaScript API is good, Lightweight...
PDF
SparqlEPCUが提供するlod開発プラットフォーム
PPTX
Reladomo in Scala #scala_ks
PPTX
かんたん Twitter アプリをつくろう
PPTX
Develop Web Application with Node.js + Express
PDF
Google Apps Scirpt勉強会 #1
PDF
OpenStack on Softlayer
PDF
長いの
PDF
20101106 ramaze発表
Movable Type 6 Overview SPEC2
Mtddc2013: Movable Type 6 Overview
意図を表現するプログラミング
Nodejsによるapiサーバ構築事例
初めての Data API CMS どうでしょう - 仙台編 -
Sqale の Puppet と Chef (と テスト)
Data apiで実現 進化するwebの世界
初めての Data api
Complex Event Processing on Ruby, Fluentd and Norikra #rubykaigi
早稲田大学授業 - モバイルプログラミング
Mtddc kyusyu-lightningtalks
Google Dev Fest 2010 Japan LT: OpenSocial JavaScript API is good, Lightweight...
SparqlEPCUが提供するlod開発プラットフォーム
Reladomo in Scala #scala_ks
かんたん Twitter アプリをつくろう
Develop Web Application with Node.js + Express
Google Apps Scirpt勉強会 #1
OpenStack on Softlayer
長いの
20101106 ramaze発表
Ad

More from Yuji Takayama (13)

PDF
Movable Type 7 のすべて
PPTX
詳説 Movable type 7
PDF
Data API ことはじめ
PDF
概説 Data API v3
PDF
詳説 Data api mtddc 拡張版 v3対応
PDF
Movable Type for AWS Hands-on
PDF
Data API 2.0
PDF
Movable Type for AWS - JAWS-UG 沖縄 CMS祭り!
PDF
MT東京03 - Movable Type for AWS
PDF
Mtとクラウドと私
KEY
Phpで作るmovable typeプラグイン
PDF
ダイナミック:Plugin
PDF
20070824 MT-DEVCON
Movable Type 7 のすべて
詳説 Movable type 7
Data API ことはじめ
概説 Data API v3
詳説 Data api mtddc 拡張版 v3対応
Movable Type for AWS Hands-on
Data API 2.0
Movable Type for AWS - JAWS-UG 沖縄 CMS祭り!
MT東京03 - Movable Type for AWS
Mtとクラウドと私
Phpで作るmovable typeプラグイン
ダイナミック:Plugin
20070824 MT-DEVCON
Ad

Movable Type 6 Overview - New York Perl Mongers Tech Talk

  • 1. Movable Type 6 Overview New York Perl Mongers Tech Talk / Oct 18th, 2013 Yuji Takayama 13年10月26日土曜日
  • 2. AGENDA • About Me • Six Apart is ... • Movable Type is ... • Movable Type 6 • • New features • • Data API Loupe Panel Discussion • Fumiaki Yoshimatsu • Akira Sawada • Yuji Takayama 13年10月26日土曜日
  • 3. ABOUT ME Yuji Takayama 1973, Born in Yamagata, Japan 2006, Started working at Six Apart ytakayama@sixapart.com @yuji yuji Developer for Movable Type 3.2, 3.3, 4.x, 5.x and 6.0 Acted as the Engineer Lead for the development team starting from 5.1. As a Program Manager, focuses mostly on development of product specifications. Cat Lover My social media links are listed on the left. Feel free to follow me! swordbreaker 13年10月26日土曜日 This is my second year in a row visiting New York City.
  • 4. Do you know “Six Apart”? Title 13年10月26日土曜日
  • 5. SIX APART IS... • 2001, Founded in San Francisco • 2003, Open Japanese branch • 2010, Six Apart(US) merged with Video Egg, -> Say MEDIA • 2011, Six Apart(JP) acquired by infocom, a Japanese information technology company • 2013, Six Apart(US) Re-brunch • Famous Perl monger from Six Apart 13年10月26日土曜日
  • 6. SIX APART ALUMNI CLUB Tatsuhiko Miyagawa 13年10月26日土曜日
  • 7. SIX APART ALUMNI CLUB David Recordon 13年10月26日土曜日
  • 8. SIX APART ALUMNI CLUB Brad Fitzpatrick 13年10月26日土曜日
  • 10. Do you know “Movable Type”? 13年10月26日土曜日
  • 13. MOVABLE TYPE IS... • 2001, Released Movable Type 1.0 • Perl based CMS/Blogging tool. • Primary development team is in Tokyo with help from American and European teams • Movable Type is available in 6 languages • Supported a combination of both Static and Dynamic Publishing • Source code available on Github • Pull request Welcome! https://github.com/movabletype/ 13年10月26日土曜日
  • 14. MOVABLE TYPE IS... • MTML (Movable Type Markup Language) • Available Plugin mechanism that will be able to add new features, link with web services, and more • Support multiple databases • • MS SQL Server, Oracle (Movable Type Advanced) • • MySQL PostgreSQL, SQLite (technical support not available) Windows Ready • Windows Azure Ready 13年10月26日土曜日
  • 15. MOVABLE TYPE MARKUP LANGUAGE • Simple template markup language • Syntax is similar to HTML • Learning cost is low • High compatibility with old versions 13年10月26日土曜日
  • 16. MOVABLE TYPE MARKUP LANGUAGE <MTBlogs> <MTEntries category=”foo” limit=”10”> <MTEntryHeader> <ul> </MTEntryHeader> <li><a href=”<MTEntryPermalink>”> <MTEntryTitle> </a></li> <MTEntryFooter> <ul> </MTEntryFooter> </MTEntries> </MTBlogs> 13年10月26日土曜日
  • 17. MOVABLE TYPE MARKUP LANGUAGE <MTBlogs> <MTEntries category=”foo” limit=”10”> <MTEntryHeader> <ul> </MTEntryHeader> <li><a href=”<MTEntryPermalink>”> <MTEntryTitle> </a></li> <MTEntryFooter> <ul> </MTEntryFooter> </MTEntries> </MTBlogs> 13年10月26日土曜日
  • 18. WORDPRESS TEMPLATE <ul> <?php $cat_id = get_cat_ID('foo'); $postslist = get_posts( "category=$cat_id&numberposts=10"); foreach ( $postslist as $post ) { ?> <li><a href=<?php echo get_permalink( $post->ID ); ? >><?php echo $post->post_title; ?></a></li> <?php } ?> </ul> 13年10月26日土曜日
  • 19. WORDPRESS TEMPLATE <ul> <?php $cat_id = get_cat_ID('foo'); $postslist = get_posts( "category=$cat_id&numberposts=10"); foreach ( $postslist as $post ) { ?> <li><a href=<?php echo get_permalink( $post->ID ); ? >><?php echo $post->post_title; ?></a></li> <?php } ?> </ul> 13年10月26日土曜日
  • 20. WHICH ONE IS SIMPLE FOR NON DEVELOPER? 18 13年10月26日土曜日
  • 22. MT::OBJECT use MT; use MT::Entry; use MT; use MT::Entry; my $mt = MT->new; my $e = MT::Entry->new; my $mt = MT->new; my @entries = MT::Entry->load({ title => { like => ‘%foo%’ }, }, { sort_by => ‘title’, }); foreach my $e ( @entries ) { print $e->text; } $e->title(‘foo’); $e->text(‘bar’); $e->blog_id(1); $e->save or die; 13年10月26日土曜日
  • 23. Oct 16th, 2013 Movable Type 6 Debut 13年10月26日土曜日
  • 24. WHAT’S NEW IN MOVABLE TYPE 6 • New APIs • • • Movable Type Data API Movable Type Chart API Website management improvements • Entries can be created and posted directly on a website • New feature for scheduled unpublish entry • Google Analytics API integration • • Page view stats accessible on the Dashboard Loupe, a mobile web app • Monitors site stats and offers basic administrative abilities 13年10月26日土曜日
  • 25. MOVABLE TYPE DATA API • REST/JSON API • MT Authentication • JavaScript Library • Pluggable • CGI based API 13年10月26日土曜日
  • 26. MOVABLE TYPE DATA API - REST API Entry Comment Trackback User Site(Blog, Website) Category Site Statistics Asset Create P P Read P P P P P P P Update P P P P Delete P P P P ex) http(s)://<your-server>/<your-mt>/mt-data-api.cgi/v1/sites/2/entries 13年10月26日土曜日
  • 28. curl -i http://localhost/cgi-bin/mt/mt-data-api.cgi/v1/sites/1 HTTP/1.1 200 OK Date: Fri, 02 Aug 2013 13:12:10 GMT Server: Apache/2.2.22 (Unix) DAV/2 PHP/5.3.15 X-content-type: nosniff Cache-control: no-cache Transfer-Encoding: chunked Content-Type: application/json; charset=UTF-8 {"name":"First Website","archiveUrl":"http://localhost/blogs/ 20130731-1/","url":"http://localhost/blogs/ 20130731-1/","id":"1","class":"website","description":null} 13年10月26日土曜日
  • 29. curl -i http://localhost/cgi-bin/mt/mt-data-api.cgi/v1/users/me HTTP/1.1 401 Authorization Required Date: Fri, 02 Aug 2013 13:14:54 GMT Server: Apache/2.2.22 (Unix) DAV/2 PHP/5.3.15 X-content-type: nosniff Cache-control: no-cache Transfer-Encoding: chunked Content-Type: application/json; charset=UTF-8 {"error":{"code":401,"message":"Unauthorized"}} 13年10月26日土曜日
  • 30. curl -i -d clientId=test -d username=takayama -d password=password http://localhost/cgi-bin/mt/mt-data-api.cgi/v1/authentication HTTP/1.1 200 OK Date: Fri, 02 Aug 2013 13:20:08 GMT Server: Apache/2.2.22 (Unix) DAV/2 PHP/5.3.15 X-content-type: nosniff Cache-control: no-cache Transfer-Encoding: chunked Content-Type: application/json; charset=UTF-8 {"accessToken":"MAQgv0HhhN82CQm88aP6r0QjtYpvRtMm8cS0av7 E","sessionId":"Z9STct7OztObi6Bd4aDMH8qcZBbPh6mlxpkh5yQo","e xpiresIn":3600,"remember":false} 13年10月26日土曜日
  • 31. curl -H "X-MT-Authorization: MTAuth accessToken=MAQgv0HhhN82CQm88aP6r0QjtYpvRtMm8cS0av7E" -i http://localhost/cgi-bin/mt/mt-data-api.cgi/v1/users/me HTTP/1.1 200 OK Date: Fri, 02 Aug 2013 13:31:13 GMT Server: Apache/2.2.22 (Unix) DAV/2 PHP/5.3.15 X-content-type: nosniff Cache-control: no-cache Transfer-Encoding: chunked Content-Type: application/json; charset=UTF-8 {"email":"ytakayama@sixapart.com","userpicUrl":null,"language":"ja","url":null," name":"takayama","updatable":true,"id":"1","displayName":"Yuji Takayama"} 13年10月26日土曜日
  • 32. curl -i http://localhost/cgi-bin/mt/mt-data-api.cgi/v1/users/1 HTTP/1.1 200 OK Date: Fri, 02 Aug 2013 13:34:34 GMT Server: Apache/2.2.22 (Unix) DAV/2 PHP/5.3.15 X-content-type: nosniff Cache-control: no-cache Transfer-Encoding: chunked Content-Type: application/json; charset=UTF-8 {"email":"ytakayama@sixapart.com","userpicUrl":null,"language":"ja","url": null,"updatable":false,"displayName":"Yuji Takayama"} 13年10月26日土曜日
  • 33. MOVABLE TYPE DATA API - JAVASCRIPT LIBRARY • JavaScript library for Data API is available • MIT license 13年10月26日土曜日
  • 34. var  api  =  new  MT.DataAPI({    baseUrl:    "https://your-­‐host/mt/mt-­‐data-­‐api.cgi",    clientId:  "your-­‐client-­‐id" }); api.listEntries(siteId,  function(response)  {    if  (response.error)  {        //  Handle  error        return;    }    for  (var  i  =  0;  i  <  response.items.length;  i++)  {            var  entry  =  response.items[i];            //  Render  an  entry    } }); 13年10月26日土曜日
  • 35. var  api  =  new  MT.DataAPI({    baseUrl:    "https://your-­‐host/mt/mt-­‐data-­‐api.cgi",    clientId:  "your-­‐client-­‐id" }); api.getToken(function(response)  {    if  (response.error)  {        if  (response.error.code  ===  401)  {            //  You  have  not  been  authenticated  yet.            location.href  =  api.getAuthorizationUrl(location.href);        }  else  {  /*  Handle  error  */  }    }  else  {        //  You  have  been  authenticated.        api.listEntries(siteId,  {status:  'Draft'},  function(response)  {            if  (response.error)  {  /*  Handle  error  */  return;  }                //  Fetched  a  list  of  drafts.            for  (var  i  =  0;  i  <  response.items.length;  i++)  {                    var  entry  =  response.items[i];                    //  Render  an  entry            }        });    } }); 13年10月26日土曜日
  • 36. var  api  =  new  MT.DataAPI({    baseUrl:    "https://your-­‐host/mt/mt-­‐data-­‐api.cgi",    clientId:  "your-­‐client-­‐id" }); var  params  =  {    search:  "foo",    searchFields:  "title,body",    fields:  "assets,author,title,permalink,body,categories" }; api.listEntries(siteId,  params,  function(response)  {    if  (response.error)  {        //  Handle  error        return;    }    for  (var  i  =  0;  i  <  response.items.length;  i++)  {            var  entry  =  response.items[i];            //  Render  an  entry    } }); 13年10月26日土曜日
  • 38. MOVABLE TYPE DATA API - PLUGGABLE • REST API endpoints can be added via plugin • Output formats can be added via plugin (Default is JSON format) • Create your own custom object with endpoints via plugin 13年10月26日土曜日
  • 39. YAML applications: data_api: endpoints: - id: list_foobar route: /sites/:site_id/foobars verb: GET version: 1 handler: $Core::MT::API::Endpoint::FooBar::list requires_login: 0 default_params: limit: 10 offset: 0 sort_by: authored_on sort_order: descend search_fields: title,text,text_more,keywords error_codes: 403:blah blah blah 13年10月26日土曜日
  • 40. LOUPE - MOBILE WEB APPLICATION • A reference app created with JavaScript + Movable Type Data API + Chart API • Available for iPhone and Android • MIT License https://github.com/movabletype/mt-plugin-Loupe 13年10月26日土曜日
  • 41. LOUPE - FEATURES • Monitor your Movable Type site stats • • • Today's page views Page views from over the past 10 days Comment management • Leave responses • Delete spam comments • Upload image files • Manage entries 13年10月26日土曜日
  • 43. THANK YOU FOR LISTING 13年10月26日土曜日