2012-12-13 4 views
1

파일을 꼬인 응용 프로그램에서 Google의 클라우드 저장소에 넣어야합니다.Twisted에서 GCS로 업로드

아마존과 txAWS을 사용하고 있었지만 지금은 GCS를 사용하고 있습니다.

txAWS을 GCS와 함께 사용할 수 있습니까? 이상한 질문이 들지만 botoS3Connection을 GCS와 함께 사용할 수 있으므로 txAWS과 동일한 작업을 수행 할 수있는 방법이 있습니까?

답변

1

Twisted Web clientGCS JSON API과 함께 사용하는 것이 좋습니다. 버킷의 내용을 나열한 예는 다음과 같습니다.

import json 
from twisted.internet import reactor 
from twisted.internet.defer import Deferred 
from twisted.internet.protocol import Protocol 
from twisted.web.client import Agent 
from twisted.web.error import Error 
from twisted.web.http_headers import Headers 

GCS_BASE_URL = 'https://www.googleapis.com/storage/v1beta1' 
GCS_API_KEY = '<your-api-key>' 
GCS_BUCKET = '<your-bucket>' 

class ResponseAccumulate(Protocol): 
    def __init__(self, finished): 
     self.finished = finished 
     self.fullbuffer = '' 

    def dataReceived(self, bytes): 
     print 'Received %d bytes.' % len(bytes) 
     self.fullbuffer += bytes 

    def connectionLost(self, reason): 
     if isinstance(reason, Error): 
      print 'Finished receiving body:', reason.getErrorMessage() 
     else: 
      parsed = json.loads(self.fullbuffer) 
      print 'Bucket contents:' 
      for item in parsed['items']: 
       print ' ', item['id'] 
     self.finished.callback(None) 

agent = Agent(reactor) 

d = agent.request(
    'GET', 
    '%s/b/%s/o?key=%s' % (GCS_BASE_URL, GCS_BUCKET, GCS_API_KEY), 
    Headers({'User-Agent': ['Twisted Web Client Example']}), 
    None) 

def cbResponse(response): 
    print 'Response received', response.code 
    finished = Deferred() 
    response.deliverBody(ResponseAccumulate(finished)) 
    return finished 
d.addCallback(cbResponse) 

def cbShutdown(ignored): 
    reactor.stop() 
d.addBoth(cbShutdown) 

reactor.run() 
+0

감사합니다. 비밀 키로 이것을 어떻게 사용할 수 있습니까? 아마 URL에 서명해야할까요? – GP89

+0

OAuth를 의미합니까? – jterrace

관련 문제