Abstract:
A method of enabling applications to reference user information is provided, including receiving a request for a user identifier that references a user of the application and sending a second request for the user identifier to a server. The second request may include a second user identifier that references the user and a second authentication token for the second user identifier. Furthermore, the second user identifier and the second authentication token are not accessible by the user. The method includes receiving the user identifier and an authentication token for the first user identifier. The user identifier corresponds to the second identifier; and providing the user identifier and authentication token to the application. A method of enabling an application to identify users associated with a user of the application is provided; the method may include receiving, from the server, user identifiers that reference one or more users scoped to the application.
Abstract:
A method of generating a schema including receiving a data record having a record type name and one or more data values is provided. The data values are associated with data value names. The method includes determining whether a set of existing schemas includes a schema associated with the record type name, determining whether the schema includes an element having the same name as a corresponding data element of the record, and validating the corresponding data element against the schema element. A new schema element is added to the schema, the new schema element having the same name and type as the corresponding data element of the record. The method can further include indexing at least one of the one or more data values, which involves querying the indexed data, forming subscription lists for the data values, and forming a derived data value associated with one or more data values.
Abstract:
Systems and methods are described for rate-limiting a message-sending client interacting with a message service based on dynamically calculated risk assessments of the probability that the client is, or is not, a sender of a spam messages. The message service sends a proof of work problem to a sending client device with a difficulty level that is related to a risk assessment that the client is a sender of spam messages. The message system limits the rate at which a known or suspected spammer can send messages by giving the known or suspected spammer client harder proof of work problems to solve, while minimizing the burden on normal users of the message system by given them easier proof of work problems to solve that can typically be solved by the client within the time that it takes to type a message.
Abstract:
Techniques are disclosed for delivering push subscription notifications in large scale distributed systems. Subscription notifications can be delivered to mobile devices of subscribing users by monitoring, at a server, an application database comprising a data record having one or more data values, detecting, at the server, in accordance with the monitoring, a changed data value, querying a subscription database for a subscription having at least one constant value to be compared to the changed data value in accordance with a trigger condition specified in a trigger template, determining whether the trigger condition is true using the changed data value and the constant value as the values of the first and second variables, respectively, in the at least one comparison; and pushing a notification from the server in response to the trigger condition being true.
Abstract:
Establishing a communication channel via a relay server with reduced setup time. Upon request by an initiating communication device a relay allocation server may allocate a single relay server for use in a communication session between the initiating communication device and one or more recipient communication devices. The relay server may be selected to perform favorably for the initiating communication device. Messaging for establishment of the communication session may be performed using persistent messaging connections, to avoid connection establishment cost. Messaging may also be performed using address tokens to avoid the cost of discovering global IP addresses. Following establishment of the communication session, the relay server may discover the IP address of one or more recipient communication devices, and may initiate reallocation of those devices to another relay server.
Abstract:
A method of enabling applications to reference user information is provided, including receiving a request for a user identifier that references a user of the application and sending a second request for the user identifier to a server. The second request may include a second user identifier that references the user and a second authentication token for the second user identifier. Furthermore, the second user identifier and the second authentication token are not accessible by the user. The method includes receiving the user identifier and an authentication token for the first user identifier. The user identifier corresponds to the second identifier; and providing the user identifier and authentication token to the application. A method of enabling an application to identify users associated with a user of the application is provided; the method may include receiving, from the server, user identifiers that reference one or more users scoped to the application.
Abstract:
Disclosed herein is a technique for providing status feedback on the execution of a database request. The technique involves receiving a database request that defines an operation to be performed on at least one data record stored in a database. The data record is updated in the database in accordance with the operation, and one or more tasks that are to be performed in connection to the operation are scheduled for execution. A first version of a receipt is generated and provided to the application, and includes, for each of the one or more tasks, a status field that indicates a progress of executing the task. The method further includes the steps of, in response to a change in the execution of any of the one or more tasks, updating the status fields to produce a second version of the receipt, which is then provided to the application.
Abstract:
Systems and methods are described for rate-limiting a message-sending client interacting with a message service based on dynamically calculated risk assessments of the probability that the client is, or is not, a sender of a spam messages. The message service sends a proof of work problem to a sending client device with a difficulty level that is related to a risk assessment that the client is a sender of spam messages. The message system limits the rate at which a known or suspected spammer can send messages by giving the known or suspected spammer client harder proof of work problems to solve, while minimizing the burden on normal users of the message system by given them easier proof of work problems to solve that can typically be solved by the client within the time that it takes to type a message.
Abstract:
Techniques are disclosed for delivering push subscription notifications in large scale distributed systems. Subscription notifications can be delivered to mobile devices of subscribing users by monitoring, at a server, an application database comprising a data record having one or more data values, detecting, at the server, in accordance with the monitoring, a changed data value, querying a subscription database for a subscription having at least one constant value to be compared to the changed data value in accordance with a trigger condition specified in a trigger template, determining whether the trigger condition is true using the changed data value and the constant value as the values of the first and second variables, respectively, in the at least one comparison; and pushing a notification from the server in response to the trigger condition being true.
Abstract:
Establishing a communication channel via a relay server with reduced setup time. Upon request by an initiating communication device a relay allocation server may allocate a single relay server for use in a communication session between the initiating communication device and one or more recipient communication devices. The relay server may be selected to perform favorably for the initiating communication device. Messaging for establishment of the communication session may be performed using persistent messaging connections, to avoid connection establishment cost. Messaging may also be performed using address tokens to avoid the cost of discovering global IP addresses. Following establishment of the communication session, the relay server may discover the IP address of one or more recipient communication devices, and may initiate reallocation of those devices to another relay server.