https://github.com/dkam/rakuten_product_api
https://github.com/dkam/rakuten_product_api
Last synced: 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/dkam/rakuten_product_api
- Owner: dkam
- License: mit
- Created: 2021-02-14T13:22:00.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2022-06-09T04:39:59.000Z (almost 3 years ago)
- Last Synced: 2025-03-07T09:47:41.318Z (3 months ago)
- Language: Ruby
- Size: 62.5 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# RakutenProductApi
To experiment with this library, run `bin/console` for an interactive prompt.
## API Documentation
The Rakuten Product API documentation can be found at the following links.
- [Tryout Guide](https://developers.rakutenadvertising.com/guides/try_out_apis)
- [Product Search](https://developers.rakutenadvertising.com/guides/product_search)
- [API Keys](https://developers.rakutenadvertising.com/default/dashboard/applications/)## Installation
Add this line to your application's Gemfile:
```ruby
gem 'rakuten_product_api'
```And then execute:
$ bundle install
Or install it yourself as:
$ gem install rakuten_product_api
## Usage
The library comes with `bin/console` which can be used to explore the client and api. If there is a local `./config.rb` the console script will load it.
To configured the library for Rails, create an initializer file `config/initializers/rakuten.rb`
```ruby
RakutenProductApi.configure do |config|
config.sid = 'your-site-id'
config.client_id = 'your-client-id'
config.client_secret = 'your-client-secret'
end
```Once you have configured the library, you can create a client.
```ruby
client = RakutenProductApi::Client.newclient.sid
=> "your-site-id"
```This client should be threadsafe. Configuration values are local to your instance.
### Authentication
This library needs to query the API to retreive an `access_token` which has an `access_token_expires_at` time, prior to which, the library will refresh the tokenYou can initialise the library with the `access_token` and `access_token_expires_at` values to avoid this lookup. If the `access_token_expires_at` is nil or in the past, the library will fetch the value so you can safely cache this value and use it without checking it's expiry.
```ruby
client = RakutenProductApi::Client.new(access_token: 'abcd1234', access_token_expires_at: 1613362973)client.endpoint
=> "https://api.linksynergy.com"client.access_token
=> "abcd1234"
````## Querying
### Search for keywords:You can specify which merchants to query by using mid paramater. For example Kobo Australia would be: `mid: 38131`
```ruby
results = client.search(keyword: 'Murderbot', mid: 38131)
results.items.count
=> 7results.items[0].merchant
=> "Rakuten Kobo Australia"results.items[0].isbn
=> "9781250185464"results.items[0].title
=> "Exit Strategy"results.items[0].price
=> ["15.06", "AUD"]results.items[0].rrp
=> ["18.70", "AUD"]
```### Search for ISBNs:
You can specify which merchants to query by using `mid: 38131`
```ruby
results = client.search(keyword: '9781501977824', mid: 38131)
results.items[0].gtin
=> "9781501977824"
results.items[0].title
=> "All Systems Red"
```The API also allows other attribute:
* exact
* one
* none
* sort & sorttypeWhen using sort, you must also use sorttype ( 'asc' or 'dsc'). See the documentation for more.
## TODO
This library implement the parts I need. For example, it doesn't handle paging through results as I don't need it, but I'm happy to accept pull request.
## Notes
* ISBN is taken from either the `sku` or the `keywords` fields and mached against a regular expression `/97[98]\d{10}/` as there's no specific field for it.
* Condition is guessed by looking for the string "Used" in the description. This is a terrible idea, but there is no field for condition.
* This library aliases rrp -> price and price -> saleprice. When sorting you need to use the original attribute names ( price / saleprice )## Development
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
If you create a file `config.rb`, it will be loaded by `bin/console`, allowing you to configure it automatically.
```ruby
RakutenProductApi.configure do |config|
config.sid = 'your-site-id'
config.username = 'your-rakuten-username'
config.password = 'your-rakuten-password'
config.consumer_key = 'your-consumer-key'
config.consumer_secret = 'your-consumer-secret'
end
```To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
## Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/dkam/rakuten_product_api.
## License
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).