Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
jio
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
lucas.parsy
jio
Commits
1581dc4a
Commit
1581dc4a
authored
Apr 02, 2015
by
Romain Courteaud
🐸
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix line length to 80 characters
parent
5c005528
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
45 additions
and
78 deletions
+45
-78
src/jio.js
src/jio.js
+45
-78
No files found.
src/jio.js
View file @
1581dc4a
/*jslint maxlen: 200*/
/*global window, RSVP, Blob, XMLHttpRequest, QueryFactory, Query, FileReader */
(
function
(
window
,
RSVP
,
Blob
,
QueryFactory
,
Query
,
FileReader
)
{
(
function
(
window
,
RSVP
,
Blob
,
QueryFactory
,
Query
,
FileReader
)
{
"
use strict
"
;
var
util
=
{},
...
...
@@ -19,8 +19,8 @@
/**
* Send request with XHR and return a promise. xhr.onload: The promise is
* resolved when the status code is lower than 400 with the xhr object as
first
* parameter. xhr.onerror: reject with xhr object as first
* resolved when the status code is lower than 400 with the xhr object as
*
first
parameter. xhr.onerror: reject with xhr object as first
* parameter. xhr.onprogress: notifies the xhr object.
*
* @param {Object} param The parameters
...
...
@@ -28,8 +28,8 @@
* @param {String} [param.dataType=""] The data type to retrieve
* @param {String} param.url The url
* @param {Any} [param.data] The data to send
* @param {Function} [param.beforeSend] A function called just before the
send
* request. The first parameter of this function is the XHR object.
* @param {Function} [param.beforeSend] A function called just before the
*
send
request. The first parameter of this function is the XHR object.
* @return {Promise} The promise
*/
function
ajax
(
param
)
{
...
...
@@ -77,8 +77,8 @@
* It can also clone object which are serializable, like Date.
*
* To make a class serializable, you need to implement the `toJSON` function
* which returns a JSON representation of the object. The returned value is
used
* as first parameter of the object constructor.
* which returns a JSON representation of the object. The returned value is
*
used
as first parameter of the object constructor.
*
* @param {A} object The object to clone
* @return {A} The cloned object
...
...
@@ -109,10 +109,11 @@
// XXX this block is to enable phantomjs and browsers compatibility with
// Date.prototype.toJSON when it is an invalid date. In phantomjs, it
// returns `"Invalid Date"` but in browsers it returns `null`. In
// browsers, giving `null` as parameter to `new Date()` doesn't return
an
// invalid date.
// browsers, giving `null` as parameter to `new Date()` doesn't return
//
an
invalid date.
// Cloning a date with `return new Date(object)` has problems on Firefox.
// Cloning a date with `return new Date(object)` has problems on
// Firefox.
// I don't know why... (Tested on Firefox 23)
if
(
isFinite
(
object
.
getTime
()))
{
...
...
@@ -172,67 +173,22 @@
}
util
.
readBlobAsDataURL
=
readBlobAsDataURL
;
//
// // // XXX What is "jio"?
// // var rest_method_names = [
// // "remove",
// // "allDocs",
// // "removeAttachment",
// // "check",
// // "repair"
// // ],
// // i,
// // len = rest_method_names.length;
// //
// // for (i = 0; i < len; i += 1) {
// // declareMethod(rest_method_names[i]);
// // }
// // ["removeAttachment"].forEach(function (method) {
// // shared.on(method, function (param) {
// // if (!checkId(param)) {
// // checkAttachmentId(param);
// // }
// // });
// // });
// //
// //
// // ["check", "repair"].forEach(function (method) {
// // shared.on(method, function (param) {
// // if (param.kwargs._id !== undefined) {
// // if (!checkId(param)) {
// // return;
// // }
// // }
// // });
// // });
// tools
function
checkId
(
param
,
storage
,
method_name
)
{
if
(
typeof
param
.
_id
!==
'
string
'
||
param
.
_id
===
''
)
{
throw
new
jIO
.
util
.
jIOError
(
"
Document id must be a non empty string on '
"
+
storage
.
__type
+
"
.
"
+
method_name
+
"
'.
"
,
400
);
throw
new
jIO
.
util
.
jIOError
(
"
Document id must be a non empty string on '
"
+
storage
.
__type
+
"
.
"
+
method_name
+
"
'.
"
,
400
);
}
}
function
checkAttachmentId
(
param
,
storage
,
method_name
)
{
if
(
typeof
param
.
_attachment
!==
'
string
'
||
param
.
_attachment
===
''
)
{
throw
new
jIO
.
util
.
jIOError
(
"
Attachment id must be a non empty string on '
"
+
storage
.
__type
+
"
.
"
+
method_name
+
"
'.
"
,
"
Attachment id must be a non empty string on '
"
+
storage
.
__type
+
"
.
"
+
method_name
+
"
'.
"
,
400
);
}
...
...
@@ -256,7 +212,8 @@
var
storage_method
=
context
.
__storage
[
name
];
if
(
storage_method
===
undefined
)
{
throw
new
jIO
.
util
.
jIOError
(
"
Capacity '
"
+
name
+
"
' is not implemented on '
"
+
context
.
__type
+
"
'
"
,
"
Capacity '
"
+
name
+
"
' is not implemented on '
"
+
context
.
__type
+
"
'
"
,
501
);
}
...
...
@@ -297,7 +254,8 @@
declareMethod
(
JioProxyStorage
,
"
put
"
,
checkId
,
function
(
argument_list
)
{
return
argument_list
[
0
].
_id
;
});
declareMethod
(
JioProxyStorage
,
"
get
"
,
checkId
,
function
(
argument_list
,
result
)
{
declareMethod
(
JioProxyStorage
,
"
get
"
,
checkId
,
function
(
argument_list
,
result
)
{
// XXX Drop all _ properties
// Put _id properties to the result
result
.
_id
=
argument_list
[
0
].
_id
;
...
...
@@ -325,14 +283,16 @@
});
};
declareMethod
(
JioProxyStorage
,
'
putAttachment
'
,
function
(
param
,
storage
,
method_name
)
{
declareMethod
(
JioProxyStorage
,
'
putAttachment
'
,
function
(
param
,
storage
,
method_name
)
{
checkId
(
param
,
storage
,
method_name
);
checkAttachmentId
(
param
,
storage
,
method_name
);
if
(
!
(
param
.
_blob
instanceof
Blob
)
&&
typeof
param
.
_data
===
'
string
'
)
{
param
.
_blob
=
new
Blob
([
param
.
_data
],
{
"
type
"
:
param
.
_content_type
||
param
.
_mimetype
||
"
text/plain;charset=utf-8
"
"
type
"
:
param
.
_content_type
||
param
.
_mimetype
||
"
text/plain;charset=utf-8
"
});
delete
param
.
_data
;
delete
param
.
_mimetype
;
...
...
@@ -357,12 +317,14 @@
}
});
declareMethod
(
JioProxyStorage
,
'
removeAttachment
'
,
function
(
param
,
storage
,
method_name
)
{
declareMethod
(
JioProxyStorage
,
'
removeAttachment
'
,
function
(
param
,
storage
,
method_name
)
{
checkId
(
param
,
storage
,
method_name
);
checkAttachmentId
(
param
,
storage
,
method_name
);
});
declareMethod
(
JioProxyStorage
,
'
getAttachment
'
,
function
(
param
,
storage
,
method_name
)
{
declareMethod
(
JioProxyStorage
,
'
getAttachment
'
,
function
(
param
,
storage
,
method_name
)
{
// if (param.storage_spec.type !== "indexeddb" &&
// param.storage_spec.type !== "dav" &&
// (param.kwargs._start !== undefined
...
...
@@ -379,7 +341,9 @@
},
function
(
argument_list
,
result
)
{
if
(
!
(
result
.
data
instanceof
Blob
))
{
throw
new
jIO
.
util
.
jIOError
(
"
'getAttachment' (
"
+
argument_list
[
0
].
_id
+
"
,
"
+
argument_list
[
0
].
_attachment
+
"
) on '
"
+
this
.
__type
+
"
' does not return a Blob.
"
,
"
'getAttachment' (
"
+
argument_list
[
0
].
_id
+
"
,
"
+
argument_list
[
0
].
_attachment
+
"
) on '
"
+
this
.
__type
+
"
' does not return a Blob.
"
,
501
);
}
...
...
@@ -407,7 +371,8 @@
JioProxyStorage
.
prototype
.
hasCapacity
=
function
(
name
)
{
var
storage_method
=
this
.
__storage
.
hasCapacity
;
if
((
storage_method
===
undefined
)
||
!
storage_method
.
apply
(
this
.
__storage
,
arguments
))
{
if
((
storage_method
===
undefined
)
||
!
storage_method
.
apply
(
this
.
__storage
,
arguments
))
{
throw
new
jIO
.
util
.
jIOError
(
"
Capacity '
"
+
name
+
"
' is not implemented on '
"
+
this
.
__type
+
"
'
"
,
501
...
...
@@ -426,8 +391,10 @@
if
(
context
.
hasCapacity
(
"
list
"
)
&&
((
options
.
query
===
undefined
)
||
context
.
hasCapacity
(
"
query
"
))
&&
((
options
.
sort_on
===
undefined
)
||
context
.
hasCapacity
(
"
sort
"
))
&&
((
options
.
select_list
===
undefined
)
||
context
.
hasCapacity
(
"
select
"
))
&&
((
options
.
include_docs
===
undefined
)
||
context
.
hasCapacity
(
"
include
"
))
&&
((
options
.
select_list
===
undefined
)
||
context
.
hasCapacity
(
"
select
"
))
&&
((
options
.
include_docs
===
undefined
)
||
context
.
hasCapacity
(
"
include
"
))
&&
((
options
.
limit
===
undefined
)
||
context
.
hasCapacity
(
"
limit
"
)))
{
return
context
.
buildQuery
(
options
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment