The invention relates to methods for publishing public and private content.
The last few years has seen tremendous growth in the use of Extensible Markup Language (XML) based feed formats to publish content. Well known XML based feed formats include the Really Simple Syndication (RSS) format and the Atom Syndication Format (Atom). Publishers use a feed format to create a “feed.” As used herein a “feed” encompasses any “data comprising content and meta-data (e.g., one or more tags) associated with the content.” Once a feed is created, the feed can be published. Publishing a feed may be accomplished by pushing the feed to subscribers and/or by associating the feed with a uniform resource locator (URL) and making the feed's URL available to subscribers so that the subscribers can use the feed's URL pull the feed from a server.
A problem arises when a publisher desires to publish a logical set of content that includes both private content (e.g., content that the publisher desires to publish to only a limited set of entities, such as the publisher's friends and/or family) and public content (i.e., any non-private content). With current technology, the publisher would have to create and publish two feeds: (1) a public feed that contains only the public content and (2) a private feed that contains the private content (and, optionally, the public content).
There is a need, therefore, to enable publishers to be able to publish in a simple and easy manner a set of content that includes both public content and private content.
Particular embodiments of the disclosed solution provide a method, apparatus and computer program product that enables a publisher to publish in a simple and easy manner a set of content that includes both public content and private content. In some embodiments, this advantageous solution is achieved by implementing a multi-step publishing process. In one step, the publisher publishes a feed that contains: (1) the public content and (2) information advertising the existence of the private content and the scope of the private content (e.g., information identifying the entities that have authorization from the publisher to access the private content). In another step, the publisher stores the private content on a server accessible to the authorized entities. In another step, an authorized entity that has received the feed may pull the private content from the server. Advantageously, in this manner, a publisher can publish a set of content that contains public and private content without having to create and publish more than one feed.
Other advantages may also be achieved with various embodiments of the solution. For example, embodiments may provide fine grained policy control over feed content such that any uniquely identifiable piece of content of a feed can be policy controlled. Additionally, there need be no requirement as to how scopes are defined. That is, each publisher can define her own set of scopes, independent of other publishers' scopes. Moreover, scopes may be dynamic (e.g., added as needed). Solutions described herein are also compatible with current feed standards.
In one particular aspect, a method for publishing public content and private content associated with the public content is provided. In some embodiments, the method includes receiving content from a publisher, where the content includes public content and a piece of private content associated with the public content. The private content is then stored in a data store and creating a public feed is created. The public feed includes the public content and information indicating that the private content is available to be accessed by an authorized entity, but the public feed does not include the private content. Next, the public feed is published. Next, a request for the private content is received from a device operated by or on behalf of an entity. Next, in response to receiving the request, a determination is made as to whether the entity is authorized to access the requested private content. In response to determining that the entity is authorized to access the private content, the requested private may be transmitted to the device that requested the private content.
In some embodiments, the method also includes creating a private feed prior to creating the public feed. In such embodiments, the private feed includes the public content and the private content, a first tag associated with the public content, and a second tag associated with the private content. The private content may be provided to a feed server that determines whether the feed contains private content. If the feed server determines that the feed contains private content, the feed server may (i) create the public feed, wherein the public feed includes the public content contained in the private feed and the first tag associated with the public content, but does not include the private content contained in the private feed and (ii) store the private content such that the private content is not publically accessible.
The step of determining whether the private feed contains private content may include parsing the second tag to determine whether the second tag includes a predetermined attribute, and, if the second tag includes the predetermined attribute, then determining the value of the attribute.
In some embodiments, the public feed comprises a tag associated with the private content that contains an attribute having a value that identifies the entities that have the authorization to access the private content.
In some embodiments, the step of publishing the public feed comprises pushing the public feed to one or more entities and/or storing the public feed such that an entity may download the public feed.
In some embodiments, the method also includes: assigning a unique identifier to the private content; storing the unique identifier together with the private content; and including the unique identifier in the public feed as a value of an attribute of a tag included in the public feed that is associated with the private content.
In some embodiments, the content received from the publisher further comprises a second piece of private content, and the method also includes the steps of: assigning a first identifier to the first piece of private content and the second piece of private content; storing the unique identifier together with the first and second pieces of private content; and including the unique identifier in the public feed as a value of an attribute of a tag included in the public feed that is associated with the first and second pieces of private content. The first piece of private content has a first scope and the second piece of private content may have a second scope that is different than the first scope.
In another aspect, the solution provides a computer program product for publishing public content and private content associated with the public content. In some embodiments, the computer program product includes a computer readable medium storing computer readable program code. In some embodiments, the computer readable program code includes: (i) a set of instructions for receiving a private feed comprising a first tag containing public content and a second tag containing a piece of private content; (ii) a set of instructions for storing the private content in a data store; and (iii) a set of instructions for creating a public feed comprising (a) the public content and (b) information indicating that the private content is available to be accessed by an authorized entity, but not comprising the private content. The code may also include: (iv) a set of instructions for publishing the public feed; (v) a set of instructions for determining whether an entity is authorized to access the requested private content in response to receiving from a device a message sent by or on behalf of the entity; and (vi) a set of instructions for transmitting to the device the requested private content in response to determining that the entity is authorized to access the private content.
In another aspect, there is provided a method for processing a public feed. The method may be performed by a feed reader. In some embodiments, the method includes: receiving a public feed and parsing the public feed to determine whether a server is storing private content associated with the public feed. In response to determining that the server stores the private content, the feed reader determines (a) the scope of the private content and (b) whether an entity falls within the scope of the private content, and transmits a request to the server in response to determining that the entity falls within the scope of the private content. After transmitting the request, the feed reader receives the private content from the server.
In another aspect, there is provided a computer program product for processing a public feed, where the computer program product includes a computer readable medium storing computer readable program code. In some embodiments, the computer readable program code includes a set of instructions for receiving a public feed, a set of instructions for parsing the public feed to determine whether a server is storing private content associated with the public feed, a set of instructions for determining the scope of the private content, a set of instructions for determining whether an entity falls within the scope of the private content, a set of instructions for transmitting a request to the server in response to determining that the entity falls within the scope of the private content, and a set of instructions for receiving the private content after transmitting the request.
The above and other aspects and embodiments are described below with reference to the accompanying drawings.
The accompanying drawings, which are incorporated herein and form part of the specification, illustrate various embodiments of the present invention and, together with the description, further serve to explain the principles of the invention and to enable a person skilled in the pertinent art to make and use the invention. In the drawings, like reference numbers indicate identical or functionally similar elements.
Referring now to
Referring now to
As shown in
In the illustrated example, publisher 101 desires to publish some photographs from a recent travel adventure. More specifically, in the example shown, publisher 101 has some photographs that anyone should be able to view (e.g., “Photo 1”), some photographs that only friends and/or family should be able to view (e.g., “Photo 2”), and some photographs that only friends should be able to view (e.g., “Photo 3”). Additionally, the photograph summary information should be published to everyone.
In some embodiments, interface 300 may be implemented as a web page. After inputting information into interface 300, publisher 101 may click on the “publish” button 301, which, in the case were interface 300 is a web page, cause the publisher's web page browser to transmit to CMS 202 the inputted content 291 as well as the inputted scope information 290 for each piece of private content (e.g., information identifying the entities that have authorization from the publisher to access the private content).
Upon receiving content 291 and the scope information 290, CMS 202 uses the content 291 and scope information 290 to create a feed 292 that contains some or all of the content. In this example, we shall assume that feed 292 contains all of the content 291. Since feed 292 contains not only the public content, but also the private content, feed 292 is considered a “private feed.” The private feed 292 may be provided to feed server 204.
Referring now to
In some embodiments, tags that delimit only public content (e.g., <img> tag 402) may also have a scope attribute with the value set to, for example, “public.” If a tag does not contain a scope attribute-value pair, then it may inherent its parent's scope. For example, in the private feed 292 shown in
In some embodiments, feed server 204, in direct response to obtaining feed 292 from CMS 202, processes feed 292 to, among other things, remove private content 293 from the private feed 292, thereby forming a public feed version 294 of the private feed. The removed private content 293 is then stored in the data store 206. The public feed 294 may also be stored in data store 206 and/or pushed to one or more subscribers of the feed.
Referring now to
As also shown in the example public feeds 294, feed server 204 may modify one or more of the tags contained in private feed 292. Referring to example public feed 294a, it can be seen that feed server 202 has added a scope attribute-value pair to <content> tag 410. The value that is assigned to the scope attribute that has been added to the <content> tag 410 is a sting that identifies the entities that are authorized to access at least some of the private content contained within the <content> tag 410. Additionally, as shown in example 294a and 294, feed server 204 may assign an identifier (“id”) to each piece of private content and include an “id” attribute-value pair in the tags present in the public feed that contain private content. As example public feed 294a illustrates, feed server 204 has (i) assigned the value of “111” to the private content that was contained within the <content> tag 410, (ii) added an “id” attribute to tag 410, and (iii) set the value of the “id” attribute to the assigned value (i.e., “111”). Likewise As example public feed 294b illustrates, feed server 204 has (i) assigned the value of “112” to the private content that was contained within the <img> tag 404 and assigned the value of “113” to the private content that was contained within the <img> tag 406, (ii) added an “id” attribute to tags 404 and 406, and (iii) set the value of the “id” attributes to the assigned values (i.e., “112” and “113,” respectively).
As discussed above, feed server 204 stores in data store 206 the private content removed from private feed 292. Additionally, in embodiments where feed server 204 assigns an id value to the private content, feed server 204 may also store with the private content the assigned id value, which may be used as an index to retrieve the private content from data store 206. Using public feed 294b as an example, feed server 204, for each of <img> tags 404 and 406, may store in data store 206 a record having at least two fields: a first field for storing the id value assigned to the private content contained in the tag and a second field for storing the private content itself.
Referring now to
Referring now to
Referring now to
In step 810, feed server 204, for each tag included in the received feed, parses the tag to determines the value assigned to the tag's scope attribute. If a tag does not have an explicitly defined scope attribute, then feed server 204 will assume that the tag inherits its scope attribute from its parent. In step 812, feed server 204 propagates scopes upwards from child tags to parent tags if the child tag has a scope not specified in the parent tag. This is illustrated in
In step 818, feed server 204 creates a public feed based on the received feed. For example, in step 818, feed server 204 may create a copy of the received feed and then remove from the copy all of the private content, thereby creating the public feed. In addition, feed server 204, as discussed above, may add to the public feed the identifiers assigned to the private content as well as scope information for the private content.
After the public feed is published, feed server 204 may receive from a feed reader operating on behalf of an entity a request for private content associated with the published public feed (step 822). In step 824, feed server 204 determines whether the entity is authorized to access the private content. If not, then feed server 204 may transmit to the feed reader a request denied message (step 826), otherwise feed server 204 may transmit to the feed reader the requested private content. (step 828)
Referring now to
In step 908, feed reader 104 determines the scope of the private content (e.g., feed reader 104 determines the entities that have authorization to access the private content). In some embodiments, where there are several pieces of private content associated with the public feed, feed reader determines the scope of each piece of private content. In some embodiments, the scope of a piece of private content is determined by parsing a tag that contains the piece of private content to extract the value assigned to a particular attribute of the tag (e.g. the “scope” attribute). In some embodiments, the value of this particular attributes defines the scope of the particular piece private content. For example, if we assume feed reader 104 received public feed 294b (see
In step 910, feed reader determines whether the entity on whose behalf feed reader 104 is operating matches the scope of any of the pieces of private content. For example, in some embodiments, feed reader 104 may have access (direct or indirect) to the list of entities that are on the publisher's “friends” list. Thus, for example, if the entity on whose behalf feed reader 104 is operating is identified on the friends list, then, feed reader 104 will determine that the entity is authorized to access those pieces of private content whose scope includes “friends.” If feed reader 104 determines that the entity on whose behalf feed reader 104 is operating matches the scope of any of the pieces of private content, then process 900 may proceed to step 912.
In step 912, feed reader 104 creates a request message requesting the private content that the entity has authorization to access and transmits to FPA 102 the request message. The request message may contain a string identifying the private content. This string may include an identifier associated with received public feed 294 (e.g., some or all of the content contained in <id> tag 491) and/or an id value assigned to the private content (e.g. the value of the “id” attribute of the tag associated with the private content). Using public feed 294b as an example, if feed reader 104 may request the private content associated with <img> tag 406 by creating and transmitting a request message that contains the following identifier string, which may uniquely identify the private content associated with <img> tag 406: “mysite.com/travelphotos:113.”
In response to receiving the request, FPA 102 may issues an authentication challenge to feed reader 104. In step 914, feed reader 104 receives the challenge and, in step 91, replies to the challenge by transmitting to FPA 102 a reply message. For example, in some embodiments, in response to receiving the challenge, feed reader 104 may a create a digital signature of a message using a private key belonging to the entity and include this digital signature in the reply message transmitted to FPA 102 in response to the challenge. Assuming, the entity is authenticated, FPA 102 may use the private content identifier string(s) included in the request message to retrieve the requested private content and transmit the requested private content to feed reader 104, which, in step 918, receives the requested private content.
Referring now to
Referring now to
Referring now to
Referring now to
Referring now to
The above describes systems and methods can be applied to any feed type information. For example, a feed using the ATOM Syndication format with the Activity Streams and GeoRSS extensions can be used.
The ATOM entry 1502 shown in
If we on the other hand would have used the following schema for protection: public (the default), semi-protected (the activity-object), and very-protected (sensor information—e.g., gps and noise), then the public feed created from feed 1502 may resemble public feed 1604 (see
While various embodiments of the present invention have been described above, it should be understood that they have been presented by way of example only, and not limitation. Thus, the breadth and scope of the present invention should not be limited by any of the above-described exemplary embodiments. Moreover, any combination of the above-described elements in all possible variations thereof is encompassed by the invention unless otherwise indicated herein or otherwise clearly contradicted by context.
Additionally, while the processes described above and illustrated in the drawings are shown as a sequence of steps, this was done solely for the sake of illustration. Accordingly, it is contemplated that some steps may be added, some steps may be omitted, the order of the steps may be re-arranged, and some steps may be performed in parallel.