https://github.com/basecamp/platform_agent
Parse user agent to deduce the platform
https://github.com/basecamp/platform_agent
Last synced: 11 months ago
JSON representation
Parse user agent to deduce the platform
- Host: GitHub
- URL: https://github.com/basecamp/platform_agent
- Owner: basecamp
- License: mit
- Created: 2019-04-02T00:02:29.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2022-07-22T03:03:07.000Z (almost 4 years ago)
- Last Synced: 2025-07-18T05:34:50.035Z (11 months ago)
- Language: Ruby
- Size: 8.79 KB
- Stars: 125
- Watchers: 11
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: MIT-LICENSE
Awesome Lists containing this project
README
# Platform Agent
Parse user agent to discern the common platforms that UIs are tailored for. Expected that you'll inherit from this to specify native apps.
## Examples
```ruby
class ApplicationPlatform < PlatformAgent
def ios_app?
match? /BC3 iOS/
end
def android_app?
match? /BC3 Android/
end
def mac_app?
match?(/Electron/) && match?(/basecamp3/) && match?(/Macintosh/)
end
def windows_app?
match?(/Electron/) && match?(/basecamp3/) && match?(/Windows/)
end
end
module SetPlatform
extend ActiveSupport::Concern
included do
helper_method :platform
end
private
def platform
@platform ||= ApplicationPlatform.new(request.user_agent)
end
end
class ApplicationController < ActionController::Base
include SetPlatform
end
<% if platform.phone? %>
Do phone specific stuff!
<% end %>
```
## Maintenance Expectations
This library is an extraction from Basecamp that's been sufficient in almost unaltered form for years. While contributions are always welcome, do not expect a lot of feature evolution beyond the basics.
## License
Platform Agent is released under the [MIT License](https://opensource.org/licenses/MIT).