All Projects → strongself → Fabricio

strongself / Fabricio

Licence: mit
Fetch Fabric.io statistics like never before

Programming Languages

ruby
36898 projects - #4 most used programming language

Projects that are alternatives of or similar to Fabricio

Qbreakpad
Cross-platform Qt crash handler, implemented as wrapper around google-breakpad
Stars: ✭ 115 (-29.01%)
Mutual labels:  crash-reporting
Meter
Library for interacting with MetricKit
Stars: ✭ 134 (-17.28%)
Mutual labels:  crash-reporting
Xcrash
🔥 xCrash provides the Android app with the ability to capture java crash, native crash and ANR. No root permission or any system permissions are required.
Stars: ✭ 148 (-8.64%)
Mutual labels:  crash-reporting
Viafabric
Client-side and server-side ViaVersion implementation for Fabric
Stars: ✭ 115 (-29.01%)
Mutual labels:  fabric
Geckolib
GeckoLib is an animation library for Minecraft Mods, with support for complex 3D keyframe and scriptable math-based animations. Available for Forge and Fabric (1.12, 1.15, 1.16). Supports entity, block, item, armor animations and more.
Stars: ✭ 131 (-19.14%)
Mutual labels:  fabric
Raven Python
Raven is the legacy Python client for Sentry (getsentry.com) — replaced by sentry-python
Stars: ✭ 1,677 (+935.19%)
Mutual labels:  crash-reporting
Hyperledger Typescript Boilerplate
This is a boilerplate that interacts between Hyperledger Fabric Peers and a front end.
Stars: ✭ 109 (-32.72%)
Mutual labels:  fabric
Bugsnag Go
Automatic panic monitoring for Go and Go web frameworks, like negroni, gin, and revel
Stars: ✭ 155 (-4.32%)
Mutual labels:  crash-reporting
Tape
A Simple Traffic Generator for Hyperledger Fabric
Stars: ✭ 131 (-19.14%)
Mutual labels:  fabric
Crashlyticsdemo
Setup Fabric Crashlytics CI friendly
Stars: ✭ 142 (-12.35%)
Mutual labels:  fabric
Fabric Explorer
Fabric-explorer is a simple, powerful, maintainable, open source fabric explorer
Stars: ✭ 117 (-27.78%)
Mutual labels:  fabric
Fabric Gateway Java
Hyperledger Fabric Gateway SDK for Java https://wiki.hyperledger.org/display/fabric
Stars: ✭ 122 (-24.69%)
Mutual labels:  fabric
Sentry Native
Sentry SDK for C, C++ and native applications.
Stars: ✭ 138 (-14.81%)
Mutual labels:  crash-reporting
Loom
Elegant deployment with Fabric and Puppet.
Stars: ✭ 115 (-29.01%)
Mutual labels:  fabric
Dotzu
📱👀 In-App iOS Debugging Tool With Enhanced Logging, Networking Info, Crash reporting And More.
Stars: ✭ 1,802 (+1012.35%)
Mutual labels:  crash-reporting
Antiqueatlas
A Minecraft mod that adds a fancy interactive map item.
Stars: ✭ 110 (-32.1%)
Mutual labels:  fabric
Just Another Android App
An Android base app with loads of cool libraries/configuration NOT MAINTAINED
Stars: ✭ 1,654 (+920.99%)
Mutual labels:  fabric
Fabric
Hyperledger Fabric is an enterprise-grade permissioned distributed ledger framework for developing solutions and applications. Its modular and versatile design satisfies a broad range of industry use cases. It offers a unique approach to consensus that enables performance at scale while preserving privacy.
Stars: ✭ 12,911 (+7869.75%)
Mutual labels:  fabric
Hyperledger Fabric Gm
支持国密加密算法的Hyperledger Fabric版本
Stars: ✭ 152 (-6.17%)
Mutual labels:  fabric
Raven Weapp
Sentry SDK for WeApp
Stars: ✭ 142 (-12.35%)
Mutual labels:  crash-reporting

Fabricio

Gem Version Code Climate Test Coverage

pronounce as [f-ah-bree-see-oh]

A simple gem that fetches mobile application statistics from Fabric.io using its private not publicly opened API.

There is a possibility that in some point of time it may break. Feel free to post an issue and we'll fix it ASAP.

The Story Behind

Fabric.io is a great tool made for mobile application developers. It provides data about standard and out-of-memory crashes, active users, audience growth and a lot more. Unfortunately the only official way to work with this data is using Fabric.io website. That means - no automation and no integrations with other services.

We decided to fix this issue.

Key Features
🍫 Hides the complexity of different Fabric.io APIs behind a simple wrapper.
📚 Provides data about organization, applications and builds.
💥 Shows crash- and out-of-memory- free metrics.
Automatically refreshes session in case of its expiration.
🛠 Provides a simple way of adding your adapter for storing session data in a database of your choice.

Installation

Add this line to your application's Gemfile:

gem 'fabricio'

And then execute:

$ bundle

Or install it yourself as:

$ gem install fabricio

Quick Start

CLI

Commands

App
  # Obtain all app
  fabricio app all

  # Obtain single app
  fabricio app get --app_id 'app_id'

  # Obtain active now count
  fabricio app active_now --organization_id 'org_id' --app_id 'app_id'

  # Obtain single issue
  fabricio app single_issue --app_id 'app_id' --issue_id 'issue_id'

  # Obtain single issue session
  fabricio app issue_session  --app_id 'app_id' --issue_id 'issue_id' --session_id 'session_id'

  # Obtain latest issue session
  fabricio app latest_session --app_id 'app_id'
Build
  # Obtain all builds
  fabricio build all --organization_id 'org_id' --app_id 'app_id'

  # Obtain single build
  fabricio build get --organization_id 'org_id' --app_id 'app_id' --version 'version' --build_number 'build_number'
Version
  # Obtain all versions
  fabricio version all --app_id 'app_id'

  # Obtain top versions               
  fabricio version top --organization_id 'org_id' --app_id 'app_id' --start_time 'timestamp' --end_time 'timestamp'
Organization
  # Obtain organization                  
  fabricio organization all
Other
  # Setup credential                                                      
  fabricio credential

  # Describe available commands or one specific command                                                       
  fabricio help [COMMAND]                                                          

Example

> fabricio credential
Setup credential
We have to know you\'re email from fabric account
email:  test@test.com
Now we want your password. Do not be afraid, it is stored locally
password:
Successful login to TestOrganization
> fabricio organization all
[{"id"=>"424423ac76fa54934e00a09b", "alias"=>"test", "name"=>"Test", "api_key"=>"19ac3e6195b1900ada120c1e0c1230a818626d55", "enrollments"=>{"answers_enhanced_feature_set_enabled_for_new_apps"=>"false", "answers_ip_address_tracking_enabled_for_new_apps"=>"true", "beta_distribution"=>"true"}, "accounts_count"=>100, "mopub_id"=>"11142", "sdk_organization"=>true, "apps_counts"=>{"ios"=>9}, "build_secret"=>"fdda1e597843e25731848bb46eec2cc893ea86847e22d5f44567ecd48ff4e32"}]
> fabricio app all
...

Default values

If your account have only one organization/app then it will be used by default and it is not necessary to set.

fabricio build all

Parsing

You can use jq for parsing json

fabricio version all --app_id 'app_id' | jq 'sort_by(.major)[-1].synthesized_version' "14.0 (131)"

Code

  1. Create a Fabricio::Client object and configure it on initialization.
require 'Fabricio'

client = Fabricio::Client.new do |config|
    config.username = 'your_email'
    config.password = 'your_password'
end
  1. Use this client to query any data you want.
client.app.all # Returns all applications on your account
client.app.get(app_id: 'app_id') # Returns information about specific application
client.app.crashfree(app_id: 'app_id', start_time: '1478736000', end_time: '1481328000', build: 'all') # Returns application crashfree for a given period of time
client.organization.all # Returns information about your organizations
  1. If you want to check the exact server output for a model, you can call json method on it:

client.app.get(app_id: 'app_id').json

You can call a method similar to any key in this hash:

client.app.get(app_id: 'app_id').importance_level

Commands

Organization

client.organization.all

Obtains information about your organizations.

App

client.app.all

Obtains the list of all apps.

client.app.get(app_id: 'app_id')

Obtains a specific app.

client.app.active_now(organization_id: 'organization_id', app_id: 'app_id')

Obtains the count of active users at the current moment.

client.app.daily_new(organization_id: 'organization_id', app_id: 'app_id', start_time: 'start_timestamp', end_time: 'end_timestamp')

Obtains the count of daily new users.

client.app.daily_active(app_id: 'app_id', start_time: 'start_timestamp', end_time: 'end_timestamp', build: 'build')

Obtains the count of daily active users.

client.app.total_sessions(organization_id: 'organization_id', app_id: 'app_id', start_time: 'start_timestamp', end_time: 'end_timestamp', build: 'build')

Obtains the count of sessions.

client.app.crashes(app_id: 'app_id', start_time: 'start_timestamp', end_time: 'end_timestamp', builds: 'builds')

Obtains the count of crashes for a number of builds.

client.app.crashfree(app_id: 'app_id', start_time: 'start_timestamp', end_time: 'end_timestamp', build: 'build')

Obtains application crashfree.

Fabric.io website uses the same calculations. However, mobile app behaves differently and shows another value.

client.app.top_issues(app_id: 'app_id', start_time: 'start_timestamp', end_time: 'end_timestamp', build: 'build', count: count)

Obtain top issues.

client.app.single_issue(app_id: 'app_id', issue_id: 'issue_id', start_time: 'start_timestamp', end_time: 'end_timestamp')

Obtain single issue.

client.app.issue_session(app_id: 'app_id', issue_id: 'issue_id', session_id: 'session_id')

Obtain issue session.

client.app.add_comment(app_id: 'app_id', issue_id: 'issue_id', message: 'message')

Add comment.

client.app.oomfree(app_id: 'app_id', start_time: 'start_timestamp', end_time: 'end_timestamp', builds:'builds')

Obtains application out-of-memory free for a number of builds.

Build

client.build.all(organization_id: 'organization_id', app_id: 'app_id')

Obtains the list of all application builds.

client.build.get(organization_id: 'organization_id', app_id: 'app_id', version: 'version', build_number: 'build_number')

Obtains a specific build for a specific application.

Version

client.version.all(app_id: 'app_id', start_time: 'start_timestamp', end_time: 'end_timestamp')

Obtains an array of all versions for a given application.

client.version.top(organization_id: 'organization_id', app_id: 'app_id', start_time: 'start_timestamp', end_time: 'end_timestamp')

Obtains an array of top versions for a given application.

Events

client.app.all_custom_events(organization_id: 'organization_id', app_id: 'app_id', start_time: 'start_timestamp', end_time: 'end_timestamp', build: 'build')

Obtains list of all custom event types.

client.app.custom_event_total(organization_id: 'organization_id', app_id: 'app_id', start_time: 'start_timestamp', end_time: 'end_timestamp', build: 'build', event_type: 'event_type')

Obtains the total count for the specified custom event type.

client.app.custom_event_unique_devices(organization_id: 'organization_id', app_id: 'app_id', start_time: 'start_timestamp', end_time: 'end_timestamp', build: 'build', event_type: 'event_type')

Obtains the unique device count for the specified custom event type.

client.app.all_custom_event_attribute(organization_id: 'organization_id', app_id: 'app_id', start_time: 'start_timestamp', end_time: 'end_timestamp', event_type: 'event_type')

Obtains list of all attributes for the specified custom event type.

client.app.custom_event_attribute(organization_id: 'organization_id', app_id: 'app_id', start_time: 'start_timestamp', end_time: 'end_timestamp', build: 'build', event_type: 'event_type', event_attribute: 'event_attribute', selected_time: 'selected_timestamp')

Obtains the attribute count for the specified custom event type.

Additional Info

Fabric.io API:

Authors

  • Egor Tolstoy
  • Vadim Smal

Thanks for help in dealing with API to Irina Dyagileva and Andrey Smirnov.

License

The gem is available as open source under the terms of the MIT License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].