Fix bugs. Add new test in a menu way that support the oauth authentic… · stacksync/swift-API@d4ff427 · GitHub
Skip to content

Commit d4ff427

Browse files
committed
Fix bugs. Add new test in a menu way that support the oauth authentication
1 parent a6410bc commit d4ff427

4 files changed

Lines changed: 285 additions & 21 deletions

File tree

stacksync_api_swift/stacksync_api_swift/resources/data_handler.py

Lines changed: 1 addition & 2 deletions

stacksync_api_swift/stacksync_api_swift/resources/data_resource.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ def PUT(request, api_library, app):
5858
app.logger.error("StackSync API: old_chunks: %s", old_chunks)
5959
container_name = workspace_info['swift_container']
6060
chunked_file = BuildFile(content, [])
61-
chunked_file.separate()
62-
61+
chunked_file.separate(file_id)
62+
print 'new chunks', chunked_file.chunk_dict.keys()
6363
chunks_diff_remove = list(set(old_chunks) - set(chunked_file.chunk_dict.keys()))
6464
data_handler = DataHandler(app)
6565

@@ -73,18 +73,18 @@ def PUT(request, api_library, app):
7373
#upload new chunks
7474
chunks_diff_add = list(set(chunked_file.chunk_dict.keys())-set(old_chunks))
7575
chunks_no_diff = list(set(chunked_file.chunk_dict.keys())-set(chunks_diff_add))
76-
if not chunks_diff_add:
77-
for key in chunks_no_diff:
78-
del chunked_file.chunk_dict[key]
79-
response = data_handler.upload_file_chunks(request.environ, chunked_file, container_name)
8076

81-
if not is_valid_status(response.status_int):
82-
app.logger.error("StackSync API: data_resource PUT: error uploading file chunks: %s path info: %s",
77+
for key in chunks_no_diff:
78+
del chunked_file.chunk_dict[key]
79+
response = data_handler.upload_file_chunks(request.environ, chunked_file, container_name)
80+
81+
if not is_valid_status(response.status_int):
82+
app.logger.error("StackSync API: data_resource PUT: error uploading file chunks: %s path info: %s",
8383
str(response.status),
8484
str(request.path_info))
85-
return create_error_response(500, "Could not upload chunks to storage backend.")
85+
return create_error_response(500, "Could not upload chunks to storage backend.")
8686

87-
chunks = chunked_file.name_list
87+
chunks = chunked_file.chunk_dict.keys()
8888
checksum = str((zlib.adler32(content) & 0xffffffff))
8989
file_size = str(len(content))
9090
mimetype = magic.from_buffer(content, mime=True)
@@ -147,7 +147,7 @@ def GET(request, api_library, app):
147147

148148
workspace_info = json.loads(workspace_info)
149149
container_name = workspace_info['swift_container']
150-
150+
print 'chunks to retrieve', metadata['chunks']
151151
file_compress_content, status = data_handler.get_chunks(request.environ, metadata['chunks'],
152152
container_name)
153153

stacksync_api_swift/stacksync_api_swift/resources/data_util.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ class Chunk(object):
1212
def __init__(self, checksum):
1313
self.checksum = checksum.upper()
1414

15-
def get_filename(self):
15+
def get_filename(self, file_id):
16+
if file_id:
17+
return "chk-" + self.checksum +"-"+str(file_id)
1618
return "chk-" + self.checksum +"-"+str(random.getrandbits(64))
1719

1820

@@ -43,7 +45,7 @@ def join(self):
4345

4446
self.content += temp
4547

46-
def separate(self):
48+
def separate(self, file_id=None):
4749
num_chunks = int(len(self.content)/CHUNK_SIZE)
4850
self.name_list = []
4951

@@ -53,8 +55,6 @@ def separate(self):
5355
data = self.content[i*CHUNK_SIZE:(i+1)*CHUNK_SIZE]
5456
checksum = get_sha1_hash(data)
5557
chunk_object = Chunk(checksum)
56-
self.name_list.append(chunk_object.get_filename())
57-
self.hash_list.append(checksum.upper())
5858

5959
# compress chunks process
6060
buf = strIO()
@@ -67,7 +67,7 @@ def separate(self):
6767

6868
self.chunks.append(chunk)
6969
last_index = i
70-
self.chunk_dict[chunk_object.get_filename()] = [checksum.upper(), chunk]
70+
self.chunk_dict[chunk_object.get_filename(file_id)] = [checksum.upper(), chunk]
7171

7272
data = self.content[(last_index+1)*CHUNK_SIZE:]
7373
else:
@@ -77,8 +77,6 @@ def separate(self):
7777
if len(data) > 0:
7878
checksum = get_sha1_hash(data)
7979
chunk_object = Chunk(checksum)
80-
self.name_list.append(chunk_object.get_filename())
81-
self.hash_list.append(checksum.upper())
8280
buf = strIO()
8381
f = GzipFile(mode='wb', fileobj=buf)
8482
try:
@@ -88,5 +86,5 @@ def separate(self):
8886
chunk = buf.getvalue()
8987

9088
self.chunks.append(chunk)
91-
self.chunk_dict[chunk_object.get_filename()] = [checksum.upper(), chunk]
89+
self.chunk_dict[chunk_object.get_filename(file_id)] = [checksum.upper(), chunk]
9290

tests/api_test_menu.py

Lines changed: 267 additions & 0 deletions

0 commit comments

Comments
 (0)