<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[TNF : Tatter Network Foundation forum - BlogAPI 0.9.2 (Blogger, MetaWeblog)]]></title>
		<link>http://forum.tattersite.com/ko/viewtopic.php?id=729</link>
		<description><![CDATA[BlogAPI 0.9.2 (Blogger, MetaWeblog) 의 최근 RSS 글들.]]></description>
		<lastBuildDate>Sat, 17 Jun 2006 11:36:58 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[RSS 답글: BlogAPI 0.9.2 (Blogger, MetaWeblog)]]></title>
			<link>http://forum.tattersite.com/ko/viewtopic.php?pid=4124#p4124</link>
			<description><![CDATA[<p>0.9.4 를 릴리즈 하였으므로 본 쓰레드는 <br /><a href="http://www.tattertools.com/ko/forum/viewtopic.php?id=785">http://www.tattertools.com/ko/forum/vie … php?id=785</a><br />요기로 연결해주세요.</p>]]></description>
			<author><![CDATA[null@example.com (coolengineer)]]></author>
			<pubDate>Sat, 17 Jun 2006 11:36:58 +0000</pubDate>
			<guid>http://forum.tattersite.com/ko/viewtopic.php?pid=4124#p4124</guid>
		</item>
		<item>
			<title><![CDATA[RSS 답글: BlogAPI 0.9.2 (Blogger, MetaWeblog)]]></title>
			<link>http://forum.tattersite.com/ko/viewtopic.php?pid=3988#p3988</link>
			<description><![CDATA[<p>1.0.5 도 됩니다. <img src="http://forum.tattersite.com/ko/img/smilies/wink.png" width="15" height="15" alt="wink" /></p>]]></description>
			<author><![CDATA[null@example.com (coolengineer)]]></author>
			<pubDate>Fri, 16 Jun 2006 01:12:54 +0000</pubDate>
			<guid>http://forum.tattersite.com/ko/viewtopic.php?pid=3988#p3988</guid>
		</item>
		<item>
			<title><![CDATA[RSS 답글: BlogAPI 0.9.2 (Blogger, MetaWeblog)]]></title>
			<link>http://forum.tattersite.com/ko/viewtopic.php?pid=3974#p3974</link>
			<description><![CDATA[<p>사용해 보고 싶은데 아직 1.0.6으로 업그래이드를 못해서.. :&#039;(</p><div class="quotebox"><blockquote><p>실험 블로그가 아닌 본 블로그에 사용해도 데이터에는 별 지장 없겠죠?</p></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (JWC)]]></author>
			<pubDate>Thu, 15 Jun 2006 18:29:23 +0000</pubDate>
			<guid>http://forum.tattersite.com/ko/viewtopic.php?pid=3974#p3974</guid>
		</item>
		<item>
			<title><![CDATA[RSS 답글: BlogAPI 0.9.2 (Blogger, MetaWeblog)]]></title>
			<link>http://forum.tattersite.com/ko/viewtopic.php?pid=3955#p3955</link>
			<description><![CDATA[<p>우오오..감동의 도가니탕입니다 <img src="http://forum.tattersite.com/ko/img/smilies/smile.png" width="15" height="15" alt="smile" /><br />저도 실험해봐야겠네용 <img src="http://forum.tattersite.com/ko/img/smilies/smile.png" width="15" height="15" alt="smile" /></p>]]></description>
			<author><![CDATA[null@example.com (chester)]]></author>
			<pubDate>Thu, 15 Jun 2006 14:01:59 +0000</pubDate>
			<guid>http://forum.tattersite.com/ko/viewtopic.php?pid=3955#p3955</guid>
		</item>
		<item>
			<title><![CDATA[RSS 답글: BlogAPI 0.9.2 (Blogger, MetaWeblog)]]></title>
			<link>http://forum.tattersite.com/ko/viewtopic.php?pid=3938#p3938</link>
			<description><![CDATA[<p>앗.. 그랬군요.<br />tatterversion.inc 파일이 생성되고 나면 문제가 발생하지 않는게 그 이유였네요.</p>]]></description>
			<author><![CDATA[null@example.com (졸곰)]]></author>
			<pubDate>Thu, 15 Jun 2006 05:03:16 +0000</pubDate>
			<guid>http://forum.tattersite.com/ko/viewtopic.php?pid=3938#p3938</guid>
		</item>
		<item>
			<title><![CDATA[RSS 답글: BlogAPI 0.9.2 (Blogger, MetaWeblog)]]></title>
			<link>http://forum.tattersite.com/ko/viewtopic.php?pid=3927#p3927</link>
			<description><![CDATA[<p>0.9.3까지는 <strong>plugins</strong>/BlogAPI 를 직접 접근하여 xmlrpc를 받고,<br />디렉토리 퍼미션이 필요했던 이유가 아마 blog/index.php 에서 태터 버전을 읽어서 캐싱(?)하는 파일을 하나 만들어 놓는 것 때문에<br />생긴 문제 같습니다. 약간 신중하지 못했군요. <img src="http://forum.tattersite.com/ko/img/smilies/yikes.png" width="15" height="15" alt="yikes" /></p><p><strong>plugin</strong>/BlogAPI 와 같이 event handler를 통해 접근하는 내공(!)을 익혔으니 0.9.4 에서는 접근 방법이 바뀔 것이고,<br />디렉토리 권한도 필요하지 않게 될 것 입니다. 다만, 0.9.3까지의 방법인 plugins/BlogAPI 방법을 유지하지 않을 생각이므로 각자의<br />블로그 툴의 xml url 을 수정하셔야 될 것 같습니다.</p>]]></description>
			<author><![CDATA[null@example.com (coolengineer)]]></author>
			<pubDate>Thu, 15 Jun 2006 01:21:52 +0000</pubDate>
			<guid>http://forum.tattersite.com/ko/viewtopic.php?pid=3927#p3927</guid>
		</item>
		<item>
			<title><![CDATA[RSS 답글: BlogAPI 0.9.2 (Blogger, MetaWeblog)]]></title>
			<link>http://forum.tattersite.com/ko/viewtopic.php?pid=3876#p3876</link>
			<description><![CDATA[<p>호진님께서 여기만 0.9.3을 등록하셨군요.<br />0.9.3에서 Performacing + Metaweblog 잘 동작하는 것을 확인하였습니다.<br /><a href="http://spbear.com/168">http://spbear.com/168</a><br />아직 쓰는 법이 어려워서 고전하시는 분들이 계셔서 간단하게 사용법 정리해 봤습니다.</p>]]></description>
			<author><![CDATA[null@example.com (졸곰)]]></author>
			<pubDate>Wed, 14 Jun 2006 05:03:56 +0000</pubDate>
			<guid>http://forum.tattersite.com/ko/viewtopic.php?pid=3876#p3876</guid>
		</item>
		<item>
			<title><![CDATA[RSS 답글: BlogAPI 0.9.2 (Blogger, MetaWeblog)]]></title>
			<link>http://forum.tattersite.com/ko/viewtopic.php?pid=3871#p3871</link>
			<description><![CDATA[<div class="quotebox"><cite>coolengineer 작성:</cite><blockquote><p>http://...../tt/plugin/BlogAPI/</p><p>로 접근하면 404가 나옵니다. 저도 한참 해보다가 안돼서 직접 plugins/BlogAPI 를 접근하는 방법을 쓴것이거든요..</p></blockquote></div><p>해결하셨나요?<br />제 기억이 맞다면 끝에 /를 입력하면 안됐던걸로 기억합니다.</p><p>한번 http://...../tt/plugin/BlogAPI 까지만해서 적용을 해보세요. <img src="http://forum.tattersite.com/ko/img/smilies/smile.png" width="15" height="15" alt="smile" /></p>]]></description>
			<author><![CDATA[null@example.com (Peris)]]></author>
			<pubDate>Wed, 14 Jun 2006 04:27:12 +0000</pubDate>
			<guid>http://forum.tattersite.com/ko/viewtopic.php?pid=3871#p3871</guid>
		</item>
		<item>
			<title><![CDATA[RSS 답글: BlogAPI 0.9.2 (Blogger, MetaWeblog)]]></title>
			<link>http://forum.tattersite.com/ko/viewtopic.php?pid=3868#p3868</link>
			<description><![CDATA[<p>디렉토리 퍼미션을 수정해야 되는군요 <img src="http://forum.tattersite.com/ko/img/smilies/smile.png" width="15" height="15" alt="smile" /><br />제 블로그에서 newPost는 잘 되네요</p>]]></description>
			<author><![CDATA[null@example.com (MGMong)]]></author>
			<pubDate>Wed, 14 Jun 2006 01:27:14 +0000</pubDate>
			<guid>http://forum.tattersite.com/ko/viewtopic.php?pid=3868#p3868</guid>
		</item>
		<item>
			<title><![CDATA[RSS 답글: BlogAPI 0.9.2 (Blogger, MetaWeblog)]]></title>
			<link>http://forum.tattersite.com/ko/viewtopic.php?pid=3844#p3844</link>
			<description><![CDATA[<p>0.9.3 으로 올렸습니다. 링크는 맨 위글에 수정하였습니다.</p>]]></description>
			<author><![CDATA[null@example.com (coolengineer)]]></author>
			<pubDate>Tue, 13 Jun 2006 09:37:15 +0000</pubDate>
			<guid>http://forum.tattersite.com/ko/viewtopic.php?pid=3844#p3844</guid>
		</item>
		<item>
			<title><![CDATA[RSS 답글: BlogAPI 0.9.2 (Blogger, MetaWeblog)]]></title>
			<link>http://forum.tattersite.com/ko/viewtopic.php?pid=3839#p3839</link>
			<description><![CDATA[<p>새로운 0.9.2 를 올렸습니다. 다시 받으시면 metaweblog.php 가 있습니다.<br />그리고, 위의 rc3까지 존재했었다는 MetaWeblog를 보니 metaweblog.php와 흡사한걸요.. <img src="http://forum.tattersite.com/ko/img/smilies/wink.png" width="15" height="15" alt="wink" /></p><p>그리고, index.xml에 listener에 등록하여 사용하는 방식이 잘 동작하지 않습니다.</p><div class="codebox"><pre><code>RewriteEngine On
RewriteBase /tt/
RewriteCond %{ENV:REDIRECT_SURI} !^$
RewriteRule (.*) - [L]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+[^/])$ $1/ [L]
RewriteRule ^$ blog/index.php [E=SURI:1,L]
RewriteRule ^[0-9]+$ blog/item.php [E=SURI:1,L]
RewriteRule ^favicon\.ico$ blog/favicon.ico.php [E=SURI:1,L]
RewriteRule ^index\.gif$ blog/index.gif.php [E=SURI:1,L]
RewriteCond %{QUERY_STRING} (^|&amp;)pl=([0-9]+)
RewriteRule ^index\.php$ %2 [NE,L]
RewriteRule ^index\.php$ blog/index.php [E=SURI:1,L]
RewriteRule ^index\.xml$ blog/rss/index.php [E=SURI:1,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule !^(blog|cache)/ - [L]
RewriteRule ^(entry|attachment|category|keylog|tag|search|plugin)/? blog/$1/index.php [E=SURI:1,L]
RewriteRule ^(.+)/[0-9]+$ blog/$1/item.php [E=SURI:1,L]
RewriteRule ^(.+)$ blog/$1/index.php [E=SURI:1,L]</code></pre></div><p>제 .htaccess가 이렇게 되고, index.xml에 <br /></p><div class="codebox"><pre><code>  &lt;binding&gt;
    &lt;listener event=&quot;/plugin/BlogAPI/&quot;&gt;serveMetaWeblogAPI&lt;/listener&gt;
  &lt;/binding&gt;</code></pre></div><p>를 넣었는데도</p><p>http://...../tt/plugin/BlogAPI/</p><p>로 접근하면 404가 나옵니다. 저도 한참 해보다가 안돼서 직접 plugins/BlogAPI 를 접근하는 방법을 쓴것이거든요..</p>]]></description>
			<author><![CDATA[null@example.com (coolengineer)]]></author>
			<pubDate>Tue, 13 Jun 2006 08:53:19 +0000</pubDate>
			<guid>http://forum.tattersite.com/ko/viewtopic.php?pid=3839#p3839</guid>
		</item>
		<item>
			<title><![CDATA[RSS 답글: BlogAPI 0.9.2 (Blogger, MetaWeblog)]]></title>
			<link>http://forum.tattersite.com/ko/viewtopic.php?pid=3831#p3831</link>
			<description><![CDATA[<p>또하나 도움을 드리자면, 플러그인 호출시 실제 경로인 plugins 대신 그냥 plugin/블라블라 식으로 경로 호출이 있을 경우, mod_rewrite에 의하여 blog/plugin/index.php를 부르게 되고, 이 파일에 의하여 자동으로 plugin/블라블라 이벤트가 호출되게 됩니다.</p><p>위의 소스에서의 호출 방식의 이해에 도움이 되셨으면 합니다. <img src="http://forum.tattersite.com/ko/img/smilies/smile.png" width="15" height="15" alt="smile" /></p>]]></description>
			<author><![CDATA[null@example.com (inureyes)]]></author>
			<pubDate>Tue, 13 Jun 2006 07:02:29 +0000</pubDate>
			<guid>http://forum.tattersite.com/ko/viewtopic.php?pid=3831#p3831</guid>
		</item>
		<item>
			<title><![CDATA[RSS 답글: BlogAPI 0.9.2 (Blogger, MetaWeblog)]]></title>
			<link>http://forum.tattersite.com/ko/viewtopic.php?pid=3828#p3828</link>
			<description><![CDATA[<p>MS word2007에서 잘 되지 않아서 (이건 word의 오류인듯 합니다) 플러그인 소스를 열어보니 무지하게 복잡하네요... stand-alone에 가깝군요^^ </p><p>컴포넌트로 이미 구현된 명령들에 대해서 어떻게 설명을 드릴 수 있을까 생각해 보았습니다.</p><p>그러고보니 이런 물건이 있습니다. 태터툴즈 1.0에서 함께 내놓으려고 했던 플러그인인 MetaWeblog API 1.0 입니다.<br />xml부분은 1.0.6에 맞도록 적당히 손 봐 놓았습니다.</p><p>태터툴즈 안이 어떻게 생겼는지 분석하기에는 시간이 걸립니다^^. 이 플러그인을 보시고 어떤 부분들이 가능한지 파악하시는데 도움이 되셨으면 합니다. <img src="http://forum.tattersite.com/ko/img/smilies/smile.png" width="15" height="15" alt="smile" /> 분석할 시간을 줄이실 수 있지 않을까 합니다 <img src="http://forum.tattersite.com/ko/img/smilies/smile.png" width="15" height="15" alt="smile" /></p><p>참고로, 아래의 플러그인은 현재 동작을 보장하지 못합니다. ㅎㅎ rc3였나? 까지만 존재했던 플러그인이죠.</p><br /><p>index.xml<br /></p><div class="codebox"><pre><code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;plugin&gt;
  &lt;title&gt;MetaWeblog API&lt;/title&gt;
  &lt;title xml:lang=&quot;ko&quot;&gt;MetaWeblog API&lt;/title&gt;
  &lt;link&gt;http://www.tattertools.com/plugins&lt;/link&gt;
  &lt;version&gt;1.0 test&lt;/version&gt;
  &lt;description xml:lang=&quot;ko&quot;&gt;MetaWeblog API의 태터툴즈 구현입니다. newPost/editPost/getPost/getRecentPosts를 지원하고 있습니다. URL은 {블로그 주소}/plugin/MetaWeblogAPI/ 입니다.&lt;/description&gt;
  &lt;description xml:lang=&quot;en&quot;&gt;MetaWeblog API for Tattertools. Supports newPost/editPost/getPost/getRecentPosts functions. URL is {weblog URL}/plugin/MetaWeblogAPI/ &lt;/description&gt;
  &lt;license&gt;GPL&lt;/license&gt;
  &lt;author xml:lang=&quot;ko&quot; link=&quot;http://www.tattertools.com&quot;&gt;&lt;![CDATA[태터앤컴퍼니]]&gt;&lt;/author&gt;
  &lt;author xml:lang=&quot;en&quot; link=&quot;http://www.tattertools.com&quot;&gt;&lt;![CDATA[Tatter &amp; Company]]&gt;&lt;/author&gt;
  &lt;safety changeData=&quot;yes&quot; exposeData=&quot;no&quot; accessLocal=&quot;no&quot; accessRemote=&quot;no&quot; accessRaw=&quot;no&quot; /&gt;
  &lt;requirements&gt;
    &lt;tattertools&gt;1.0&lt;/tattertools&gt;
    &lt;component&gt;Eolin.PHP.XMLRPC&lt;/component&gt;
    &lt;component&gt;Tattertools.Model.Entry&lt;/component&gt;
  &lt;/requirements&gt;
  &lt;binding&gt;
    &lt;listener event=&quot;/plugin/MetaWeblogAPI/&quot;&gt;serveMetaWeblogAPI&lt;/listener&gt;
  &lt;/binding&gt;
&lt;/plugin&gt;</code></pre></div><p>index.php<br /></p><div class="codebox"><pre><code>&lt;?
requireComponent(&#039;Eolin.PHP.XMLRPC&#039;);
requireComponent(&#039;Tattertools.Control.Auth&#039;);

function serveMetaWeblogAPI($target, $mother) {
    $xmlrpc = new XMLRPC();
    $xmlrpc-&gt;registerMethod(&#039;metaWeblog.newPost&#039;, &#039;metaWeblog_newPost&#039;);
    $xmlrpc-&gt;registerMethod(&#039;metaWeblog.editPost&#039;, &#039;metaWeblog_editPost&#039;);
    $xmlrpc-&gt;registerMethod(&#039;metaWeblog.getPost&#039;, &#039;metaWeblog_getPost&#039;);
    $xmlrpc-&gt;registerMethod(&#039;metaWeblog.getRecentPosts&#039;, &#039;metaWeblog_getRecentPosts&#039;);
    if (!$xmlrpc-&gt;receive())
        $xmlrpc-&gt;sendFault();
}

function metaWeblog_newPost($blogid, $username, $password, $item, $publish) {
    if (!Auth::login($username, $password))
        return new XMLRPCFault(1, &#039;Incorrect username or password&#039;);
        
    if (empty($item[&#039;title&#039;]))
        return new XMLRPCFault(1, &#039;The title is required&#039;);
    if (empty($item[&#039;description&#039;]))
        return new XMLRPCFault(1, &#039;The description is required&#039;);
    
    requireComponent(&#039;Tattertools.Model.Entry&#039;);
    $entry = new Entry();
    $entry-&gt;title = $item[&#039;title&#039;];
    $entry-&gt;content = $item[&#039;description&#039;];
    if ($publish)
        $entry-&gt;visibility = &#039;public&#039;;
    if ($entry-&gt;add())
        return strval($entry-&gt;id);
    else
        return new XMLRPCFault(1, &#039;Could not post&#039;);
}

function metaWeblog_editPost($postid, $username, $password, $item, $publish) {
    if (!Auth::login($username, $password))
        return new XMLRPCFault(1, &#039;Incorrect username or password&#039;);
    
    if (empty($item[&#039;title&#039;]))
        return new XMLRPCFault(1, &#039;The title is required&#039;);
    if (empty($item[&#039;description&#039;]))
        return new XMLRPCFault(1, &#039;The description is required&#039;);
    
    requireComponent(&#039;Tattertools.Model.Entry&#039;);
    $entry = new Entry();
    if (!$entry-&gt;select($postid))
        return new XMLRPCFault(1, &#039;Post was not found&#039;);
    $entry-&gt;title = $item[&#039;title&#039;];
    $entry-&gt;content = $item[&#039;description&#039;];
    if ($publish)
        $entry-&gt;visibility = &#039;public&#039;;
    if ($entry-&gt;update())
        return true;
    else
        return new XMLRPCFault(1, &#039;Could not edit a post&#039;);
}

function metaWeblog_getPost($postid, $username, $password) {
    if (!Auth::login($username, $password))
        return new XMLRPCFault(1, &#039;Incorrect username or password&#039;);
        
    requireComponent(&#039;Tattertools.Model.Entry&#039;);
    $entry = new Entry();
    if (!$entry-&gt;select($postid))
        return new XMLRPCFault(1, &#039;Post was not found&#039;);
    return getmetaWeblogItem($entry);
}

function metaWeblog_getRecentPosts($blogid, $username, $password, $numberOfPosts) {
    if (!Auth::login($username, $password))
        return new XMLRPCFault(1, &#039;Incorrect username or password&#039;);
        
    requireComponent(&#039;Tattertools.Model.Entry&#039;);
    $entry = new Entry();
    if (!$entry-&gt;select())
        return new XMLRPCFault(1, &#039;Post was not found&#039;);
    $items = array();
    do {
        array_push($items, getmetaWeblogItem($entry));
    } while ($entry-&gt;moveNext() &amp;&amp; --$numberOfPosts);
    return $items;
}

function getmetaWeblogItem($entry) {
    return array(&#039;postid&#039; =&gt; $entry-&gt;id, &#039;title&#039; =&gt; $entry-&gt;title, &#039;description&#039; =&gt; $entry-&gt;content, &#039;dateCreated&#039; =&gt; gmdate(&#039;Ymd\TH:i:s&#039;, $entry-&gt;published));
}
?&gt;</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (inureyes)]]></author>
			<pubDate>Tue, 13 Jun 2006 06:41:44 +0000</pubDate>
			<guid>http://forum.tattersite.com/ko/viewtopic.php?pid=3828#p3828</guid>
		</item>
		<item>
			<title><![CDATA[RSS 답글: BlogAPI 0.9.2 (Blogger, MetaWeblog)]]></title>
			<link>http://forum.tattersite.com/ko/viewtopic.php?pid=3817#p3817</link>
			<description><![CDATA[<p>BlogAPI-0.9.2.zip 파일에 metaweblog.php 파일이 없습니다. 확인 부탁 드립니다.</p>]]></description>
			<author><![CDATA[null@example.com (MGMong)]]></author>
			<pubDate>Tue, 13 Jun 2006 05:32:45 +0000</pubDate>
			<guid>http://forum.tattersite.com/ko/viewtopic.php?pid=3817#p3817</guid>
		</item>
		<item>
			<title><![CDATA[RSS 답글: BlogAPI 0.9.2 (Blogger, MetaWeblog)]]></title>
			<link>http://forum.tattersite.com/ko/viewtopic.php?pid=3812#p3812</link>
			<description><![CDATA[<p>긴장 만빵입니다. 점심먹고 잠시 고쳐 릴리즈 한다는 것이 한 시간이 지났군요.<br />어서 일 해야지. 놀면 안됩니다.</p>]]></description>
			<author><![CDATA[null@example.com (coolengineer)]]></author>
			<pubDate>Tue, 13 Jun 2006 04:54:30 +0000</pubDate>
			<guid>http://forum.tattersite.com/ko/viewtopic.php?pid=3812#p3812</guid>
		</item>
	</channel>
</rss>
