484 lines
12 KiB
JavaScript
484 lines
12 KiB
JavaScript
// the api use bool to return status: fail: return false, true: return data(including true and false)
|
|
// the api use other type to return data: fail: return undefined, true: return data(if the returned value have change be null, return undefined instaed).
|
|
|
|
// var cached_salt = undefined
|
|
|
|
/*
|
|
function ccn_api_common_salt(_username) {
|
|
// true or false
|
|
// gotten salt store in cached_salt.
|
|
var gotten_data = undefined;
|
|
$.ajax({
|
|
url: '/api/common/salt',
|
|
type: "POST",
|
|
async: false,
|
|
data: {
|
|
username: _username
|
|
},
|
|
success: function (data) {
|
|
gotten_data = data;
|
|
}
|
|
});
|
|
|
|
if (IsResponseOK(gotten_data)) {
|
|
cached_salt = gotten_data['data'];
|
|
return true;
|
|
} else return false;
|
|
}
|
|
|
|
function ccn_api_common_login(_username, password) {
|
|
// return true or false, token is managed by this js file self.
|
|
// if cached_salt is undefined, return false directly
|
|
if (typeof(cached_salt) == undefined) return false;
|
|
|
|
var gotten_data = undefined;
|
|
$.ajax({
|
|
url: '/api/common/login',
|
|
type: "POST",
|
|
async: false,
|
|
data: {
|
|
username: _username,
|
|
password: ComputPasswordWithSalt(password, cached_salt)
|
|
},
|
|
success: function (data) {
|
|
gotten_data = data;
|
|
}
|
|
});
|
|
if (IsResponseOK(gotten_data) && gotten_data['data'] != '') {
|
|
ccn_localstorageAssist_SetApiToken(gotten_data['data']);
|
|
cached_salt = undefined;
|
|
return true;
|
|
} else return false;
|
|
}
|
|
*/
|
|
|
|
// ============================================ template
|
|
// all api can be implemented by these 2 function, except 3 token related func.
|
|
// so all api func should use these 2 func except 3 token process api.
|
|
function ccn_api_dataTemplate(_url, _data) {
|
|
// return data or undefined
|
|
var gotten_data = undefined;
|
|
$.ajax({
|
|
url: _url,
|
|
type: "POST",
|
|
async: false,
|
|
data: _data,
|
|
success: function (data) {
|
|
gotten_data = data;
|
|
}
|
|
});
|
|
|
|
if (IsResponseOK(gotten_data) && !(gotten_data['data'] === null)) return gotten_data['data'];
|
|
else return undefined;
|
|
}
|
|
|
|
function ccn_api_boolTemplate(_url, _data) {
|
|
// return true or false
|
|
var gotten_data = undefined;
|
|
$.ajax({
|
|
url: _url,
|
|
type: "POST",
|
|
async: false,
|
|
data: _data,
|
|
success: function (data) {
|
|
gotten_data = data;
|
|
}
|
|
});
|
|
|
|
return (IsResponseOK(gotten_data) && gotten_data['data']);
|
|
}
|
|
|
|
// deserialize & serialize calendar description function
|
|
|
|
function ccn_api_serializeDescription(_description, _color) {
|
|
var sobj = {
|
|
description: _description,
|
|
color: _color
|
|
}
|
|
return JSON.stringify(sobj);
|
|
}
|
|
|
|
function ccn_api_deserializeDescription(strl) {
|
|
try {
|
|
return $.parseJSON(strl);
|
|
} catch(err) {
|
|
return {
|
|
description: "",
|
|
color: DefaultColor
|
|
};
|
|
}
|
|
|
|
}
|
|
|
|
// ====================================================== common
|
|
|
|
function ccn_api_common_webLogin(_username, _password) {
|
|
var gotten_data = undefined;
|
|
$.ajax({
|
|
url: '/api/common/webLogin',
|
|
type: "POST",
|
|
async: false,
|
|
data: {
|
|
username: _username,
|
|
password: _password
|
|
},
|
|
success: function (data) {
|
|
gotten_data = data;
|
|
}
|
|
});
|
|
if (IsResponseOK(gotten_data)) {
|
|
ccn_localstorageAssist_SetApiToken(gotten_data['data']);
|
|
return true;
|
|
} else return false;
|
|
}
|
|
|
|
function ccn_api_common_logout() {
|
|
// return true or false
|
|
var gotten_data = undefined;
|
|
$.ajax({
|
|
url: '/api/common/logout',
|
|
type: "POST",
|
|
async: false,
|
|
data: {
|
|
token: ccn_localstorageAssist_GetApiToken()
|
|
},
|
|
success: function (data) {
|
|
gotten_data = data;
|
|
}
|
|
});
|
|
|
|
if (IsResponseOK(gotten_data) && gotten_data['data']) {
|
|
ccn_localstorageAssist_SetApiToken('');
|
|
return true;
|
|
} return false;
|
|
}
|
|
|
|
function ccn_api_common_tokenValid() {
|
|
// get from local database first, then judge it via post
|
|
// return true or false
|
|
var gotten_token = ccn_localstorageAssist_GetApiToken();
|
|
if (gotten_token == '') return false;
|
|
|
|
var gotten_data = undefined;
|
|
$.ajax({
|
|
url: '/api/common/tokenValid',
|
|
type: "POST",
|
|
async: false,
|
|
data: {
|
|
token: ccn_localstorageAssist_GetApiToken()
|
|
},
|
|
success: function (data) {
|
|
gotten_data = data;
|
|
}
|
|
});
|
|
|
|
if (IsResponseOK(gotten_data) && gotten_data['data']) return true;
|
|
else {
|
|
ccn_localstorageAssist_SetApiToken('');
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// ====================================================== calendar
|
|
|
|
function ccn_api_calendar_getFull(_startDateTime, _endDateTime) {
|
|
return ccn_api_dataTemplate(
|
|
'/api/calendar/getFull',
|
|
{
|
|
token: ccn_localstorageAssist_GetApiToken(),
|
|
startDateTime: _startDateTime,
|
|
endDateTime: _endDateTime
|
|
}
|
|
);
|
|
}
|
|
|
|
function ccn_api_calendar_getDetail(_uuid) {
|
|
return ccn_api_dataTemplate(
|
|
'/api/calendar/getDetail',
|
|
{
|
|
token: ccn_localstorageAssist_GetApiToken(),
|
|
uuid: _uuid
|
|
}
|
|
);
|
|
}
|
|
|
|
function ccn_api_calendar_update(_uuid, _belongTo, _title, _description, _eventDateTimeStart, _eventDateTimeEnd, _loopRules, _timezoneOffset, _lastChange) {
|
|
var data = {};
|
|
if (typeof(_belongTo) != 'undefined')
|
|
data.belongTo = _belongTo;
|
|
if (typeof(_title) != 'undefined')
|
|
data.title = _title;
|
|
if (typeof(_description) != 'undefined')
|
|
data.description = _description;
|
|
if (typeof(_eventDateTimeStart) != 'undefined')
|
|
data.eventDateTimeStart = _eventDateTimeStart;
|
|
if (typeof(_eventDateTimeEnd) != 'undefined')
|
|
data.eventDateTimeEnd = _eventDateTimeEnd;
|
|
if (typeof(_loopRules) != 'undefined')
|
|
data.loopRules = _loopRules;
|
|
if (typeof(_timezoneOffset) != 'undefined')
|
|
data.timezoneOffset = _timezoneOffset;
|
|
|
|
data.token = ccn_localstorageAssist_GetApiToken();
|
|
data.uuid = _uuid;
|
|
data.lastChange = _lastChange;
|
|
return ccn_api_dataTemplate(
|
|
'/api/calendar/update',
|
|
data
|
|
);
|
|
}
|
|
|
|
function ccn_api_calendar_add(_belongTo, _title, _description, _eventDateTimeStart, _eventDateTimeEnd, _loopRules, _timezoneOffset) {
|
|
return ccn_api_dataTemplate(
|
|
'/api/calendar/add',
|
|
{
|
|
token: ccn_localstorageAssist_GetApiToken(),
|
|
belongTo: _belongTo,
|
|
title: _title,
|
|
description: _description,
|
|
eventDateTimeStart: _eventDateTimeStart,
|
|
eventDateTimeEnd: _eventDateTimeEnd,
|
|
loopRules: _loopRules,
|
|
timezoneOffset: _timezoneOffset
|
|
}
|
|
);
|
|
}
|
|
|
|
function ccn_api_calendar_delete(_uuid, _lastChange) {
|
|
return ccn_api_boolTemplate(
|
|
'/api/calendar/delete',
|
|
{
|
|
token: ccn_localstorageAssist_GetApiToken(),
|
|
uuid: _uuid,
|
|
lastChange: _lastChange
|
|
}
|
|
);
|
|
}
|
|
|
|
// ====================================================== collection
|
|
|
|
function ccn_api_collection_getFullOwn() {
|
|
return ccn_api_dataTemplate(
|
|
'/api/collection/getFullOwn',
|
|
{
|
|
token: ccn_localstorageAssist_GetApiToken()
|
|
}
|
|
);
|
|
}
|
|
|
|
function ccn_api_collection_getDetailOwn(_uuid) {
|
|
return ccn_api_dataTemplate(
|
|
'/api/collection/getDetailOwn',
|
|
{
|
|
token: ccn_localstorageAssist_GetApiToken(),
|
|
uuid: _uuid
|
|
}
|
|
);
|
|
}
|
|
|
|
function ccn_api_collection_addOwn(_name) {
|
|
return ccn_api_dataTemplate(
|
|
'/api/collection/addOwn',
|
|
{
|
|
token: ccn_localstorageAssist_GetApiToken(),
|
|
name: _name
|
|
}
|
|
);
|
|
}
|
|
|
|
function ccn_api_collection_updateOwn(_uuid, _name, _lastChange) {
|
|
return ccn_api_dataTemplate(
|
|
'/api/collection/updateOwn',
|
|
{
|
|
token: ccn_localstorageAssist_GetApiToken(),
|
|
uuid: _uuid,
|
|
name: _name,
|
|
lastChange: _lastChange
|
|
}
|
|
);
|
|
}
|
|
|
|
function ccn_api_collection_deleteOwn(_uuid, _lastChange) {
|
|
return ccn_api_boolTemplate(
|
|
'/api/collection/deleteOwn',
|
|
{
|
|
token: ccn_localstorageAssist_GetApiToken(),
|
|
uuid: _uuid,
|
|
lastChange: _lastChange
|
|
}
|
|
);
|
|
}
|
|
|
|
function ccn_api_collection_getSharing(_uuid) {
|
|
return ccn_api_dataTemplate(
|
|
'/api/collection/getSharing',
|
|
{
|
|
token: ccn_localstorageAssist_GetApiToken(),
|
|
uuid: _uuid
|
|
}
|
|
);
|
|
}
|
|
|
|
function ccn_api_collection_deleteSharing(_uuid, _target, _lastChange) {
|
|
return ccn_api_dataTemplate(
|
|
'/api/collection/deleteSharing',
|
|
{
|
|
token: ccn_localstorageAssist_GetApiToken(),
|
|
uuid: _uuid,
|
|
target: _target,
|
|
lastChange: _lastChange
|
|
}
|
|
);
|
|
}
|
|
|
|
function ccn_api_collection_addSharing(_uuid, _target, _lastChange) {
|
|
return ccn_api_dataTemplate(
|
|
'/api/collection/addSharing',
|
|
{
|
|
token: ccn_localstorageAssist_GetApiToken(),
|
|
uuid: _uuid,
|
|
target: _target,
|
|
lastChange: _lastChange
|
|
}
|
|
);
|
|
}
|
|
|
|
function ccn_api_collection_getShared() {
|
|
return ccn_api_dataTemplate(
|
|
'/api/collection/getShared',
|
|
{
|
|
token: ccn_localstorageAssist_GetApiToken()
|
|
}
|
|
);
|
|
}
|
|
|
|
// ====================================================== todo
|
|
|
|
function ccn_api_todo_getFull() {
|
|
return ccn_api_dataTemplate(
|
|
'/api/todo/getFull',
|
|
{
|
|
token: ccn_localstorageAssist_GetApiToken()
|
|
}
|
|
);
|
|
}
|
|
|
|
function ccn_api_todo_add() {
|
|
return ccn_api_dataTemplate(
|
|
'/api/todo/add',
|
|
{
|
|
token: ccn_localstorageAssist_GetApiToken()
|
|
}
|
|
);
|
|
}
|
|
|
|
function ccn_api_todo_update(_uuid, _data, _lastChange) {
|
|
return ccn_api_dataTemplate(
|
|
'/api/todo/update',
|
|
{
|
|
token: ccn_localstorageAssist_GetApiToken(),
|
|
uuid: _uuid,
|
|
data: _data,
|
|
lastChange: _lastChange
|
|
}
|
|
);
|
|
}
|
|
|
|
function ccn_api_todo_delete(_uuid, _lastChange) {
|
|
return ccn_api_boolTemplate(
|
|
'/api/todo/delete',
|
|
{
|
|
token: ccn_localstorageAssist_GetApiToken(),
|
|
uuid: _uuid,
|
|
lastChange: _lastChange
|
|
}
|
|
);
|
|
}
|
|
|
|
// ====================================================== admin
|
|
|
|
function ccn_api_admin_get() {
|
|
return ccn_api_dataTemplate(
|
|
'/api/admin/get',
|
|
{
|
|
token: ccn_localstorageAssist_GetApiToken()
|
|
}
|
|
);
|
|
}
|
|
|
|
function ccn_api_admin_add(_username) {
|
|
return ccn_api_dataTemplate(
|
|
'/api/admin/add',
|
|
{
|
|
token: ccn_localstorageAssist_GetApiToken(),
|
|
username: _username
|
|
}
|
|
);
|
|
}
|
|
|
|
function ccn_api_admin_update(_username, _password, _isAdmin) {
|
|
var data = {};
|
|
if (typeof(_password) != 'undefined')
|
|
data.password = _password;
|
|
if (typeof(_isAdmin) != 'undefined')
|
|
data.isAdmin = _isAdmin;
|
|
|
|
if (Object.getOwnPropertyNames(data).length == 0) return false;
|
|
data.token = ccn_localstorageAssist_GetApiToken();
|
|
data.username = _username;
|
|
return ccn_api_boolTemplate(
|
|
'/api/admin/update',
|
|
data
|
|
);
|
|
}
|
|
|
|
function ccn_api_admin_delete(_username) {
|
|
return ccn_api_boolTemplate(
|
|
'/api/admin/delete',
|
|
{
|
|
token: ccn_localstorageAssist_GetApiToken(),
|
|
username: _username
|
|
}
|
|
);
|
|
}
|
|
|
|
// ====================================================== profile
|
|
|
|
function ccn_api_profile_isAdmin() {
|
|
return ccn_api_boolTemplate(
|
|
'/api/profile/isAdmin',
|
|
{
|
|
token: ccn_localstorageAssist_GetApiToken()
|
|
}
|
|
);
|
|
}
|
|
|
|
function ccn_api_profile_changePassword(_password) {
|
|
return ccn_api_boolTemplate(
|
|
'/api/profile/changePassword',
|
|
{
|
|
token: ccn_localstorageAssist_GetApiToken(),
|
|
password: _password
|
|
}
|
|
);
|
|
}
|
|
|
|
function ccn_api_profile_getToken() {
|
|
return ccn_api_boolTemplate(
|
|
'/api/profile/getToken',
|
|
{
|
|
token: ccn_localstorageAssist_GetApiToken()
|
|
}
|
|
);
|
|
}
|
|
|
|
function ccn_api_profile_deleteToken(_deleteToken) {
|
|
return ccn_api_boolTemplate(
|
|
'/api/profile/deleteToken',
|
|
{
|
|
token: ccn_localstorageAssist_GetApiToken(),
|
|
deleteToken: _deleteToken
|
|
}
|
|
);
|
|
}
|