Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
This is a pretty basic api wrapper for Sensis searching.
For more information on Sensis see their developer site: http://developers.sensis.com.au/
gem install sensis
You can get a free api key at http://developers.sensis.com.au/
Note - all methods (search, get_listing_by_id and report) all take an additional key: :env => "test" or "prod". This decides if the test endpoint or the production endpoint will be used. It defaults to "test". You can specify this in the config if you don't want to pass it.
All results can be accessed by their hash values or by method names... example:
res["code"] == res.code
res["results"].size == res.results.size
If you don't want to pass your api_key or endpoint env every time you can put it config/sensis.yml
development:
api_key: abcdefg
env: test
test:
api_key: abcdefg
env: test
production:
api_key: abcdefg
env: prod
res = Sensis.search(:key => "your api key", :query => "poker")
Or - if you are using the config...
res = Sensis.search(:query => "poker")
Sensis.search takes a hash of options defined here: http://developers.sensis.com.au/docs/endpoint_reference/Search
Sample Search result set: see http://developers.sensis.com.au/docs/endpoint_reference for more information
{
"results": [
{
"id": "999",
"name": "Bob's Hairdresser",
"categories": [
{
"name": "Hairdressers"
}
],
"primaryAddress" {
"addressLine": "123 Fitzroy Street",
...
}
...
}
...
],
...
"count": 20,
"totalResults": 19791,
"executedQuery": "hairdresser",
"originalQuery": "hairdresser",
"date": "2011-02-28T12:01:02.345+1000",
"time": 10,
"code": 200,
"message": "OK"
}
So - you could do something like:
res.results.first.name == res["results"][0]["name"]
res = Sensis.search(:key => "your api key", :query => "poker")
pages = res.totalResults.to_i / 20
pages.times do |page|
res = Sensis.search(:key => "your api key", :query => "poker", :page => (page +1).to_s)
end
More on paging in the docs http://developers.sensis.com.au/docs/using_endpoints/Pagination
res = Sensis.get_listing_by_id(:key => "your api key", :query => "999")
Or - if you are using the config...
res = Sensis.get_listing_by_id(:query => "999")
Sample result set: see for more information
{
"results": [
{
"businessId": "999",
"businessName": "Hairdresser",
"categories": [
{
"name": "Hairdressers"
}
],
"primaryAddress": {
"addressLine": "123 Fitzroy Street",
},
...
}
],
"count": 1,
"totalResults": 1,
"executedQuery": "999",
"originalQuery": "999",
"date": "2011-02-28T12:01:02.345+1000",
"time": 10,
"code": 200,
"message": "OK"
}
res = Sensis.report(:key => "your api key", :userIp => "192.1.2.3", :userAgent => "Mozilla Firefox",
:userSessionId => "123467890",
:id => "VyY2UiOiJZRUxMT1ciLCJwcm9kdWN0SWQiOiIxMjM0IiwicHJvZHVjdFZlcnNpb24iOiI1Njc4In0")
Or - if you are using the config...
res = Sensis.report(:userIp => "192.1.2.3", :userAgent => "Mozilla Firefox",
:userSessionId => "123467890",
:id => "VyY2UiOiJZRUxMT1ciLCJwcm9kdWN0SWQiOiIxMjM0IiwicHJvZHVjdFZlcnNpb24iOiI1Njc4In0")
You can also include multiple ID's by passing an array
res = Sensis.report(:key => "your api key", :userIp => "192.1.2.3", :userAgent => "Mozilla Firefox",
:userSessionId => "123467890",
:id => ["1","2","3","4"])
Sample report result set: see http://developers.sensis.com.au/docs/endpoint_reference/Report for more information
{
"results": [
{
"id": "999",
"name": "Bob's Hairdresser",
"categories": [
{
"name": "Hairdressers"
}
],
"reportingId":"VyY2UiOiJZRUxMT1ciLCJwcm9kdWN0SWQiOiIx ⤶
MjM0IiwicHJvZHVjdFZlcnNpb24iOiI1Njc4In0",
...
},
{
"id": "1000",
"name": "Jill's Hairdresser",
"categories": [
{
"name": "Hairdressers"
}
],
"reportingId":"eyJib29rSWQiOiJTMDBXIiwibGlzdGluZ05hbW ⤶
UiOiJzdWJzY3JpYmVyTmFtZSIsInNvdXJjZSI6",
...
}
...
],
...
"count": 20,
"totalResults": 19791,
"executedQuery": "hairdresser",
"originalQuery": "hairdresser",
"date": "2011-02-28T12:01:02.345+1000",
"time": 10,
"code": 200,
"message": "OK"
}
clone the code: git clone git://github.com/wiseleyb/Sensis.git
gem install bundler
bundle install
copy spec/dummy/config/sensis.yml.example to sensis.yml
fill in your api_key in sensis.yml
bundle exec rspec spec
If you're working on the gem you can muck around in console by
copy spec/dummy/config/sensis.yml.example to sensis.yml
fill in your api_key in sensis.yml
cd spec/dummy bundle execute rails c
Thank you to jdunwoody for some sample sensis code https://github.com/jdunwoody/SensisSearchApp/blob/master/lib/search_command.rb
Thank you to mikedemers for some cool json -> class method code (class ResponseData) https://github.com/mikedemers/rbing/blob/master/lib/rbing.rb
0.0.1 - initial release 0.0.2 - adding sensis.yml support for storing api_keys and env setting. reverted to ruby -v 1.8.7
FAQs
Unknown package
We found that sensis 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
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.