mirror of
https://github.com/SirHumza/orbisRPC.git
synced 2026-10-06 09:00:37 +02:00
WIP: integer-ms timestamps (fixes 0:00), jl_new_int port
This commit is contained in:
1 parent
0d8c5cd254
commit
db38c05077
3 files changed
+12
-7
No files matched your search
+6
-5
@@ -108,7 +108,7 @@ static int rx_frame(discord_t *d, char *buf, size_t cap, int *op, int *fin, int6
|
||||
static int send_identify(discord_t *d, const char *token){
|
||||
jl_val_t *root=jl_new_object();
|
||||
if(!root) return -1;
|
||||
jl_obj_set(root,"op",jl_new_number(2));
|
||||
jl_obj_set(root,"op",jl_new_int(2));
|
||||
jl_val_t *dd=jl_new_object();
|
||||
if(!dd){ jl_free(root); return -1; }
|
||||
jl_obj_set(dd,"token",jl_new_string(token));
|
||||
@@ -230,13 +230,14 @@ int discord_set_presence_ex(discord_t *d, const char *state, const char *name,
|
||||
jl_val_t *act=jl_new_object();
|
||||
if(!act) return -1;
|
||||
jl_obj_set(act,"name",jl_new_string(name?name:""));
|
||||
jl_obj_set(act,"type",jl_new_number(0)); /* Playing */
|
||||
jl_obj_set(act,"type",jl_new_int(0)); /* Playing */
|
||||
if(state&&state[0]) jl_obj_set(act,"state",jl_new_string(state));
|
||||
if(title_id&&title_id[0]) jl_obj_set(act,"details",jl_new_string(title_id));
|
||||
if(started_epoch>0){
|
||||
jl_val_t *ts=jl_new_object();
|
||||
if(!ts){ jl_free(act); return -1; }
|
||||
jl_obj_set(ts,"start",jl_new_number((double)started_epoch*1000.0)); /* ms epoch */
|
||||
if(started_epoch > 0 && started_epoch < 100000000000LL)
|
||||
jl_obj_set(ts,"start",jl_new_int(started_epoch*1000LL)); /* integer ms epoch */
|
||||
jl_obj_set(act,"timestamps",ts);
|
||||
}
|
||||
if(application_id&&application_id[0])
|
||||
@@ -274,7 +275,7 @@ int discord_set_presence_ex(discord_t *d, const char *state, const char *name,
|
||||
jl_obj_set(dd,"afk",jl_new_bool(0));
|
||||
jl_val_t *root=jl_new_object();
|
||||
if(!root){ jl_free(dd); return -1; }
|
||||
jl_obj_set(root,"op",jl_new_number(3));
|
||||
jl_obj_set(root,"op",jl_new_int(3));
|
||||
jl_obj_set(root,"d",dd);
|
||||
char *s=jl_stringify(root); jl_free(root);
|
||||
if(!s) return -1;
|
||||
@@ -291,7 +292,7 @@ int discord_clear_presence(discord_t *d){
|
||||
jl_obj_set(dd,"afk",jl_new_bool(0));
|
||||
jl_val_t *root=jl_new_object();
|
||||
if(!root){ jl_free(dd); return -1; }
|
||||
jl_obj_set(root,"op",jl_new_number(3));
|
||||
jl_obj_set(root,"op",jl_new_int(3));
|
||||
jl_obj_set(root,"d",dd);
|
||||
char *s=jl_stringify(root); jl_free(root);
|
||||
if(!s) return -1;
|
||||
|
||||
+3
-2
@@ -252,7 +252,7 @@ static int emit(jl_val_t *v, char **out, size_t *cap, size_t *len){
|
||||
case JL_NULL: { size_t l=4; if(ensure_capacity(out,cap,*len+l+1)<0)return -1; memcpy(*out+*len,"null",4);*len+=4; return 0; }
|
||||
case JL_BOOL: { const char*s=v->num?"true":"false"; size_t l=strlen(s);
|
||||
if(ensure_capacity(out,cap,*len+l+1)<0)return -1; memcpy(*out+*len,s,l);*len+=l; return 0; }
|
||||
case JL_NUMBER: snprintf(buf,sizeof buf,"%.17g",v->num); break;
|
||||
case JL_NUMBER: if(v->num_is_int) snprintf(buf,sizeof buf,"%lld",(long long)v->inum); else snprintf(buf,sizeof buf,"%.17g",v->num); break;
|
||||
case JL_STRING: return escstr(v->str,out,cap,len);
|
||||
case JL_ARRAY:{
|
||||
size_t l=*len+1; if(ensure_capacity(out,cap,l+1)<0)return -1; (*out)[(*len)++]='[';
|
||||
@@ -298,7 +298,8 @@ jl_val_t *jl_new_string(const char *s){
|
||||
v->strlen=strlen(v->str);
|
||||
return v;
|
||||
}
|
||||
jl_val_t *jl_new_number(double n){ jl_val_t *v=newval(JL_NUMBER); if(v)v->num=n; return v; }
|
||||
jl_val_t *jl_new_number(double n){ jl_val_t *v=newval(JL_NUMBER); if(v){v->num=n; v->num_is_int=0;} return v; }
|
||||
jl_val_t *jl_new_int(int64_t n){ jl_val_t *v=newval(JL_NUMBER); if(v){v->num=(double)n; v->num_is_int=1; v->inum=n;} return v; }
|
||||
jl_val_t *jl_new_bool(int b){ jl_val_t *v=newval(JL_BOOL); if(v)v->num=b?1:0; return v; }
|
||||
jl_val_t *jl_new_null(void){ return newval(JL_NULL); }
|
||||
jl_val_t *jl_new_object(void){ return newval(JL_OBJECT); }
|
||||
|
||||
@@ -9,6 +9,8 @@ typedef struct jl_val {
|
||||
char *str; /* string text OR object-entry key */
|
||||
size_t strlen;
|
||||
double num;
|
||||
int num_is_int;
|
||||
int64_t inum;
|
||||
struct jl_val *child; /* object: first pair ; array: first elem */
|
||||
struct jl_val *next; /* object pair chain OR array elem chain */
|
||||
int32_t count;
|
||||
@@ -23,6 +25,7 @@ jl_val_t *jl_arr_at(const jl_val_t *arr, size_t i);
|
||||
char *jl_stringify(const jl_val_t *v);
|
||||
jl_val_t *jl_new_string(const char *s);
|
||||
jl_val_t *jl_new_number(double n);
|
||||
jl_val_t *jl_new_int(int64_t n);
|
||||
jl_val_t *jl_new_bool(int b);
|
||||
jl_val_t *jl_new_null(void);
|
||||
jl_val_t *jl_new_object(void);
|
||||
|
||||
Reference in new issue
Block a user