Example #1
0
    def get(self):
        #check the big secret key
        if lindenip.inrange(os.environ['REMOTE_ADDR']) != 'Production':
            self.error(403)
        elif self.request.headers['X-SecondLife-Shard'] != 'Production':
            logging.warning("Attempt while on beta grid %s" %
                            (self.request.headers['X-SecondLife-Shard']))
            self.response.set_status(305)
        elif not distributors.authorized(
                self.request.headers['X-SecondLife-Owner-Key']):
            self.error(403)
        else:
            self.response.headers['Content-Type'] = 'text/plain'
            name = cgi.escape(self.request.get('object'))
            version = cgi.escape(self.request.get('version'))
            giverkey = self.request.headers['X-SecondLife-Object-Key']
            creator = self.request.headers['X-SecondLife-Owner-Key']

            #look for an existing item with that name
            items = FreebieItem2.gql("WHERE name = :1 AND creator = :2", name,
                                     creator)
            item = items.get()
            if item is None:
                newitem = FreebieItem2(name=name,
                                       version=version,
                                       giver=giverkey,
                                       creator=creator)
                newitem.put()
            else:
                item.version = version
                item.giver = giverkey
                item.creator = creator
                item.put()
            self.response.set_status(202)  #accepted
Example #2
0
 def get(self):
     if lindenip.inrange(os.environ['REMOTE_ADDR']) != 'Production':
         self.error(403)
     elif self.request.headers['X-SecondLife-Shard'] != 'Production':
         logging.warning("Attempt while on beta grid %s" % (self.request.headers['X-SecondLife-Shard']))
         self.response.set_status(305)
     elif not distributors.authorized(self.request.headers['X-SecondLife-Owner-Key']):
         self.error(403)
     else:        
         #get the deliveries where giverkey = key provided (this way we can still have multiple givers)
         giverkey = self.request.headers['X-SecondLife-Object-Key']
         pop = cgi.escape(self.request.get('pop'))#true or false.  if true, then remove items from db on returning them
         
         
         deliveries = FreebieDelivery.gql("WHERE giverkey = :1", giverkey)
         #write each out in form <objname>|receiverkey
         response = ""
         for delivery in deliveries:
             #make sure the response is shorter than 2048.  If longer, then stop looping and set last line to "more", so giver will know to request again
             if len(response) > 2000:
                 response += "\nmore"
                 break
             else:
                 response += "%s|%s\n" % (delivery.itemname, delivery.rcptkey)
                 #delete from datastore
                 if pop == 'true':
                     delivery.delete()
         self.response.out.write(response)        
Example #3
0
    def get(self):
        if lindenip.inrange(os.environ['REMOTE_ADDR']) != 'Production':
            self.error(403)
        elif self.request.headers['X-SecondLife-Shard'] != 'Production':
            logging.warning("Attempt while on beta grid %s" %
                            (self.request.headers['X-SecondLife-Shard']))
            self.response.set_status(305)
        elif not distributors.authorized(
                self.request.headers['X-SecondLife-Owner-Key']):
            self.error(403)
        else:
            #get the deliveries where giverkey = key provided (this way we can still have multiple givers)
            giverkey = self.request.headers['X-SecondLife-Object-Key']
            pop = cgi.escape(
                self.request.get('pop')
            )  #true or false.  if true, then remove items from db on returning them

            deliveries = FreebieDelivery.gql("WHERE giverkey = :1", giverkey)
            #write each out in form <objname>|receiverkey
            response = ""
            for delivery in deliveries:
                #make sure the response is shorter than 2048.  If longer, then stop looping and set last line to "more", so giver will know to request again
                if len(response) > 2000:
                    response += "\nmore"
                    break
                else:
                    response += "%s|%s\n" % (delivery.itemname,
                                             delivery.rcptkey)
                    #delete from datastore
                    if pop == 'true':
                        delivery.delete()
            self.response.out.write(response)
Example #4
0
 def get(self):
     #check the big secret key    
     if lindenip.inrange(os.environ['REMOTE_ADDR']) != 'Production':
         self.error(403)
     elif self.request.headers['X-SecondLife-Shard'] != 'Production':
         logging.warning("Attempt while on beta grid %s" % (self.request.headers['X-SecondLife-Shard']))
         self.response.set_status(305)
     elif not distributors.authorized(self.request.headers['X-SecondLife-Owner-Key']):
         self.error(403)
     else:
         self.response.headers['Content-Type'] = 'text/plain'            
         name = cgi.escape(self.request.get('object'))    
         version = cgi.escape(self.request.get('version'))
         giverkey = self.request.headers['X-SecondLife-Object-Key']
         creator = self.request.headers['X-SecondLife-Owner-Key']
         
         #look for an existing item with that name
         items = FreebieItem2.gql("WHERE name = :1 AND creator = :2", name, creator)
         item = items.get()
         if item is None:            
             newitem = FreebieItem2(name = name, version = version, giver = giverkey, creator = creator)
             newitem.put()
         else:
             item.version = version
             item.giver = giverkey
             item.creator = creator
             item.put()
         self.response.set_status(202)#accepted