Hi Dinithi,

Did you try to invoke this directly using a client.

Are they expecting the values to be in url or in post body?

http://api.toodledo.com/3/tasks/index.php#adding

Best Regards,
Malaka

On Wed, Sep 10, 2014 at 11:33 PM, Dinithi De Silva <dinit...@wso2.com>
wrote:

> I am trying to develop an ESB connector for ToodleDo API v3. In that API,
> I need to add an array of tasks with various parameters. The number of
> parameters in one element of the array, can be different from other
> elements.
> The API call looks as below.
>
> http://api.toodledo.com/3/tasks/add.php
>       access_token=yourtoken
>       tasks=[{"title"%3A"My 
> Task"}%2C{"title"%3A"Another"%2C"star"%3A"1"%2C"ref"%3A"98765"}%2C{"title"%3A""%2C"ref"%3A"1234"}]
>       fields=folder,star
>
>
> Tasks are added by creating a JSON object and submitting a POST to the
> API.
> Also I need to encode the data before transferring via the URL.
>
> I tried this operation by using javascript. I just tried with two
> parameters in the array (Mandatory -title and optional - star). My code is
> as below.
>
>             <![CDATA[
>
>                       var added = 0;
>             var query = "";
>
>                       var taskString = '{"tasks":' + 
> mc.getProperty('uri.var.tasks') + '}';
>
>            if (mc.getProperty('uri.var.tasks') != null && 
> mc.getProperty('uri.var.tasks') != "") {
>
>                 var taskObj = eval ("(" + taskString + ")");
>
>                               if(Boolean(added)) {
>                                   query = query + ',"tasks":[';
>                           }else {
>                               query = query + '"tasks":[';
>                               added = 1;
>                           }
>
>                 var count = 0;
>                           for (var i in taskObj.tasks) {
>                     if (taskObj.tasks.hasOwnProperty(i)) {
>                         if(count == 0 ) {
>                             query=query + 
> '{\"title\":\"'+mc.getProperty('uri.var.title')+'\",';
>                             query=query + 
> '{\"star\":\"'+mc.getProperty('uri.var.star')+'\"}';
>                             count =1;
>                         }else {
>                             query=query + 
> ',{\"title\":\"'+mc.getProperty('uri.var.title')+'\",';
>                             query=query + 
> '{\"star\":\"'+mc.getProperty('uri.var.star')+'\"}';
>                         }
>
>                     }
>                 }
>
>                 query = query + ']';
>
>                 var encoded_query= encodeURIComponent(query);
>                       }
>                       mc.setProperty('uri.var.encoded_query', encoded_query);
>
>               ]]>
>         </script>
>
>
> And I have wrritten the payload factory as below.
>
> <payloadFactory media-type="xml">
>             <format>
>                 <xform>
>                     <access_token>$1</access_token>
>                     <tasks>$2</tasks>
>                     <fields>$3</fields>
>                 </xform>
>                 <!--{                    "access_token" : "$1",               
>      "tasks" : "$2"                    "fields" : "$3"                }-->
>             </format>
>             <args>
>                 <arg expression="$func:access_token" />
>                 <arg expression="get-property('uri.var.encoded_query')" />
>                 <arg expression="$func:fields" />
>             </args></payloadFactory>
>
>
>
> But it gives me an error as below.
>
> [2014-09-10 22:39:22,129] ERROR - SynapseJsonPath #stringValueOf. Error
> evaluating JSON Path <$.access_token>. Returning empty result. Error>>>
> Unexpected character ({) at position 96.
> [2014-09-10 22:39:22,130] ERROR - SynapseJsonPath #stringValueOf. Error
> evaluating JSON Path <$.tasks>. Returning empty result. Error>>> Unexpected
> character ({) at position 96.
> [2014-09-10 22:39:22,130] ERROR - SynapseJsonPath #stringValueOf. Error
> evaluating JSON Path <$.fields>. Returning empty result. Error>>>
> Unexpected character ({) at position 96.
> [2014-09-10 22:39:22,132] ERROR - ScriptMediator Failed to get the JSON
> payload from the input stream. Error>>>
> com.google.gson.stream.MalformedJsonException: Expected name at line 1
> column 101
>
>
> What am I missing?
> How can I modify this to work with all the optional parameters?
>
> Thank you
> Dinithi De Silva
> Associate Software Engineer
>
> Mob: +94 716 667 655
>
> _______________________________________________
> Dev mailing list
> Dev@wso2.org
> http://wso2.org/cgi-bin/mailman/listinfo/dev
>
>


-- 

Best Regards,

Malaka Silva
Senior Tech Lead
M: +94 777 219 791
Tel : 94 11 214 5345
Fax :94 11 2145300
Skype : malaka.sampath.silva
LinkedIn : http://www.linkedin.com/pub/malaka-silva/6/33/77
Blog : http://mrmalakasilva.blogspot.com/

WSO2, Inc.
lean . enterprise . middleware
http://www.wso2.com/
http://www.wso2.com/about/team/malaka-silva/
<http://wso2.com/about/team/malaka-silva/>

Save a tree -Conserve nature & Save the world for your future. Print this
email only if it is absolutely necessary.
_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to