Last active
August 29, 2015 14:01
-
-
Save cfitz/e29389c3f3830f589700 to your computer and use it in GitHub Desktop.
Get all the ASPACE resources and their children too
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
require 'json' | |
require 'rest_client' | |
# point this to your AS backend | |
BACKEND_URL = "http://localhost:8089" | |
TOKEN = { "X-ArchivesSpace-Session" => JSON.parse( RestClient.post "#{BACKEND_URL}/users/admin/login", { password: 'admin'} )["session"] } | |
# Directory to dump JSON files | |
OUTPUT_DIR = "/tmp" | |
# recursively loads the children | |
def rear_child( child ) | |
child["children"].map! { |grandchild| rear_child(grandchild) } | |
# adds the extra json values from the childs full record | |
child.merge! JSON( RestClient.get( "#{BACKEND_URL}/#{ child["record_uri"]}", TOKEN ) ) | |
child | |
end | |
# get a list of repos | |
repos = JSON.parse( RestClient.get "#{BACKEND_URL}/repositories" ).collect { |repo| repo["uri"] } | |
repos.each do |repo| | |
# iterate thru list of resources in the repo | |
JSON(RestClient.get( "#{BACKEND_URL}/#{repo}/resources?all_ids=true", TOKEN )).each do |resource_id| | |
# get the resource | |
resource = JSON(RestClient.get( "#{BACKEND_URL}/#{repo}/resources/#{resource_id}/tree", TOKEN ) ) | |
resource["children"].map! { |child| rear_child( child ) } | |
outfile = File.join(OUTPUT_DIR, "#{resource["record_uri"].gsub("/","_")}.json") | |
puts "Exporting #{resource["record_uri"]} to #{outfile}" | |
File.open(outfile, "w") { |file| file << resource.to_json } | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment