2014-03-25 94 views
2

可以使用API​​创建GoodData一个新项目:http://docs.gooddata.apiary.io/#projectGoodData:如何通过API创建项目?

有时候,从模板创建项目时即项目创建不同步。当我在项目准备就绪之前使用该项目时,我会收到类似403和409的错误。

项目的可能状态(除ENABLED外)是什么?建立项目的建议方式是什么(可能是针对特定状态进行轮询)?什么是错误状态以及如何处理它们?代码示例会很有用。

回答

2

是最好的方法是轮询项目状态。

项目可以有这些状态。

'PREPARING'| 'PREPARED'| 'LOADING'| 'ENABLED'| 'DISABLED'| 'DELETED'| 'ARCHIVED',

我可以为你创建例子,你的首选语言是什么?

吉日西蒙

GoodData支持

1

在这里你可以看到蟒蛇真的很简单的例子。

from urllib2 import Request, urlopen 
import Cookie 
from json import dumps 
import re 
import ast 



values = dumps({"postUserLogin":{"login":"[email protected]","password":"mypassword","remember":1}}) 
headers = {"Accept": "application/json", "Content-Type": "application/json"} 
request = Request("https://na1.secure.gooddata.com/gdc/account/login", data=values, headers=headers) 
response_body = urlopen(request) 
#print response_body.read() 
msg = response_body.info() 
#print msg.getheaders('set-cookie') 
x=msg.getheaders('set-cookie') 
import re 
GD_SST = re.search('GDCAuthSST(.*?);', x[1]).group() 
print GD_SST 


headers = {"Cookie": "$Version=0; $Path=/gdc/account", "Accept": "application/json", "Content-Type": "application/json"} 
headers['Cookie'] = GD_SST 
request = Request("https://na1.secure.gooddata.com/gdc/account/token", headers=headers) 
response_body = urlopen(request) 
#print response_body.read() 
#print response_body.info() 
msg = response_body.info() 
#print msg.getheaders('set-cookie') 
x=msg.getheaders('set-cookie') 
#print x 
GD_TT = re.search('GDCAuthTT(.*?);', x[0]).group() 
print GD_TT 


values = dumps({ "project" : { 
     "content" : {"guidedNavigation": 1, "driver" : "Pg", "authorizationToken" : "MYTOKEN"}, 
     "meta" : { 
     "title" : "Test Project API", 
     "summary" : "Testing Project", 
     "projectTemplate" : "/projectTemplates/{templateName}/{version}" 
     } } 
}) 
headers = {"Accept": "application/json", "Content-Type": "application/json"} 
headers['Cookie'] = GD_TT 
request = Request("https://na1.secure.gooddata.com/gdc/projects", data=values, headers=headers) 
response_body = urlopen(request).read() 
#project_url=response_body['uri'] 
project_url=ast.literal_eval(response_body)['uri'] 
print project_url 

request = Request("https://na1.secure.gooddata.com%s" % project_url , headers=headers) 
#response_body = urlopen(request).read() 
#print response_body 
response_body = urlopen(request).read() 
print response_body 
#project_details = ast.literal_eval(response_body)['project'] 
#project_state = project_details['content']['state'] 

project_state = " " 
#print "project_state is %s" % project_state 
while project_state != "ENABLED" or project_state != "DELETED" : 

    response_body = urlopen(request).read() 
    #print response_body 
    project_details = ast.literal_eval(response_body)['project'] 
    project_state = project_details['content']['state'] 
    print "project_state is %s" % project_state 
    if project_state == "DELETED": 
     break 

if project_state == "ENABLED" : 
    print "project created %s" %project_ur 
else: 
print "something was wrong" 
相关问题