-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathaspace_python_functions
More file actions
63 lines (50 loc) · 2.19 KB
/
Copy pathaspace_python_functions
File metadata and controls
63 lines (50 loc) · 2.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import requests
import pandas as pd
import os
import urllib
import json
def create_api_ref():
api_ref_csv = "path/to/ref/archives_space_api_reference.csv"
methods = [m for m in pd.read_csv(api_ref_csv)['http_method']]
endpoints = [e for e in pd.read_csv(api_ref_csv)['endpoint']]
api_ref = list(zip(methods, endpoints))
return api_ref
def get_resource_by_id(root, headers, resource_id):
resource_endpoint = 'repositories/2/resources'
resource_id = str(resource_id)
endpoint = os.path.join(root, resource_endpoint, resource_id)
resource = requests.get(endpoint, headers = headers).json()
return resource
def get_object_by_id(root, headers, object_id):
object_endpoint = 'repositories/2/archival_objects'
object_id = str(object_id)
endpoint = os.path.join(root,object_endpoint, object_id)
object_ = requests.get(endpoint, headers = headers).json()
return object_
def search_archives_space(root, headers, query):
search_endpoint = os.path.join(root, 'search?')
parameters = { 'all_ids' : 'true', 'page' : '1', 'page_size' : '20000', 'q' : query}
search_url = search_endpoint + urllib.parse.urlencode(parameters)
request = requests.get(search_url, headers = headers).json()
results = request['results']
return results
def update_resource(root, headers, resource_id, key_to_update, value):
resource_endpoint = 'repositories/2/resources'
resource_id = str(resource_id)
endpoint = os.path.join(root,resource_endpoint, resource_id)
resource = requests.get(endpoint, headers = headers).json()
resource[key_to_update] = value
updated_resource = json.dumps(resource)
status = requests.post(endpoint, headers=headers, data=updated_resource).json()
return status
api_ref = create_api_ref() # helpful api reference...
# Authenticate
root = ''
user = ''
password = ''
session = requests.post(os.path.join(root, 'users', user, 'login?password=' + password)).json()
token = session["session"]
headers = {'X-ArchivesSpace-Session': token, 'Content_Type': 'applications/json'}
# Example Usage
query = "New York City 1920's"
results = search_archives_space(root, headers, query)