This gem provides a high-level client for navigating Medusa's main entity tree using its REST API.
Medusa::Repository
|
|
--> Medusa::Collection
|
|
--> Medusa::FileGroup -------
| | |
| V |
--> Medusa::Directory ---
|
|
--> Medusa::File
Add one of these lines to your application's Gemfile:
gem 'medusa-client', git: 'https://github.com/medusa-project/medusa-client.git'
gem 'medusa-client', path: '/path/to/medusa-client'
And then invoke:
$ bundle
By default, configuration is obtained from the MEDUSA_BASE_URL
,
MEDUSA_USER
, and MEDUSA_SECRET
environment variables. But you can also
assign a configuration hash to Medusa::Client.configuration
via Ruby. Here is
an example involving a Rails initializer:
# Put this in config/initializers/medusa-client.rb
Medusa::Client.configuration = {
medusa_base_url: "https://...",
medusa_user: "my-user",
medusa_secret: "my-secret"
}
Medusa::Client
is responsible for all of the communication with Medusa, but
it's mostly used behind-the-scenes. Still, it can do a little on its own:
client = Medusa::Client.instance
# Get the class of a Medusa resource by UUID
client.class_of_uuid("some medusa UUID")
# Get the URL of a Medusa resource by UUID
client.url_for_uuid("some medusa UUID")
More likely you will want to use the higher-level classes to navigate the
entity tree. Here is an example where we walk across a whole tree, starting at
its root, which is a Medusa::Repository
:
# Get a repository by its ID
repo = Medusa::Repository.with_id("some database ID")
# ... or by its UUID
repo = Medusa::Repository.with_uuid("some Medusa UUID")
# For each collection in the repository...
repo.collections.each do |collection|
# And each file group in the collection...
collection.file_groups.each do |file_group|
# If the file group is bit-level, get its root directory...
if file_group.storage_level == 'bit_level'
root_dir = file_group.directory
# And all files and directories contained within.
root_dir.walk_tree do |node|
puts node.relative_key
end
end
end
end
To update the documentation on GitHub Pages, invoke
bundle exec rake publish_docs
.
The tests are written to interface with the content in Mockdusa. (Repository ID 1 contains all of the test content.)
Mockdusa can be run locally or in Docker (see below). Assuming that it's running locally, you would have to define the following environment variables before running the tests:
MEDUSA_BASE_URL=http://localhost:4567
MEDUSA_USER=medusa
MEDUSA_SECRET=secret
Finally, bundle exec rake test
runs the tests.
You can also run the tests in Docker using docker-compose:
# Get credentials to access ECR from which the Mockdusa image will be pulled
$ aws login
$ docker-compose up --build --exit-code-from medusa-client