Skip to content

Commit 8d782d8

Browse files
committed
add force
1 parent 199342c commit 8d782d8

File tree

2 files changed

+100
-2
lines changed

2 files changed

+100
-2
lines changed

qiniu/rs.js

Lines changed: 53 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,15 @@ Client.prototype.move = function(bucketSrc, keySrc, bucketDest, keyDest, onret)
5050
rpc.postWithoutForm(uri, digest, onret);
5151
}
5252

53+
Client.prototype.forceMove = function(bucketSrc, keySrc, bucketDest, keyDest, force, onret) {
54+
55+
var encodedEntryURISrc = getEncodedEntryUri(bucketSrc, keySrc);
56+
var encodedEntryURIDest = getEncodedEntryUri(bucketDest, keyDest);
57+
var uri = conf.RS_HOST + '/move/' + encodedEntryURISrc + '/' + encodedEntryURIDest +'/force/'+force;
58+
var digest = util.generateAccessToken(uri, null);
59+
rpc.postWithoutForm(uri, digest, onret);
60+
}
61+
5362
Client.prototype.copy = function(bucketSrc, keySrc, bucketDest, keyDest, onret) {
5463
var encodedEntryURISrc = getEncodedEntryUri(bucketSrc, keySrc);
5564
var encodedEntryURIDest = getEncodedEntryUri(bucketDest, keyDest);
@@ -58,6 +67,16 @@ Client.prototype.copy = function(bucketSrc, keySrc, bucketDest, keyDest, onret)
5867
rpc.postWithoutForm(uri, digest, onret);
5968
}
6069

70+
Client.prototype.forceCopy = function(bucketSrc, keySrc, bucketDest, keyDest, force, onret) {
71+
72+
var encodedEntryURISrc = getEncodedEntryUri(bucketSrc, keySrc);
73+
var encodedEntryURIDest = getEncodedEntryUri(bucketDest, keyDest);
74+
var uri = conf.RS_HOST + '/copy/' + encodedEntryURISrc + '/' + encodedEntryURIDest +'/force/'+force;
75+
var digest = util.generateAccessToken(uri, null);
76+
rpc.postWithoutForm(uri, digest, onret);
77+
}
78+
79+
6180
Client.prototype.fetch = function(url, bucket, key, onret) {
6281
var bucketUri = getEncodedEntryUri(bucket, key);
6382
var fetchUrl = util.urlsafeBase64Encode(url);
@@ -94,8 +113,15 @@ function EntryPathPair(src, dest) {
94113
this.dest = dest || null;
95114
}
96115

97-
EntryPathPair.prototype.toStr = function(op) {
98-
return 'op=/' + op + '/' + this.src.encode() + '/' + this.dest.encode() + '&';
116+
EntryPathPair.prototype.toStr = function(op, force) {
117+
if(typeof(force)=='undefined'){
118+
119+
return 'op=/' + op + '/' + this.src.encode() + '/' + this.dest.encode() + '&';
120+
121+
}else{
122+
123+
return 'op=/' + op + '/' + this.src.encode() + '/' + this.dest.encode() + '/force/' + force + '&';
124+
}
99125
}
100126

101127
function BatchItemRet(error, code) {
@@ -121,10 +147,23 @@ Client.prototype.batchMove = function(entries, onret) {
121147
fileHandle('move', entries, onret);
122148
}
123149

150+
Client.prototype.forceBatchMove = function(entries, force, onret) {
151+
152+
fileHandleForce('move', entries, force, onret);
153+
154+
}
155+
124156
Client.prototype.batchCopy = function(entries, onret) {
125157
fileHandle('copy', entries, onret);
126158
}
127159

160+
Client.prototype.forceBatchCopy = function(entries, force, onret) {
161+
162+
fileHandleForce('copy', entries, force, onret);
163+
164+
}
165+
166+
128167
function fileHandle(op, entries, onret) {
129168
var body = '';
130169
for (var i in entries) {
@@ -136,6 +175,18 @@ function fileHandle(op, entries, onret) {
136175
rpc.postWithForm(uri, body, digest, onret);
137176
}
138177

178+
function fileHandleForce(op, entries, force, onret) {
179+
var body = '';
180+
for (var i in entries) {
181+
body += entries[i].toStr(op, force);
182+
}
183+
184+
console.log(body);
185+
var uri = conf.RS_HOST + '/batch';
186+
var digest = util.generateAccessToken(uri, body);
187+
rpc.postWithForm(uri, body, digest, onret);
188+
}
189+
139190
function getEncodedEntryUri(bucket, key) {
140191
return util.urlsafeBase64Encode(bucket + (key ? ':' + key : ''));
141192
}

test/rs.test.js

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,16 @@ describe('test start step2:', function() {
5757
});
5858
});
5959

60+
describe('rs.Client#forceCopy()', function() {
61+
it('copy logo.png to logo1.png', function(done) {
62+
client.forceCopy(TEST_BUCKET, logo, TEST_BUCKET, logo1, 1, function(err, ret) {
63+
should.not.exist(err);
64+
done();
65+
});
66+
});
67+
});
68+
69+
6070
describe('rs.Client#remove()', function() {
6171
it('remove logo.png', function(done) {
6272
client.remove(TEST_BUCKET, logo, function(err, ret) {
@@ -74,6 +84,15 @@ describe('test start step2:', function() {
7484
});
7585
});
7686
});
87+
88+
describe('rs.Client#forceMove()', function() {
89+
it('move logo1.png to logo.png', function(done) {
90+
client.forceMove(TEST_BUCKET, logo1, TEST_BUCKET, logo, 1, function(err, ret) {
91+
should.not.exist(err);
92+
done();
93+
});
94+
});
95+
});
7796
});
7897

7998
describe('batch file handle', function() {
@@ -141,6 +160,20 @@ describe('test start step2:', function() {
141160
});
142161
});
143162

163+
describe('rs.Client#forceBatchCopy', function() {
164+
var entries = [];
165+
entries.push(new EntryPathPair(new EntryPath(TEST_BUCKET, logo), new EntryPath(TEST_BUCKET, logo1)));
166+
entries.push(new EntryPathPair(new EntryPath(TEST_BUCKET, logo2), new EntryPath(TEST_BUCKET, logo3)));
167+
168+
it('copy from logo, logo2 to logo1, logo3', function(done) {
169+
client.forceBatchCopy(entries, 1, function(err, ret) {
170+
should.not.exist(err);
171+
ret.should.eql([ { code: 200 }, { code: 200 } ]);
172+
done();
173+
});
174+
});
175+
});
176+
144177
describe('rs.Client#batchDelete', function() {
145178
var entries = [new EntryPath(TEST_BUCKET, logo), new EntryPath(TEST_BUCKET, logo2)];
146179

@@ -164,6 +197,20 @@ describe('test start step2:', function() {
164197
});
165198
});
166199
});
200+
201+
describe('rs.Client#forceBatchMove', function() {
202+
var entries = [];
203+
entries.push(new EntryPathPair(new EntryPath(TEST_BUCKET, logo1), new EntryPath(TEST_BUCKET, logo)));
204+
entries.push(new EntryPathPair(new EntryPath(TEST_BUCKET, logo3), new EntryPath(TEST_BUCKET, logo2)));
205+
206+
it('move from logo1.png, logo3.png to logo.png, logo2.png', function(done) {
207+
client.forceBatchMove(entries, 1, function(err, ret) {
208+
should.not.exist(err);
209+
done();
210+
});
211+
});
212+
});
213+
167214
});
168215

169216
describe('rs.isQiniuCallBack', function() {

0 commit comments

Comments
 (0)