{
  "name": "DebuggIt",
  "version": "1.0.4",
  "summary": "Tool that will help QA and clients report bugs easily directly from the device",
  "description": "# debugg.it\n[https://debugg.it](https://debugg.it)\n\n## Table of Contents ##\n\n+ [What is this repository for?](#what-is-this)\n+ [Example](#example)\n+ [Installation](#setup)\n+ [Configure and initialize debugg.it in your project](#configure)\n    * [Configure service for issues](#configure-issue)\n    * [API for uploading image files and (optionally) audio files](#configure-api)\n    * [Sample configuration](#configure-sample)\n+ [Additional options](#extra-options)\n+ [Author](#author)\n+ [Licence](#licence)\n\n<a name=\"what-is-this\"/>\n\n## What is this repository for? ##\n\nThis is a library, which provides a tool to report iOS application bugs directly into JIRA / GitHub/ BitBucket Issue Tracker.\n\n<a name=\"example\"/>\n\n# Example\n\nTo run the example project, open `DebuggIt.xcworkspace`, choose `DebuggItDemo` scheme and build it.\n\n<a name=\"setup\"/>\n\n## Installation ##\n\ndebugg.it is available through CocoaPods. To install it, add the following to your Podfile and run `pod install`:\n```ruby\nuse_modular_headers!\npod 'DebuggIt'\n```\n<a name=\"configure\"/>\n\n## Configure and initialize debugg.it in your project ##\n\nIn your `AppDelegate` import the pod:\n```swift\nimport DebuggIt\n```\n\n<a name=\"configure-issue\"/>\n\n### Configure service for issues ###\n\nAdd one of these lines (**at start of method**) to initialize debugg.it issue service\n\n```swift\nfunc application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {\n    ...\n    // Override point for customization after application launch.\n    DebuggIt.sharedInstance.initBitbucket(repoSlug: \"repo-name\", accountName: \"repo-owner-username\")\n    // or Github\n    DebuggIt.sharedInstance.initGithub(repoSlug: \"repo-name\", accountName: \"repo-owner-username\")\n    // or JIRA\n    DebuggIt.sharedInstance.initJira(host: \"jira-host-url\", projectKey: \"project-key\")\n    ...\n    return true\n}\n```\n\n**Note**: If you are using **JIRA** and your host **do not use SSL**, use additional parameter in initialize method:\n\n```swift\nDebuggIt.sharedInstance.initJira(host: \"jira-host-url\", projectKey: \"project-key\", usesHttps: false)\n```\n\n<a name=\"configure-api\"/>\n\n### API for uploading image files and (optionally) audio files ###\n\ndebugg.it requires an API where it can send image files and (optionally) audio files. There are 3 available configurations:\n\n+ AWS S3 Bucket\n\n    This configuration uses your AWS S3 bucket (https://aws.amazon.com/s3/) to store image and audio files.\n\n    * `DebuggIt.sharedInstance.initAWS(bucketName: \"bucketName\", regionType: .EUCentral1, identityPool: \"identityPool\")`\n        * where\n            * `bucketName` is a name of your bucket\n            * `regionType` is a`AWSRegionType` where your S3 bucket is hosted\n            * `identityPool` is a cognito generated key for your S3 bucket\n\n##\n\n+ Default API\n\n    This configuration uses your backend to send image and audio files. Data is sent via POST call on given endpoint with following parameter:\n    ```json\n    {\n        \"data\": \"base64String\"\n    }\n    ```\n    \n    * `DebuggIt.getInstance().initDefaultStorage(url: \"baseUrl\", imagePath: \"imagePath\", audioPath: \"audioPath\")`\n        * where\n            * `baseUrl` is a base url of your backend (e.g. `https://url-to-backend.com`)\n            * `imagePath` is an endpoint handling image upload (e.g. `/debuggit/uploadImage`)\n            * `audioPath` is an endpoint handling audio upload (e.g. `/debuggit/uploadAudio`)\n##\n\n+ Custom API\n\n    This is an extension of default API configuration. The difference is that you have to handle `uploadImage` / `uploadAudio` request and response. You are responsible for communication with your backend, but at the same time you have full control over it.\n\n    * `DebuggIt.sharedInstance.initCustomStorage(uploadImage: { (base64, delegate) in }, uploadAudio: { (base64, delegate) in })`\n        * where\n            * `uploadImage` is a callback with prepared base64 converted image and response delegate\n                * `delegate` is a `ApiClientDelegate` object, and should call `.uploadSuccessClousure(\"url-to-image\")` in case of success or `.errorClousure(code, message)`in case of error.\n            * `uploadImage` is a callback with prepared base64 converted image and response delegate\n                * `delegate` is a `ApiClientDelegate` object, and should call `.uploadSuccessClousure(\"url-to-audio\")` in case of success or `.errorClousure(code, message)`in case of error.\n\n<a name=\"configure-sample\"/>\n\n### Sample configurations ###\n\n+ Init BitBucket with S3:\n##\n```swift\nDebuggIt.sharedInstance\n        .initAWS(bucketName: \"bucketName\", regionType: .EUCentral1, identityPool: \"identityPool\")\n        .initBitbucket(repoSlug: \"repo-name\", accountName: \"repo-owner-username\")\n```\n\n+ Init GitHub with default API:\n##\n```swift\nDebuggIt.sharedInstance\n        .initDefaultStorage(url: \"baseUrl\", imagePath: \"imagePath\", audioPath: \"audioPath\")\n        .initGithub(repoSlug: \"repo-name\", accountName: \"repo-owner-username\")\n```\n\n+ Init JIRA with custom API:\n##\n```swift\nDebuggIt.sharedInstance\n        .initCustomStorage(uploadImage: { (base64, delegate) in\n            // Handle API call to your backend and call uploadSuccessClousure on delegate with url\n            // delegate.uploadSuccessClousure(\"url-to-image\")\n\n            // If something went wrong, call errorClousure on delegate\n            // delegate.errorClousure(400, \"Could not upload image\")\n        }, uploadAudio: { (base64, delegate) in\n            // Handle API call to your backend and call uploadSuccessClousure on delegate with url\n            // delegate.uploadSuccessClousure(\"url-to-audio\")\n\n            // If something went wrong, call errorClousure on delegate\n            // delegate.errorClousure(400, \"Could not upload audio\")    \n        })\n        .initJira(host: \"jira-host-url\", projectKey: \"project-key\")\n```\n## That's all. Your debugg.it is ready to work. ##\n\n<a name=\"extra-options\"/>\n\n## Additional options\n\n**debugg.it** allows to record audio notes and add it to bug description. To enable this feature simply add this line to your configuration in `AppDelegate` class:\n\n\n```swift\nDebuggIt.sharedInstance.recordingEnabled = true\n```\n\nEnsure you have added _Microphone Usage Description_ in your `Info.plist` file. For example:\n```xml\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>NSMicrophoneUsageDescription</key>\n\t<string>debugg.it record notes</string>\n\t<!-- \n\t\tRest of Info.plist file... \n\t-->\n</dict>\n</plist>\n```",
  "homepage": "http://debugg.it",
  "license": {
    "type": "Apache License, Version 2.0",
    "file": "LICENSE"
  },
  "authors": {
    "MoodUp.team": "biuro@mooduplabs.com"
  },
  "source": {
    "http": "https://github.com/MoodupDev/DebuggIt-iOS/releases/download/1.0.4/DebuggIt-1.0.4.zip"
  },
  "vendored_frameworks": "DebuggIt.framework",
  "frameworks": [
    "UIKit",
    "WebKit"
  ],
  "platforms": {
    "ios": "11.0"
  },
  "swift_versions": "5.0",
  "swift_version": "5.0"
}
