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