IP Library Granted Patent US 8,959,591
Granted Patent B2
US 8,959,591 · App. 13/633,008 · Granted Feb 17, 2015

Follow location handler and selector functionality in a stateless microkernel web server architecture

Inventor: Matthew D. Bishop (North Vancouver, CA)
Assignee: Elastic Path Software, Inc.
H04L67/42H04L29/06H04L29/08072H04L67/02H04L67/142
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,959,591
App. No.
13/633,008
Granted
Feb 17, 2015
Kind
B2
Abstract

A method of serving a resource to a client via a computer network is provided. The method may include providing a follow location handler logically positioned on a WAN side of an HTTP server. At the follow location handler, the method may include receiving a POST request from the client, and forwarding the POST request to the HTTP server. At the HTTP server, the method may include receiving the POST request, creating a modified data object based upon the form data, generating a link to the modified data object, and returning the link. At the follow location handler, the method may include intercepting the link to the modified data object from the server, sending a GET request to the server to retrieve the modified data object, and, in response, receiving the modified data object. The method may further include forwarding the modified data object to the client.

Claims (62)

1. A method of serving a resource to a client via a computer network, the method comprising:

providing a follow location handler logically positioned on a WAN side of an HTTP server in a server computing system, the server computing system having a stateless microkernel architecture and including one or more link resource servers, the follow location handler being configured to be executed on a same computing device as the HTTP server, or on a computing device connected via a LAN to the computing device on which the HTTP server is executed;

at the follow location handler:

receiving a POST request from the client via the computer network, the POST request being to post form data to a resource, wherein the resource is a data object;

forwarding the POST request to the HTTP server associated with the resource;

at the HTTP server:

receiving the POST request and associated form data;

creating a modified data object based upon the form data;

embedding in the modified data object a content type identifier indicating a content type of the modified data object and a resource location identifier indicating a location of the resource;

providing, via a linking engine, the modified data object to each link resource server of the one or more link resource servers;

in response, receiving first one or more links from each of the one or more link resource servers, wherein each link resource server includes linking rules for one or more object types, wherein each link resource server is configured to examine the content type of the modified data object, and to return the first one or more links according to the linking rules corresponding to the content type of the data object;

embedding the first one or more links in the modified data object;

generating a second link to the modified data object;

returning the second link to the follow location handler, for forwarding to the requesting client;

at the follow location handler:

intercepting the second link to the modified data object from the server;

refraining from forwarding the second link to the requesting client over the WAN;

sending a GET request to the server to retrieve the modified data object via the intercepted second link;

in response, receiving the modified data object; and

forwarding the modified data object to the client, thereby enabling the client to receive the modified data object in response to the POST request, without downloading the second link across the WAN to the client and causing the client to traverse the link across the WAN.

2. The method of claim 1 , further comprising, at the client:

providing a representation of the data object; and

upon receipt of the modified data object from the follow location handler, providing a representation of the modified data object,

wherein the POST request is sent from the client to the sever upon user interaction with the representation of the data object.

3. The method of claim 1 , wherein each link resource server further includes one or more default actions, wherein each link resource server is configured to perform the default actions if the link resource server does not include linking rules for a content type of the data object, wherein the default action includes one or more of providing a link to a status of the resource server, providing a status notification, and providing no information.

4. The method of claim 1 , wherein the data object is a selector data object comprising one or more selection options embedded as links in the data object, each selection option indicating a potential state of the data object, wherein the form data of the POST request corresponds to a particular selection option that was selected by the user.

5. The method of claim 1 , wherein the POST request defines a resource operation to post form data to the resource, wherein the GET request defines a resource operation to retrieve the modified data object, the method further comprising at the HTTP server:

determining if the resource operation defined by the request is authorized; and

if the resource operation is not authorized, failing to create the modified data object.

6. The method of claim 5 , wherein determining if the resource operation defined by the request is authorized comprises:

determining a user identifier based on the request; and

querying an authorization solver to determine whether a user corresponding to the user identifier is authorized to perform the resource operation.

7. A server computing system that has a stateless microkernel architecture, comprising:

an HTTP server;

one or more link resource servers;

a follow location handler logically positioned on a WAN side of the HTTP server, the follow location handler being executed on a same computing device as the HTTP server, or on a computing device connected via a LAN to the computing device on which the HTTP server is executed, the follow location handler being configured to:

receive a POST request from a client via a computer network, a first resource operation being to post form data to a resource, wherein the resource is a data object;

forward the POST request to the HTTP server associated with the resource;

wherein the HTTP server is configured to:

receive the POST request and associated form data;

create a modified data object based upon the form data;

embed in the modified data object a content type identifier indicating a content type of the modified data object and a resource location identifier indicating a location of the resource

provide, via a linking engine, the modified data object to each link resource server of the one or more link resource servers;

in response, receive first one or more links from each of the one or more link resource servers, wherein each link resource server includes linking rules for one or more object types, wherein each link resource server is configured to examine the content type of the modified data object, and to return the first one or more links according to the linking rules corresponding to the content type of the data object;

embed the first one or more links in the modified data object;

generate a second link to the modified data object;

return the second link to the follow location handler, for forwarding to the requesting client;

wherein the follow location handler is further configured to:

intercept the second link to the resource from the HTTP server;

refrain from forwarding the second link to the requesting client over the WAN;

send a GET request to the HTTP server to retrieve the modified data object via the intercepted second link;

in response, receiving the modified data object; and

forwarding the modified data object to the client, thereby enabling the client to receive the modified data object in response to the POST request, without downloading the second link across the WAN to the client and causing the client to traverse the link across the WAN.

8. The server computing system of claim 7 , wherein the data object is usable by the client to provide a representation of the data object, wherein the updated data object is usable by the client to provide a representation of the modified data object, wherein the POST request is sent by the client upon user interaction with the representation of the data object.

9. The server computing system of claim 8 , wherein the data object is a selector data object comprising one or more selection options embedded as links in the data object, each selection option indicating a potential state of the data object, wherein the form data of the POST request corresponds to a particular selection option that was selected by the user.

10. The server computing system of claim 7 , wherein each link resource server further includes one or more default actions, wherein each link resource server is configured to perform the default actions if the link resource server does not include linking rules for the content type of the data object, wherein the default action includes one or more of providing a link to a status of the resource server, providing a status notification, and providing no information.

11. The server computing system of claim 7 , wherein the POST request defines a resource operation to post form data to the resource, wherein the GET request defines a resource operation to retrieve the modified data object, the server computing system further comprising at the HTTP server:

determining if the resource operation defined by the request is authorized; and

if the resource operation is not authorized, failing to create the modified data object.

12. The server computing system of claim 11 , wherein determining if the resource operation defined by the request is authorized comprises:

determining a user identifier based on the request; and

querying an authorization solver to determine whether a user corresponding to the user identifier is authorized to perform the resource operation.

Assignments (7)
RELEASE OF SECURITY INTEREST Recorded Jan 12, 2022
From: NATIONAL BANK OF CANADA
To: ELASTIC PATH SOFTWARE INC.
Reel/Frame 058636/0637 →
SECURITY INTEREST Recorded Jan 10, 2022
From: ELASTIC PATH SOFTWARE INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 058589/0131 →
SECURITY INTEREST Recorded Oct 28, 2019
From: ELASTIC PATH SOFTWARE INC.
To: NATIONAL BANK OF CANADA
Reel/Frame 050840/0942 →
RELEASE OF SECURITY INTEREST Recorded Nov 16, 2018
From: COMERICA BANK
To: ELASTIC PATH SOFTWARE, INC.
Reel/Frame 047530/0021 →
SECURITY INTEREST Recorded Mar 6, 2015
From: ELASTIC PATH SOFTWARE INC.
To: COMERICA BANK
Reel/Frame 035101/0244 →
CORRECTIVE ASSIGNMENT TO CORRECT THE LIST OF ASSIGNORS TO INCLUDE ASHLEY DOYLE THOMAS AND JEREMY HALFORD SKELTON PREVIOUSLY RECORDED ON REEL 029057 FRAME 0318. ASSIGNOR(S) HEREBY CONFIRMS THE FULL LIST OF ASSIGNORS AS MATTHEW D. BISHOP, ASHLEY DOYLE THOMAS, AND JEREMY HALFORD SKELTON. Recorded Jun 5, 2013
From: BISHOP, MATTHEW D.; THOMAS, ASHLEY DOYLE; SKELTON, JEREMY HALFORD
To: ELASTIC PATH SOFTWARE, INC.
Reel/Frame 030571/0953 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 1, 2012
From: BISHOP, MATTHEW D.
To: ELASTIC PATH SOFTWARE, INC.
Reel/Frame 029057/0318 →
Continuity (2)
Provisional Application 61584037 · Jan 6, 2012
Related Publication 20130179945A1 · Jul 11, 2013