XML-RPC
José Antonio Rocha
joseantoniorocha at gmail.com
Mon Nov 16 17:05:36 EST 2015
2015-11-15 15:48 GMT-02:00 Peter Haworth <pete at lcsql.com>:
> This looks like the server side of things and I'm
> looking for examples of using the revXMLRPC@ calls from a Livecode desktop
> app.
>
Here is my getPost WordPress function:
---------------------------
-- GET POST
---------------------------
/*
-- Fields to return (optionals):
string post_id, string post_title, datetime post_date, datetime
post_date_gmt,
datetime post_modified, datetime post_modified_gmt, string post_status,
string post_type, string post_format, string post_name, string post_author,
string post_password, string post_excerpt, string post_content, string
post_parent
string post_mime_type, string link, string guid, int menu_order, string
comment_status,
string ping_status, boolean sticky, struct post_thumbnail [lack support,
yet],
array terms (string term_id, string name, string slug, string term_group,
string term_taxonomy_id, string taxonomy, string description,
string parent, int count ), array custom_fields (id, key, value),
array enclosure (url, length, type)
*/
function wp.getPost pPostID pFieldsA
global gDebug
global gServer, gPort, gXmlrpcPath, gProto, gBlogID
local tID, res, lPostContentA,tMembersNum, tMemberPath, tName
local tCustomPath, tCustomNum, tCustomStructPath, tTemp, tCustomName,
tCustomValue
local tTermsPath, tTermsNum, tTermMembersPath, tTermMembersNum, tTermName
local tTermStructChildPath, tTermValue, tEnclosurePath, tEnclosureName
local tEnclosureChildPath, tEnclosureValue, tValuePath, tValue
put revXMLRPC_CreateRequest(gServer, gPort, gXmlrpcPath, gProto) into tID
revXMLRPC_SetMethod tID, "wp.getPost"
revXMLRPC_AddParam tID, "int", gBlogID -- this don't select the blog but
is neccessary
XMLRPC_AddUser tID
-- Set the post to retrieve
revXMLRPC_AddParam tID, "int", pPostID
-- Set optional fields to retrieve
revXMLRPC_AddParam tID, "array", pFieldsA
XMLRPC_SetAuthorization tID
-- Retrieve
put revXMLRPC_Execute(tID) into res
//put revXMLText(res) into gDebug ----------------debugging
revDeleteXMLTree tID
Err res
-- Build an array with posts data
-- This path refers to structure of returned XML
put revXMLnumberOfChildren(res,
"/methodResponse/params/param/value/struct/","member", 1) into tMembersNum
repeat with x = 1 to tMembersNum
put format("/methodResponse/params/param/value/struct/member[%s]/",
x) into tMemberPath
put revXMLNodeContents(res, (tMemberPath & "name")) into tName
if tName is "custom_fields" then
put
format("/methodResponse/params/param/value/struct/member[%s]/value/array/data/",x)
into tCustomPath
put revxmlnumberofchildren(res, tCustomPath,"value", 1) into
tCustomNum
repeat with y = 1 to tCustomNum
put
format("/methodResponse/params/param/value/struct/member[%s]/value/array/data/value[%s]/struct/",
x,y) into tCustomStructPath
-- Get the fields: "id", "key", "value"
repeat with z = 1 to 3
put
format("/methodResponse/params/param/value/struct/member[%s]/value/array/data/value[%s]/struct/member[%s]/",
x,y,z) into tTemp
put revXMLNodeContents(res, (tTemp & "name")) into
tCustomName
put revXMLNodeContents(res, (tTemp & "value/string")) into
tCustomValue
put textDecode(tCustomValue,"UTF-8") into
lPostContentA[tName][y][tCustomName]
end repeat
end repeat
next repeat
end if
if tName is "terms" then
put
format("/methodResponse/params/param/value/struct/member[%s]/value/array/data/",x)
into tTermsPath
put revxmlnumberofchildren(res, tTermsPath,"value", 1) into
tTermsNum
repeat with y = 1 to tTermsNum
put
format("/methodResponse/params/param/value/struct/member[%s]/value/array/data/value[%s]/struct/",
x,y) into tTermMembersPath
put revxmlnumberofchildren(res, tTermMembersPath,"value", 1)
into tTermMembersNum
repeat with z = 1 to tTermMembersNum
put
format("/methodResponse/params/param/value/struct/member[%s]/value/array/data/value[%s]/struct/member[%s]/",
x,y,z) into tTemp
put revXMLNodeContents(res, (tTemp & "name")) into tTermName
put revXMLFirstChild(res,(tTemp & "value")) into
tTermStructChildPath
put revXMLNodeContents(res, tTermStructChildPath) into
tTermValue
put textDecode(tTermValue,"UTF-8") into
lPostContentA[tName][y][tTermName]
end repeat
end repeat
next repeat
end if
-- WP return just one enclosure. It apears in custom fields, too.
if tName is "enclosure" then
put
format("/methodResponse/params/param/value/struct/member[%s]/value/struct/",
x) into tEnclosurePath
-- Get the fields: "url", "length", "type"
repeat with y = 1 to 3
put
format("/methodResponse/params/param/value/struct/member[%s]/value/struct/member[%s]/",
x,y) into tTemp
put revXMLNodeContents(res, (tTemp & "name")) into
tEnclosureName
if tEnclosureName is not empty and not(tEnclosureName begins
with "xmlerr,") then
put revXMLFirstChild(res,(tTemp & "value")) into
tEnclosureChildPath
put revXMLNodeContents(res, tEnclosureChildPath) into
tEnclosureValue
put textDecode(tEnclosureValue,"UTF-8") into
lPostContentA[tName][tEnclosureName]
end if
end repeat
next repeat
end if
-- (TODO: post_thumbnail support)
-- If is any other field type:
---- revXMLFirstChild get any type (string, boolean, array, int, i4,
dateTime.iso8601, struct)
put revXMLFirstChild(res,(tMemberPath & "value")) into tValuePath
put revXMLNodeContents(res, tValuePath) into tValue
put textDecode(tValue,"UTF-8") into lPostContentA[tName]
end repeat
return lPostContentA
end wp.getPost
--
[image: Meira]
------------------------------
nome: "José Antonio Meira da Rocha
<https://plus.google.com/+JoséAntonioMeiradaRocha/>"
email: joseantoniorocha at gmail.com
veículo: [ http://meiradarocha.jor.br ]
fones: [ 55-8448-3866 55-3744-2994 ] 🐊
------------------------------
More information about the use-livecode
mailing list