![Oracle Drags Its Feet in the JavaScript Trademark Dispute](https://cdn.sanity.io/images/cgdhsj6q/production/919c3b22c24f93884c548d60cbb338e819ff2435-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
This gem provides a Ruby wrapper around the Brickset (v2) API, using HTTParty. Brickset is a library to access the Brickset API in an easy way. It wraps all of the methods, which are described in the official documentation. The Brickset API by default responds with XML. This gem maps the XML responses to Ruby objects using HappyMapper.
Add this line to your application's Gemfile:
gem 'brickset_api', require: 'brickset'
And then execute:
$ bundle
Or install it yourself as:
$ gem install brickset_api
You can retrieve an API key from the official Brickset site. Just follow the instructions and once you've received the API key move on to the next step.
In order for you to use the Brickset gem, you'll need to configure the API key you've requested in the previous step. If you're using Rails, you could add the following to e.g. config/initializers/brickset.rb
:
Brickset.configure do |config|
config.api_key = '<API_KEY>'
end
That's it. You're now ready to start using this gem.
Using Brickset is easy. All you need to know is that all calls go through the Brickset::Client
class. Most of the API calls provided by the Brickset v2 API require you to sign into Brickset in order for you to retrieve a token (which they call a userHash
). This token
can than be used to call the authenticated API calls and retrieve information of the signed in user.
Now, you're not required to do so, but if you don't, you will only be able to retrieve generic information from the API. User specific information will not be accessible.
In order to retrieve data from the API, we'll need an instance of the Brickset client. So let's create it:
client = Brickset.client
Yeah, that's it.
If you want to retrieve user specific information you'll need a token. You can retrieve one as follows:
token = Brickset.login('<YOUR_USERNAME>', '<YOUR_PASSWORD>')
Now that you have access to the token, provide the client with it and you'll be good to go:
client = Brickset.client(token: token)
That's it.
There are two helper methods that you can use to check whether your API key and token are valid. Both of them will return a Boolean value. You can use them as follows:
client.valid_api_key? # => true
client.valid_token? # => true
Now, let's call our sets
method with Star Wars
(because its awesome, obviously) as a theme:
sets = client.sets(theme: 'Star Wars')
The above call will return all sets that are in the Star Wars
theme. As can be seen on the API page (look for getSets
), there's a default limit of 20 records per page to retrieve. You could change that with the following:
sets = client.sets(theme: 'Star Wars', page_size: 50)
Or navigate to the second page:
sets = client.sets(theme: 'Star Wars', page_number: 2)
Let's say you're looking for the Ultimate Collector Series
sets and more specifically the ones based on the Millenium Falcon
. You can retrieve those with the following example:
sets = client.sets(theme: 'Star Wars', subtheme: 'Ultimate Collector Series', query: 'Millenium Falcon')
At the time of writing this will result in two sets: 10179-1
from 2007 and 75192-1
from 2017. Let's say we want to select the last one to view its data:
sets = client.sets(theme: 'Star Wars', subtheme: 'Ultimate Collector Series', query: 'Millenium Falcon')
set = sets.last # => #<Brickset::Elements::Set:0x000055ad9ddfdd60 @set_id=26725, @number="75192", @number_variant=1, @name="Millennium Falcon", @year="2017", @description=nil, @category="Normal", @theme="Star Wars", @theme_group="Licensed", @subtheme="Ultimate Collector Series", @pieces="7541", @minifigs="8", @image=true, @image_url="https://images.brickset.com/sets/images/75192-1.jpg", @image_filename="75192-1", @thumbnail_url="https://images.brickset.com/sets/thumbs/tn_75192-1_jpg.jpg", @thumbnail_url_large="https://images.brickset.com/sets/small/75192-1.jpg", @brickset_url="https://brickset.com/sets/75192-1", @owned_by_total=5194, @wanted_by_total=4551, @released=true, @rating=5.0, @user_rating=4, @review_count=3, @instructions_count=2, @additional_image_count=61, @last_updated=Thu, 14 Sep 2017, @age_minimum=16, @age_maximum=nil, @notes=nil, @tags=nil, @retail_price_uk="649.99", @retail_price_us="799.99", @retail_price_ca="899.99", @retail_price_eu="799.99", @date_added_to_shop="2018-01-10", @date_removed_from_shop="", @packaging_type="Box", @height=0.0, @width=0.0, @depth=0.0, @weight=0.0, @availability="LEGO exclusive", @ean="", @upc="", @acm_data_count=0, @owned=true, @wanted=true, @number_owned=1, @user_notes="">
set.id # => 26725
set.pieces # => '7541'
set.image_url # => 'https://images.brickset.com/sets/images/75192-1.jpg'
set.additional_image_count # => 61
You could now use additional_images
to retrieve the 61 additional images from the above set. Simply supply the API call with the set ID:
client.additional_images(set.id)
# => [#<Brickset::Elements::AdditionalImage:0x000055ad9e0292b0 @thumbnail_url="https://images.brickset.com/sets/AdditionalImages/75192-1/tn_75192_1to1_jpg.jpg", @thumbnail_url_large=nil, @image_url="https://images.brickset.com/sets/AdditionalImages/75192-1/75192_1to1.jpg">, #<Brickset::Elements::AdditionalImage:0x000055ad9e027d98 @thumbnail_url="https://images.brickset.com/sets/AdditionalImages/75192-1/tn_75192_alt10_jpg.jpg", @thumbnail_url_large=nil, @image_url="https://images.brickset.com/sets/AdditionalImages/75192-1/75192_alt10.jpg">, ...]
It really is that easy. Need a specific method? Look for them in the lib/brickset/api
directory.
You're very welcome to contribute to this gem. To do so, please follow these steps:
bin/setup
git checkout -b my-new-feature
bundle exec rspec
and make sure everything is covered with RSpecgit commit -am 'Added new feature'
git push origin my-new-feature
You can run bin/console
for an interactive prompt that will allow you to experiment.
Copyright 2018 Kevin Tuhumury. Released under the MIT License.
FAQs
Unknown package
We found that brickset_api demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.