Finnegans
Installation
Add this line to your application's Gemfile:
gem 'finnegans'
And then execute:
$ bundle
Or install it yourself as:
$ gem install finnegans
Setup
You should first configure the namespace of the endpoints, by doing:
Finnegans.setup do |config|
config.resources_namespace = "personal"
end
In a Rails environment make sense to place this in an initializer.
This will help to identify the relevant resources expose by Finnegans. On the App Builder -> Diccionario de APIs you should declare each relevant endpoint like personalSomeOtherName
. Also this will allow to avoid collisions with other exposed APIs endpoints.
Usage
Everything is done via an instance of Finnegans::Client
, to instantiate one you need to:
client_args = {
client_id: "", # Client Id for your user. You can generate them in your user profile and clicking on "Keys api"
client_secret: "", # Client Secret for your user. You can generate them in your user profile and clicking on "Keys api"
base_url: "" # This is the Base URL of the api. Something similar to 'https://X.teamplace.finneg.com/XXX/api/'
}
client = Finnegans::Client.new(client_args)
With this client
you can get make requests to the API or initialize_namespaced_resources
, like:
client.initialize_namespaced_resources
and also if at this point you realize that you need a new namespaced resource in the API, you can run:
client.initialize_namespaced_resources(refresh: true)
to recreate the resources on the client instance.
This method (initialize_namespaced_resources
) dynamically defines instance methods on the client
and initialize them as an instanced of Finnegans::Resource
. So for example, if you have an API endpoint like personalProducts
(the personal is an arbitrary name, could be whatever you want but must be the same that you specify in the Finnegans.setup
block) that are Tipo: Entidad and supports get
and list
then you can do this with the client
:
client.products.list
# or
client.products.get([SOME_ID])
Notice that the method in the client
is the same as the non-namespaced part of the API endpoint name. So as you can imagine, if you have another API endpoint called personalProductCategories
then you can call client.product_categories
and get the Finnegans::Resource
instance).
IMPORTANT: The only actions that are supported for now are :get and :list.
If the API endpoint is not a Tipo: Entidad but a Tipo: Viewer the only method expose in the resource is .reports
so you can call:
client.some_viewer.reports # The API endpoint name in this case, as you guessed, personalSomeViewer
TO-DOs
- Add
specs
for everything - Add the other actions (:insert, :update, :delete)
Development
After checking out the repo, run bin/setup
to install dependencies. Then, run rake spec
to run the tests. You can also run rake console
for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install
.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/nilusorg/finnegans.
License
The gem is available as open source under the terms of the MIT License.