package io.loli.sc.server.storage;
import java.io.File;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONException;
import com.qiniu.api.auth.AuthException;
import com.qiniu.api.auth.digest.Mac;
import com.qiniu.api.io.IoApi;
import com.qiniu.api.io.PutExtra;
import com.qiniu.api.io.PutRet;
import com.qiniu.api.rs.PutPolicy;
import com.qiniu.api.rs.RSClient;
public class QnStorageUploader extends StorageUploader {
private String accessKeyId;
private String accessKeySecret;
private String endpoint;
private String bucketName;
public QnStorageUploader(String accessKeyId, String accessKeySecret, String endpoint, String bucketName) {
super();
this.accessKeyId = accessKeyId;
this.accessKeySecret = accessKeySecret;
this.endpoint = endpoint;
this.bucketName = bucketName;
}
@Override
public String upload(File file) {
return this.upload(file, null);
}
@Override
public String upload(File file, String contentType) {
Mac mac = new Mac(accessKeyId, accessKeySecret);
// 请确保该bucket已经存在
PutPolicy putPolicy = new PutPolicy(bucketName);
String uptoken = null;
try {
uptoken = putPolicy.token(mac);
} catch (AuthException e) {
e.printStackTrace();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
PutExtra extra = new PutExtra();
if (StringUtils.isNotBlank(contentType)) {
extra.mimeType = contentType;
}
String key = file.getName();
PutRet ret = IoApi.putFile(uptoken, key, file.getPath(), extra);
return endpoint + "/" + ret.getKey();
}
@Override
public void delete(String file) {
Mac mac = new Mac(accessKeyId, accessKeySecret);
RSClient client = new RSClient(mac);
client.delete(bucketName, file);
}
}