@@ -13,12 +13,18 @@ class OSDF(object):
1313 operations (node creation, deletion, queries, etc.)
1414 """
1515
16- def __init__ (self , server , username , password , port = 8123 ):
16+ def __init__ (self , server , username , password , port = 8123 , ssl = False ):
1717 self ._server = server
1818 self ._port = port
1919 self ._username = username
2020 self ._password = password
21- self ._request = HttpRequest (server , username , password , port = port )
21+ self ._ssl = ssl
22+ self ._set_request ()
23+
24+ def _set_request (self ):
25+ self ._request = HttpRequest (self ._server , self ._username ,
26+ self ._password , self ._port ,
27+ self ._ssl )
2228
2329 @property
2430 def server (self ):
@@ -28,8 +34,7 @@ def server(self):
2834 def server (self , server ):
2935 self ._server = server
3036 # Redefine the request object
31- self ._request = HttpRequest (self ._server , self ._username ,
32- self ._password , self ._port )
37+ self ._set_request ()
3338
3439 @property
3540 def port (self ):
@@ -39,8 +44,7 @@ def port(self):
3944 def port (self , port ):
4045 self ._port = port
4146 # Redefine the request object
42- self ._request = HttpRequest (self ._server , self ._username ,
43- self ._password , self ._port )
47+ self ._set_request ()
4448
4549 @property
4650 def username (self ):
@@ -50,8 +54,7 @@ def username(self):
5054 def username (self , username ):
5155 self ._username = username
5256 # Redefine the request object
53- self ._request = HttpRequest (self ._server , self ._username ,
54- self ._password , self ._port )
57+ self ._set_request ()
5558
5659 @property
5760 def password (self ):
@@ -61,8 +64,20 @@ def password(self):
6164 def password (self , password ):
6265 self ._password = password
6366 # Redefine the request object
64- self ._request = HttpRequest (self ._server , self ._username ,
65- self ._password , self ._port )
67+ self ._set_request ()
68+
69+ @property
70+ def ssl (self ):
71+ return self ._ssl
72+
73+ @ssl .setter
74+ def ssl (self , ssl ):
75+ if type (ssl ) is not bool :
76+ raise ValueError ("Invalid value for ssl." )
77+
78+ self ._ssl = ssl
79+ # Redefine the request object
80+ self ._set_request ()
6681
6782 def edit_node (self , json_data ):
6883 """
@@ -122,6 +137,80 @@ def get_node(self, node_id):
122137
123138 return data
124139
140+ def get_nodes_in (self , node_id ):
141+ """
142+ Retrieves the nodes that link to the OSDF node identified by the
143+ given the node ID.
144+
145+ """
146+ url = "/nodes/{}/in" .format (node_id )
147+ osdf_response = self ._request .get (url )
148+
149+ if osdf_response ["code" ] != 200 :
150+ headers = osdf_response ['headers' ]
151+ self .header_error (headers , 'retrieve' , 'node' )
152+
153+ data = json .loads ( osdf_response ['content' ] )
154+
155+ data = self ._byteify (data )
156+
157+ return data
158+
159+ def get_nodes_out (self , node_id ):
160+ """
161+ Retrieves the OSDF nodes that the given node links to (via it's linkage
162+ field).
163+ """
164+ url = "/nodes/{}/out" .format (node_id )
165+ osdf_response = self ._request .get (url )
166+
167+ if osdf_response ["code" ] != 200 :
168+ headers = osdf_response ['headers' ]
169+ self .header_error (headers , 'retrieve' , 'node' )
170+
171+ data = json .loads ( osdf_response ['content' ] )
172+
173+ data = self ._byteify (data )
174+
175+ return data
176+
177+ def get_node_by_version (self , node_id , version ):
178+ """
179+ Given a numerical version number, retrieves an OSDF node's data
180+ as it was at that version.
181+
182+ Returns the parsed form of the JSON document for the node
183+ """
184+ osdf_response = self ._request .get ("/nodes/%s/ver/%s" , (node_id , version ))
185+
186+ if osdf_response ["code" ] != 200 :
187+ headers = osdf_response ['headers' ]
188+ self .header_error (headers , 'retrieve' , 'node' )
189+
190+ data = json .loads ( osdf_response ['content' ] )
191+
192+ data = self ._byteify (data )
193+
194+ return data
195+
196+ def get_schemas (self , namespace ):
197+ """
198+ Retrieves all of the schemas for a particular namespace.
199+ """
200+ url = '/namespaces/%s/schemas/' % namespace
201+
202+ osdf_response = self ._request .get (url )
203+
204+ if osdf_response ["code" ] != 200 :
205+ headers = osdf_response ['headers' ]
206+ self .header_error (headers , 'retrieve' , 'schemas' )
207+
208+ all_schema_data = json .loads ( osdf_response ['content' ] )
209+
210+ schema_data = self ._byteify (all_schema_data )
211+
212+ return all_schema_data
213+
125214 def get_schema (self , namespace , schema_name ):
126215 """
127216 Retrieves a namespace's document schema
@@ -154,7 +243,7 @@ def get_aux_schema(self, namespace, aux_schema_name):
154243
155244 if osdf_response ["code" ] != 200 :
156245 headers = osdf_response ['headers' ]
157- self .header_error (headers , 'retrieve' , 'schema' )
246+ self .header_error (headers , 'retrieve' , 'aux schema' )
158247
159248 aux_schema_data = json .loads ( osdf_response ['content' ] )
160249
0 commit comments