- g_print("Starting fetch of %s from S3...\n", key);
- S3_get_object(&store->bucket, key, NULL, 0, 0, NULL,
- &handler, &info);
-
- if (!info.success) {
- g_string_free(info.buf, TRUE);
- return NULL;
- }
-
- BlueSkyRCStr *raw, *decrypted;
- raw = bluesky_string_new_from_gstring(info.buf);
- decrypted = bluesky_crypt_decrypt(raw, store->encryption_key);
- bluesky_string_unref(raw);
- return decrypted;
-}
-
-static void s3store_put(gpointer s, const gchar *key, BlueSkyRCStr *val)
-{
- S3Store *store = (S3Store *)s;
-
- S3Op *op = g_new(S3Op, 1);
- op->op = S3_PUT;
- op->key = g_strdup(key);
- bluesky_string_ref(val);
- op->data = val;
-
- g_thread_pool_push(store->thread_pool, op, NULL);
-}
-
-static void s3store_task(gpointer o, gpointer s)
-{
- S3Store *store = (S3Store *)s;
- S3Op *op = (S3Op *)o;
+ struct S3GetObjectHandler handler;
+ handler.responseHandler.propertiesCallback = s3store_properties_callback;
+ handler.responseHandler.completeCallback = s3store_response_callback;
+ handler.getObjectDataCallback = s3store_get_handler;