├── LocationSpoofer ├── Assets │ └── .gitkeep └── Classes │ ├── .gitkeep │ ├── Private │ ├── LOSPRootViewController.h │ ├── UIView+LOSPAdditions.h │ ├── MKMapView+LOSPAdditions.h │ ├── LOSPLocationPickerViewController.h │ ├── LOSPSwizzler.h │ ├── UIView+LOSPAdditions.m │ ├── CLLocationCoordinate2D+LOSPAdditions.h │ ├── MKMapView+LOSPAdditions.m │ ├── LOSPPresetTableViewController.h │ └── MKDirections+LOSPAdditions.h │ └── Public │ ├── LOSPTrip+LOSPPresets.h │ ├── LOSPLocationProvider.h │ ├── MKCoordinateSpan+LOSPAdditions.m │ ├── CLPlacemark+LOSPAdditions.h │ ├── LOSPLocationDebugViewController.h │ ├── MKCoordinateSpan+LOSPAdditions.h │ ├── LOSPLocationDebugViewController.m │ └── CLLocation+LOSPAdditions.h ├── _Pods.xcodeproj ├── Docs ├── readme_logo.png └── debug_view_controller.png ├── Example ├── LocationSpoofer │ ├── Images.xcassets │ │ ├── Contents.json │ │ ├── AppIcon.appiconset │ │ │ ├── icon_1024.png │ │ │ ├── icon_120.png │ │ │ ├── icon_180.png │ │ │ ├── icon_40.png │ │ │ ├── icon_58.png │ │ │ ├── icon_60.png │ │ │ ├── icon_80.png │ │ │ ├── icon_87.png │ │ │ ├── icon_120-1.png │ │ │ └── Contents.json │ │ └── rounded_icon.imageset │ │ │ ├── rounded_icon.png │ │ │ ├── rounded_icon@2x.png │ │ │ ├── rounded_icon@3x.png │ │ │ └── Contents.json │ ├── UIColor+Additions.swift │ ├── AppDelegate.swift │ └── Info.plist ├── Podfile ├── Pods │ ├── Target Support Files │ │ ├── Buglife │ │ │ ├── Buglife.modulemap │ │ │ ├── Buglife-dummy.m │ │ │ ├── Buglife-prefix.pch │ │ │ ├── Buglife.xcconfig │ │ │ ├── Buglife-umbrella.h │ │ │ └── Info.plist │ │ ├── LocationSpoofer │ │ │ ├── LocationSpoofer.modulemap │ │ │ ├── LocationSpoofer-dummy.m │ │ │ ├── LocationSpoofer-prefix.pch │ │ │ ├── LocationSpoofer.xcconfig │ │ │ ├── LocationSpoofer-umbrella.h │ │ │ └── Info.plist │ │ └── Pods-LocationSpoofer_Example │ │ │ ├── Pods-LocationSpoofer_Example.modulemap │ │ │ ├── Pods-LocationSpoofer_Example-dummy.m │ │ │ ├── Pods-LocationSpoofer_Example-umbrella.h │ │ │ ├── Pods-LocationSpoofer_Example.debug.xcconfig │ │ │ ├── Pods-LocationSpoofer_Example.release.xcconfig │ │ │ └── Info.plist │ ├── Buglife │ │ └── Source │ │ │ ├── Additions │ │ │ ├── UIWindow+LIFEAdditions.h │ │ │ ├── UIDevice+LIFEAdditions.h │ │ │ ├── UITableView+LIFEAdditions.h │ │ │ ├── NSLayoutConstraint+LIFEAdditions.h │ │ │ ├── NSError+LIFEAdditions.h │ │ │ ├── NSArray+LIFEAdditions.h │ │ │ ├── UITableView+LIFEAdditions.m │ │ │ ├── NSString+LIFEAdditions.h │ │ │ ├── UIView+LIFEAdditions.h │ │ │ ├── UITextView+LIFEAdditions.h │ │ │ ├── UIControl+LIFEAdditions.h │ │ │ ├── NSMutableDictionary+LIFEAdditions.h │ │ │ ├── UIDevice+LIFEAdditions.m │ │ │ ├── Buglife+UIStuff.h │ │ │ ├── UIApplication+LIFEAdditions.h │ │ │ ├── LIFECompatibilityUtils.h │ │ │ ├── UIViewController+LIFEAdditions.h │ │ │ ├── UIWindow+LIFEAdditions.m │ │ │ ├── NSLayoutConstraint+LIFEAdditions.m │ │ │ ├── NSMutableDictionary+LIFEAdditions.m │ │ │ ├── LIFECategories.h │ │ │ ├── UIViewController+LIFEAdditions.m │ │ │ ├── NSError+LIFEAdditions.m │ │ │ ├── UIBezierPath+LIFEAdditions.h │ │ │ ├── UIColor+LIFEAdditions.h │ │ │ ├── NSArray+LIFEAdditions.m │ │ │ ├── LIFEGeometry.h │ │ │ ├── UITextView+LIFEAdditions.m │ │ │ └── LIFECategories.m │ │ │ ├── Protected │ │ │ ├── LIFEPickerInputField+Protected.h │ │ │ ├── LIFEInputField+Protected.h │ │ │ └── LIFEAwesomeLogger+Protected.h │ │ │ ├── Buglife+LocalizedStrings.m │ │ │ ├── Models │ │ │ ├── LIFEUserFacingAttachment.h │ │ │ ├── LIFEReproStep.h │ │ │ ├── LIFEScreenshotContext.h │ │ │ ├── LIFEAppInfo.h │ │ │ ├── LIFEDeviceBatteryState.h │ │ │ ├── LIFEScreenshotContext.m │ │ │ ├── LIFEAnnotation.h │ │ │ ├── LIFEVideoAttachment.h │ │ │ ├── LIFEReportOwner.h │ │ │ ├── LIFEDeviceInfo.h │ │ │ ├── LIFEReproStep.m │ │ │ ├── LIFEImageFormat.h │ │ │ ├── LIFEAnnotation.m │ │ │ ├── LIFEReportOwner.m │ │ │ └── LIFEReportAttachmentImpl.h │ │ │ ├── Controllers │ │ │ ├── LIFELogViewController.h │ │ │ ├── Alert View │ │ │ │ ├── LIFEAlertAnimator.h │ │ │ │ ├── LIFEAlertActionView.h │ │ │ │ ├── LIFEAlertAction.h │ │ │ │ ├── LIFEAlertAction.m │ │ │ │ ├── LIFEAlertController.h │ │ │ │ └── LIFEAlertView.h │ │ │ ├── LIFEAVPlayerViewController.h │ │ │ ├── Image Editor │ │ │ │ ├── LIFEImageEditorSegmentedControl.h │ │ │ │ ├── LIFEToolButton.h │ │ │ │ └── LIFEImageEditorView.h │ │ │ ├── LIFENavigationController.h │ │ │ ├── LIFEStepsToReproTableViewController.h │ │ │ ├── LIFETextInputViewController.h │ │ │ ├── LIFEReportViewControllerDelegate.h │ │ │ ├── LIFEPickerViewController.h │ │ │ ├── LIFEComponentPickerViewController.h │ │ │ ├── LIFELogViewController.m │ │ │ └── LIFEAVPlayerViewController.m │ │ │ ├── Views │ │ │ ├── Toast │ │ │ │ ├── LIFEToastView.h │ │ │ │ ├── LIFEToastControllerView.h │ │ │ │ └── LIFEToastController.h │ │ │ ├── LIFETitleCell.h │ │ │ ├── LIFEOverlayWindow.h │ │ │ ├── GestureRecognizers │ │ │ │ ├── LIFEPanGestureRecognizer.h │ │ │ │ └── LIFEPanGestureRecognizer.m │ │ │ ├── Container Window │ │ │ │ ├── LIFEWindowBlindsAnimator.h │ │ │ │ ├── LIFEContainerModalPresentAnimator.h │ │ │ │ ├── LIFEContainerAlertToImageEditorAnimator.h │ │ │ │ ├── LIFEContainerModalDismissAnimator.h │ │ │ │ ├── LIFEContainerWindow.h │ │ │ │ ├── LIFEContainerViewController.h │ │ │ │ ├── LIFEContainerTransitionContext.h │ │ │ │ └── LIFEContainerModalDismissAnimator.m │ │ │ ├── LIFEComponentPickerCell.h │ │ │ ├── Jello View │ │ │ │ ├── LIFEJelloView.h │ │ │ │ ├── LIFEJelloLayer.h │ │ │ │ └── LIFEJelloLayer.m │ │ │ ├── AnnotationViews │ │ │ │ ├── LIFEBlurAnnotationView.h │ │ │ │ ├── LIFEArrowAnnotationView.h │ │ │ │ └── LIFELoupeAnnotationView.h │ │ │ ├── LIFEPoweredByBuglifeView.h │ │ │ ├── LIFEFloatingButton.h │ │ │ ├── LIFEReportView.h │ │ │ ├── LIFEComponentPickerCell.m │ │ │ ├── LIFEBugButtonWindow.h │ │ │ ├── LIFEAppearanceImpl.h │ │ │ ├── LIFETextFieldCell.h │ │ │ ├── LIFEStepsToReproduceCell.h │ │ │ ├── LIFEAnnotatedImageView.h │ │ │ ├── LIFEAttachmentView.h │ │ │ ├── LIFETitleCell.m │ │ │ ├── LIFEScreenshotAnnotatorView.h │ │ │ └── LIFEAppearanceImpl.m │ │ │ ├── Services │ │ │ ├── LIFELogFacility.h │ │ │ ├── LIFESwizzler.h │ │ │ ├── LIFEAppInfoProvider.h │ │ │ ├── LIFETelephonyNetworkInfo.h │ │ │ ├── LIFEDeviceInfoProvider.h │ │ │ ├── LIFEReachability.h │ │ │ ├── LIFEUserDefaults.h │ │ │ ├── LIFENetworkManager.h │ │ │ ├── LIFEDependencyLoader.h │ │ │ ├── Logging │ │ │ │ ├── LIFEJSONLogFileFormatter.h │ │ │ │ └── LIFENotificationLogger.h │ │ │ ├── LIFERecordingShrinker.h │ │ │ ├── LIFEDataProvider.h │ │ │ └── LIFEDependencyLoader.m │ │ │ ├── LIFEPickerInputField.h │ │ │ ├── LIFEAppearance.h │ │ │ └── LIFETextInputField.h │ ├── Manifest.lock │ └── Local Podspecs │ │ └── LocationSpoofer.podspec.json ├── LocationSpoofer.xcodeproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata ├── LocationSpoofer.xcworkspace │ ├── xcshareddata │ │ └── IDEWorkspaceChecks.plist │ └── contents.xcworkspacedata └── Podfile.lock ├── .gitignore ├── LICENSE └── LocationSpoofer.podspec /LocationSpoofer/Assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /LocationSpoofer/Classes/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /_Pods.xcodeproj: -------------------------------------------------------------------------------- 1 | Example/Pods/Pods.xcodeproj -------------------------------------------------------------------------------- /Docs/readme_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Buglife/LocationSpoofer/HEAD/Docs/readme_logo.png -------------------------------------------------------------------------------- /Docs/debug_view_controller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Buglife/LocationSpoofer/HEAD/Docs/debug_view_controller.png -------------------------------------------------------------------------------- /Example/LocationSpoofer/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Example/Podfile: -------------------------------------------------------------------------------- 1 | use_frameworks! 2 | 3 | target 'LocationSpoofer_Example' do 4 | pod 'LocationSpoofer', :path => '../' 5 | pod 'Buglife', '~> 2.9.0' 6 | end 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Buglife/Buglife.modulemap: -------------------------------------------------------------------------------- 1 | framework module Buglife { 2 | umbrella header "Buglife-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Buglife/Buglife-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Buglife : NSObject 3 | @end 4 | @implementation PodsDummy_Buglife 5 | @end 6 | -------------------------------------------------------------------------------- /Example/LocationSpoofer/Images.xcassets/AppIcon.appiconset/icon_1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Buglife/LocationSpoofer/HEAD/Example/LocationSpoofer/Images.xcassets/AppIcon.appiconset/icon_1024.png -------------------------------------------------------------------------------- /Example/LocationSpoofer/Images.xcassets/AppIcon.appiconset/icon_120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Buglife/LocationSpoofer/HEAD/Example/LocationSpoofer/Images.xcassets/AppIcon.appiconset/icon_120.png -------------------------------------------------------------------------------- /Example/LocationSpoofer/Images.xcassets/AppIcon.appiconset/icon_180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Buglife/LocationSpoofer/HEAD/Example/LocationSpoofer/Images.xcassets/AppIcon.appiconset/icon_180.png -------------------------------------------------------------------------------- /Example/LocationSpoofer/Images.xcassets/AppIcon.appiconset/icon_40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Buglife/LocationSpoofer/HEAD/Example/LocationSpoofer/Images.xcassets/AppIcon.appiconset/icon_40.png -------------------------------------------------------------------------------- /Example/LocationSpoofer/Images.xcassets/AppIcon.appiconset/icon_58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Buglife/LocationSpoofer/HEAD/Example/LocationSpoofer/Images.xcassets/AppIcon.appiconset/icon_58.png -------------------------------------------------------------------------------- /Example/LocationSpoofer/Images.xcassets/AppIcon.appiconset/icon_60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Buglife/LocationSpoofer/HEAD/Example/LocationSpoofer/Images.xcassets/AppIcon.appiconset/icon_60.png -------------------------------------------------------------------------------- /Example/LocationSpoofer/Images.xcassets/AppIcon.appiconset/icon_80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Buglife/LocationSpoofer/HEAD/Example/LocationSpoofer/Images.xcassets/AppIcon.appiconset/icon_80.png -------------------------------------------------------------------------------- /Example/LocationSpoofer/Images.xcassets/AppIcon.appiconset/icon_87.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Buglife/LocationSpoofer/HEAD/Example/LocationSpoofer/Images.xcassets/AppIcon.appiconset/icon_87.png -------------------------------------------------------------------------------- /Example/LocationSpoofer/Images.xcassets/AppIcon.appiconset/icon_120-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Buglife/LocationSpoofer/HEAD/Example/LocationSpoofer/Images.xcassets/AppIcon.appiconset/icon_120-1.png -------------------------------------------------------------------------------- /Example/LocationSpoofer/Images.xcassets/rounded_icon.imageset/rounded_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Buglife/LocationSpoofer/HEAD/Example/LocationSpoofer/Images.xcassets/rounded_icon.imageset/rounded_icon.png -------------------------------------------------------------------------------- /Example/LocationSpoofer/Images.xcassets/rounded_icon.imageset/rounded_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Buglife/LocationSpoofer/HEAD/Example/LocationSpoofer/Images.xcassets/rounded_icon.imageset/rounded_icon@2x.png -------------------------------------------------------------------------------- /Example/LocationSpoofer/Images.xcassets/rounded_icon.imageset/rounded_icon@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Buglife/LocationSpoofer/HEAD/Example/LocationSpoofer/Images.xcassets/rounded_icon.imageset/rounded_icon@3x.png -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/LocationSpoofer/LocationSpoofer.modulemap: -------------------------------------------------------------------------------- 1 | framework module LocationSpoofer { 2 | umbrella header "LocationSpoofer-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/LocationSpoofer/LocationSpoofer-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_LocationSpoofer : NSObject 3 | @end 4 | @implementation PodsDummy_LocationSpoofer 5 | @end 6 | -------------------------------------------------------------------------------- /Example/LocationSpoofer.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-LocationSpoofer_Example/Pods-LocationSpoofer_Example.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_LocationSpoofer_Example { 2 | umbrella header "Pods-LocationSpoofer_Example-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-LocationSpoofer_Example/Pods-LocationSpoofer_Example-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_LocationSpoofer_Example : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_LocationSpoofer_Example 5 | @end 6 | -------------------------------------------------------------------------------- /Example/LocationSpoofer/UIColor+Additions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIColor+Additions.swift 3 | // LocationSpoofer 4 | // 5 | 6 | import UIKit 7 | 8 | extension UIColor { 9 | class var ls_appTintColor: UIColor { 10 | return UIColor(red: 0.99, green: 0.05, blue: 0.11, alpha: 1) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Buglife/Buglife-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/LocationSpoofer/LocationSpoofer-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/LocationSpoofer.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Example/LocationSpoofer.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Additions/UIWindow+LIFEAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIWindow+LIFEAdditions.h 3 | // Pods 4 | // 5 | // Created by David Schukin on 11/4/15. 6 | // 7 | // 8 | 9 | #import 10 | 11 | @class Buglife; 12 | 13 | @interface LIFEUIWindow : NSObject 14 | 15 | + (void)monkeyPatchMotionEndedForBuglife:(Buglife *)buglife; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Additions/UIDevice+LIFEAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIDevice+LIFEAdditions.h 3 | // Pods 4 | // 5 | // Created by David Schukin on 12/13/16. 6 | // 7 | // 8 | 9 | #import 10 | #import "LIFECategories.h" 11 | 12 | @interface UIDevice (LIFEAdditions) 13 | 14 | - (BOOL)life_isSimulator; 15 | 16 | @end 17 | 18 | LIFE_CATEGORY_FUNCTION_DECL(UIDevice); 19 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Additions/UITableView+LIFEAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITableView+LIFEAdditions.h 3 | // Pods 4 | // 5 | // Created by David Schukin on 10/26/15. 6 | // 7 | // 8 | 9 | #import 10 | 11 | @interface LIFEUITableViewCell : NSObject 12 | 13 | + (UITableView *)tableViewForCell:(UITableViewCell *)cell; 14 | + (NSString *)cellIdentifierForCell:(UITableViewCell *)cell; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Additions/NSLayoutConstraint+LIFEAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSLayoutConstraint+LIFEAdditions.h 3 | // 4 | // Created by David Schukin on 12/4/15. 5 | // 6 | // 7 | 8 | #import 9 | 10 | @interface LIFENSLayoutConstraint : NSObject 11 | 12 | + (NSLayoutConstraint *)life_constraintPinningView:(UIView *)view1 toView:(UIView *)view2 attribute:(NSLayoutAttribute)attribute; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Protected/LIFEPickerInputField+Protected.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEPickerInputField+Protected.h 3 | // Pods 4 | // 5 | // Created by David Schukin on 6/21/17. 6 | // 7 | // 8 | 9 | #import "LIFEPickerInputField.h" 10 | 11 | @interface LIFEPickerInputField (Protected) 12 | 13 | - (nonnull NSArray *)optionTitlesArray; 14 | - (nonnull NSArray *)optionValuesArray; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Buglife/Buglife.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Buglife 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | PODS_BUILD_DIR = ${BUILD_DIR} 4 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 5 | PODS_ROOT = ${SRCROOT} 6 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Buglife 7 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 8 | SKIP_INSTALL = YES 9 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-LocationSpoofer_Example/Pods-LocationSpoofer_Example-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_LocationSpoofer_ExampleVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_LocationSpoofer_ExampleVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/LocationSpoofer/Images.xcassets/rounded_icon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "rounded_icon.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "rounded_icon@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "rounded_icon@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /Example/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Buglife (2.9.0) 3 | - LocationSpoofer (0.1.0) 4 | 5 | DEPENDENCIES: 6 | - Buglife (~> 2.9.0) 7 | - LocationSpoofer (from `../`) 8 | 9 | SPEC REPOS: 10 | https://github.com/cocoapods/specs.git: 11 | - Buglife 12 | 13 | EXTERNAL SOURCES: 14 | LocationSpoofer: 15 | :path: "../" 16 | 17 | SPEC CHECKSUMS: 18 | Buglife: 6ff34eee40337173f4a2c1e0c97ab971d6289e7a 19 | LocationSpoofer: f69adeae36daa98e9dc512f8c55e95e4ba5734cc 20 | 21 | PODFILE CHECKSUM: 9fc7773297f255df5eda43dc49d996e4563ce7c7 22 | 23 | COCOAPODS: 1.5.3 24 | -------------------------------------------------------------------------------- /Example/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Buglife (2.9.0) 3 | - LocationSpoofer (0.1.0) 4 | 5 | DEPENDENCIES: 6 | - Buglife (~> 2.9.0) 7 | - LocationSpoofer (from `../`) 8 | 9 | SPEC REPOS: 10 | https://github.com/cocoapods/specs.git: 11 | - Buglife 12 | 13 | EXTERNAL SOURCES: 14 | LocationSpoofer: 15 | :path: "../" 16 | 17 | SPEC CHECKSUMS: 18 | Buglife: 6ff34eee40337173f4a2c1e0c97ab971d6289e7a 19 | LocationSpoofer: f69adeae36daa98e9dc512f8c55e95e4ba5734cc 20 | 21 | PODFILE CHECKSUM: 9fc7773297f255df5eda43dc49d996e4563ce7c7 22 | 23 | COCOAPODS: 1.5.3 24 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/LocationSpoofer/LocationSpoofer.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/LocationSpoofer 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | OTHER_LDFLAGS = -framework "CoreLocation" -framework "MapKit" -framework "UIKit" 4 | PODS_BUILD_DIR = ${BUILD_DIR} 5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Buglife+LocalizedStrings.m: -------------------------------------------------------------------------------- 1 | // 2 | // Buglife+LocalizedStrings.m 3 | // Buglife 4 | // 5 | // Copyright (c) 2017 Buglife, Inc. All rights reserved. 6 | // 7 | 8 | #import "Buglife+LocalizedStrings.h" 9 | #import "LIFELocalizedStringProvider.h" 10 | 11 | @implementation Buglife (LocalizedStrings) 12 | 13 | - (BOOL)showStringKeys 14 | { 15 | return [LIFELocalizedStringProvider sharedInstance].debugModeEnabled; 16 | } 17 | 18 | - (void)setShowStringKeys:(BOOL)showStringKeys 19 | { 20 | [LIFELocalizedStringProvider sharedInstance].debugModeEnabled = showStringKeys; 21 | } 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Buglife/Buglife-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "Buglife+LocalizedStrings.h" 14 | #import "Buglife.h" 15 | #import "LIFEAppearance.h" 16 | #import "LIFEAwesomeLogger.h" 17 | #import "LIFEInputField.h" 18 | #import "LIFEPickerInputField.h" 19 | #import "LIFETextInputField.h" 20 | 21 | FOUNDATION_EXPORT double BuglifeVersionNumber; 22 | FOUNDATION_EXPORT const unsigned char BuglifeVersionString[]; 23 | 24 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Additions/NSError+LIFEAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSError+LIFEAdditions.h 3 | // Pods 4 | // 5 | // Created by David Schukin on 12/9/15. 6 | // 7 | // 8 | 9 | #import 10 | 11 | @interface LIFENSError : NSObject 12 | 13 | // Provides an informative user-facing error description. 14 | // The purpose of this is to provide sufficient info 15 | // that they can either debug themselves, or email customer support. 16 | + (NSString *)life_debugDescriptionForError:(NSError *)error; 17 | 18 | #pragma mark - Factory methods 19 | 20 | + (NSError *)life_errorWithHTTPURLResponse:(NSHTTPURLResponse *)httpResponse; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Additions/NSArray+LIFEAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSArray+LIFEAdditions.h 3 | // Pods 4 | // 5 | // Created by David Schukin on 5/17/16. 6 | // 7 | // 8 | 9 | #import 10 | 11 | void LIFELoadCategoryFor_NSArrayLIFEAdditions(void); 12 | 13 | @interface NSArray (LIFEAdditions) 14 | 15 | - (nonnull NSArray *)life_map:(id __nonnull (^ __nonnull)(ObjectType __nonnull obj))block; 16 | - (nonnull NSArray *)life_arrayFilteredToObjectsOfClass:(__nonnull Class)aClass; 17 | - (nonnull NSArray *)life_filteredArrayUsingBlock:(BOOL (^ __nonnull)(ObjectType __nonnull obj))block; 18 | - (nullable ObjectType)life_firstObjectMatchingBlock:(BOOL (^ __nonnull)(ObjectType __nonnull obj))block; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Additions/UITableView+LIFEAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // UITableView+LIFEAdditions.m 3 | // Pods 4 | // 5 | // Created by David Schukin on 10/26/15. 6 | // 7 | // 8 | 9 | #import "UITableView+LIFEAdditions.h" 10 | 11 | @implementation LIFEUITableViewCell 12 | 13 | + (UITableView *)tableViewForCell:(UITableViewCell *)cell 14 | { 15 | id view = [cell superview]; 16 | 17 | while (view && [view isKindOfClass:[UITableView class]] == NO) { 18 | view = [view superview]; 19 | } 20 | 21 | UITableView *tableView = (UITableView *)view; 22 | return tableView; 23 | } 24 | 25 | + (NSString *)cellIdentifierForCell:(UITableViewCell *)cell 26 | { 27 | return NSStringFromClass([cell class]); 28 | } 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/LocationSpoofer/LocationSpoofer-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "CLLocation+LOSPAdditions.h" 14 | #import "CLPlacemark+LOSPAdditions.h" 15 | #import "LOSPLocationDebugViewController.h" 16 | #import "LOSPLocationProvider.h" 17 | #import "LOSPLocationSpoofer.h" 18 | #import "LOSPTrip+LOSPPresets.h" 19 | #import "LOSPTrip.h" 20 | #import "MKCoordinateSpan+LOSPAdditions.h" 21 | 22 | FOUNDATION_EXPORT double LocationSpooferVersionNumber; 23 | FOUNDATION_EXPORT const unsigned char LocationSpooferVersionString[]; 24 | 25 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Additions/NSString+LIFEAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+LIFEAdditions.h 3 | // Pods 4 | // 5 | // Created by David Schukin on 12/12/16. 6 | // 7 | // 8 | 9 | #import 10 | #import 11 | #import "LIFECategories.h" 12 | 13 | @interface NSString (LIFEAdditions) 14 | 15 | - (NSTextAlignment)life_naturalTextAligment; 16 | 17 | @end 18 | 19 | NSTextAlignment LIFENSTextAlignmentForLanguage(NSString *__nullable language); 20 | NSTextAlignment LIFENSTextAlignmentForTextFieldOrTextView(UIResponder *__nullable textFieldOrTextView); 21 | // This should be called from textViewDidChange: methods 22 | void LIFEFixRTLForTextViewOrTextField(UIResponder *__nonnull textViewOrTextField); 23 | LIFE_CATEGORY_FUNCTION_DECL(NSString); 24 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Additions/UIView+LIFEAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+LIFEAdditions.h 3 | // 4 | // Created by David Schukin on 2/6/16. 5 | // 6 | // 7 | 8 | #import 9 | 10 | @protocol LIFEBlurrableView; 11 | 12 | void LIFELoadCategoryFor_UIViewLIFEAdditions(void); 13 | 14 | @interface UIView (LIFEAdditions) 15 | 16 | @property (nonatomic, readonly) NSLayoutYAxisAnchor *life_safeAreaLayoutGuideBottomAnchor; 17 | - (NSArray *)life_blurrableViews; 18 | - (NSArray *)life_flattenedSubviewTree; 19 | - (instancetype)life_firstResponder; 20 | - (void)life_makeEdgesEqualTo:(UIView *)view; 21 | - (void)life_makeEdgesEqualTo:(UIView *)view withInset:(CGFloat)inset; 22 | - (void)life_makeEdgesEqualTo:(UIView *)view withInsets:(UIEdgeInsets)insets; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Models/LIFEUserFacingAttachment.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEUserFacingAttachment.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | @protocol LIFEUserFacingAttachment 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-LocationSpoofer_Example/Pods-LocationSpoofer_Example.debug.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Buglife" "${PODS_CONFIGURATION_BUILD_DIR}/LocationSpoofer" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 4 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Buglife/Buglife.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/LocationSpoofer/LocationSpoofer.framework/Headers" 5 | OTHER_LDFLAGS = $(inherited) -framework "Buglife" -framework "LocationSpoofer" 6 | PODS_BUILD_DIR = ${BUILD_DIR} 7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-LocationSpoofer_Example/Pods-LocationSpoofer_Example.release.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Buglife" "${PODS_CONFIGURATION_BUILD_DIR}/LocationSpoofer" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 4 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Buglife/Buglife.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/LocationSpoofer/LocationSpoofer.framework/Headers" 5 | OTHER_LDFLAGS = $(inherited) -framework "Buglife" -framework "LocationSpoofer" 6 | PODS_BUILD_DIR = ${BUILD_DIR} 7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Controllers/LIFELogViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFELogViewController.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @interface LIFELogViewController : UIViewController 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/Toast/LIFEToastView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEToastView.h 3 | // Copyright (C) 2018 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | #import "LIFEJelloView.h" 21 | 22 | @interface LIFEToastView : LIFEJelloView 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Example/Pods/Local Podspecs/LocationSpoofer.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "LocationSpoofer", 3 | "version": "0.1.0", 4 | "summary": "Easy location mocking.", 5 | "description": "LocationSpoofer is an iOS library for spoofing / mocking location, without changing any of your existing CoreLocation code.", 6 | "homepage": "https://buglife.com", 7 | "license": { 8 | "type": "MIT", 9 | "file": "LICENSE" 10 | }, 11 | "authors": { 12 | "buglife": "support@buglife.com" 13 | }, 14 | "source": { 15 | "git": "https://github.com/buglife/LocationSpoofer.git", 16 | "tag": "0.1.0" 17 | }, 18 | "platforms": { 19 | "ios": "10.0" 20 | }, 21 | "source_files": "LocationSpoofer/Classes/**/*", 22 | "public_header_files": "LocationSpoofer/Classes/Public/**/*.h", 23 | "frameworks": [ 24 | "UIKit", 25 | "MapKit", 26 | "CoreLocation" 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Additions/UITextView+LIFEAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITextView+LIFEAdditions.h 3 | // Pods 4 | // 5 | // Created by David Schukin on 11/17/15. 6 | // 7 | // 8 | 9 | #import 10 | 11 | @interface LIFEUITextView : NSObject 12 | 13 | + (CGFloat)textView:(UITextView *)textView boundingHeightWithWidth:(CGFloat)width; 14 | 15 | // Used for when you want to calculate the height of a textView using its 16 | // textContainer & font attributes, but with a different string & without 17 | // actually replacing the textView's string 18 | // 19 | // @deprecated use boundingHeightForText:width:lineFragmentPadding:font: 20 | + (CGFloat)textView:(UITextView *)textView boundingHeightWithWidth:(CGFloat)width replacementText:(NSString *)replacementText; 21 | 22 | + (CGFloat)boundingHeightForText:(NSString *)text width:(CGFloat)width font:(UIFont *)font; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/LIFETitleCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFETitleCell.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @interface LIFETitleCell : UITableViewCell 22 | 23 | + (NSString *)defaultIdentifier; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OS X 2 | .DS_Store 3 | 4 | # Xcode 5 | build/ 6 | *.pbxuser 7 | !default.pbxuser 8 | *.mode1v3 9 | !default.mode1v3 10 | *.mode2v3 11 | !default.mode2v3 12 | *.perspectivev3 13 | !default.perspectivev3 14 | xcuserdata/ 15 | *.xccheckout 16 | profile 17 | *.moved-aside 18 | DerivedData 19 | *.hmap 20 | *.ipa 21 | 22 | # Bundler 23 | .bundle 24 | 25 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 26 | # Carthage/Checkouts 27 | 28 | Carthage/Build 29 | 30 | # We recommend against adding the Pods directory to your .gitignore. However 31 | # you should judge for yourself, the pros and cons are mentioned at: 32 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control 33 | # 34 | # Note: if you ignore the Pods directory, make sure to uncomment 35 | # `pod install` in .travis.yml 36 | # 37 | # Pods/ 38 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/LIFEOverlayWindow.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEOverlayWindow.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @interface LIFEOverlayWindow : UIWindow 22 | 23 | + (nonnull instancetype)overlayWindow; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/GestureRecognizers/LIFEPanGestureRecognizer.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEPanGestureRecognizer.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @interface LIFEPanGestureRecognizer : UIPanGestureRecognizer 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/Container Window/LIFEWindowBlindsAnimator.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEWindowBlindsAnimator.h 3 | // Copyright (C) 2018 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @interface LIFEWindowBlindsAnimator : NSObject 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/LIFEComponentPickerCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEComponentPickerCell.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @interface LIFEComponentPickerCell : UITableViewCell 22 | 23 | + (nonnull NSString *)defaultIdentifier; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/Jello View/LIFEJelloView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEJelloView.h 3 | // Copyright (C) 2018 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @interface LIFEJelloView : UIView 22 | 23 | @property (nonnull, nonatomic, readonly) CAShapeLayer *shapeLayer; 24 | - (void)updatePath; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/Container Window/LIFEContainerModalPresentAnimator.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEContainerModalPresentAnimator.h 3 | // Copyright (C) 2018 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @interface LIFEContainerModalPresentAnimator : NSObject 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Models/LIFEReproStep.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEReproStep.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @interface LIFEReproStep : NSObject 22 | 23 | @property (nonnull, nonatomic, copy) NSString *userDescription; 24 | 25 | - (BOOL)isEmpty; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Additions/UIControl+LIFEAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIControl+LIFEAdditions.h 3 | // Copyright (C) 2018 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | 18 | #import 19 | #import "LIFECategories.h" 20 | 21 | @interface UIControl (LIFEAdditions) 22 | + (void)life_swizzleSendAction; 23 | 24 | @end 25 | 26 | LIFE_CATEGORY_FUNCTION_DECL(UIControl) 27 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/Container Window/LIFEContainerAlertToImageEditorAnimator.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEContainerAlertToImageEditorAnimator.h 3 | // Copyright (C) 2018 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @interface LIFEContainerAlertToImageEditorAnimator : NSObject 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/AnnotationViews/LIFEBlurAnnotationView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEBlurAnnotationView.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import "LIFEAnnotationView.h" 20 | 21 | @interface LIFEBlurAnnotationView : LIFEAnnotationView 22 | @end 23 | 24 | @interface LIFEBlurAnnotationLayer : LIFEAnnotationLayer 25 | @end 26 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/AnnotationViews/LIFEArrowAnnotationView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEArrowAnnotationView.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import "LIFEAnnotationView.h" 20 | 21 | @interface LIFEArrowAnnotationView : LIFEAnnotationView 22 | @end 23 | 24 | @interface LIFEArrowAnnotationLayer : LIFEAnnotationLayer 25 | @end 26 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/AnnotationViews/LIFELoupeAnnotationView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFELoupeAnnotationView.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import "LIFEAnnotationView.h" 20 | 21 | @interface LIFELoupeAnnotationView : LIFEAnnotationView 22 | @end 23 | 24 | @interface LIFELoupeAnnotationLayer : LIFEAnnotationLayer 25 | @end 26 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Buglife/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 2.9.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/LIFEPoweredByBuglifeView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEPoweredByBuglifeView.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @interface LIFEPoweredByBuglifeView : UIView 22 | 23 | @property (null_resettable, nonatomic) UIColor *foregroundColor; 24 | 25 | + (CGFloat)defaultHeight; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/LocationSpoofer/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 0.1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-LocationSpoofer_Example/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Additions/NSMutableDictionary+LIFEAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSMutableDictionary+LIFEAdditions.h 3 | // Pods 4 | // 5 | // Created by David Schukin on 11/26/15. 6 | // 7 | // 8 | 9 | #import 10 | 11 | /** 12 | Deprecated; Created this before I realized I could load categories. Derp. 13 | */ 14 | @interface LIFENSMutableDictionary : NSObject 15 | 16 | - (nonnull instancetype)initWithSubject:(nullable NSMutableDictionary *)subject; 17 | 18 | - (void)life_safeSetObject:(ObjectType _Nonnull)object forKey:(KeyType _Nonnull)key; 19 | 20 | @end 21 | 22 | #define LIFENSMutableDictionaryify(view) [[LIFENSMutableDictionary alloc] initWithSubject:view] 23 | 24 | void LIFELoadCategoryFor_NSMutableDictionaryLIFEAdditions(void); 25 | 26 | @interface NSMutableDictionary (LIFEAdditions) 27 | 28 | - (void)life_safeSetObject:(ObjectType _Nonnull)object forKey:(KeyType _Nonnull)key; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/LIFEFloatingButton.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEFloatingButton.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @interface LIFEFloatingButton : UIButton 22 | 23 | @property (nonatomic, null_resettable) UIColor *foregroundColor; 24 | @property (nonatomic, null_resettable) UIColor *backgroundColor; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Controllers/Alert View/LIFEAlertAnimator.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEAlertAnimator.h 3 | // Copyright (C) 2018 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @interface LIFEAlertAnimator : NSObject 22 | 23 | + (nonnull instancetype)presentationAnimator; 24 | + (nonnull instancetype)dismissAnimator; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/Container Window/LIFEContainerModalDismissAnimator.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEContainerModalDismissAnimator.h 3 | // Copyright (C) 2018 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | // Simply replicates a downward modal dismiss animation. 22 | @interface LIFEContainerModalDismissAnimator : NSObject 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Additions/UIDevice+LIFEAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIDevice+LIFEAdditions.m 3 | // Pods 4 | // 5 | // Created by David Schukin on 12/13/16. 6 | // 7 | // 8 | 9 | #import "UIDevice+LIFEAdditions.h" 10 | #include 11 | 12 | @implementation UIDevice (LIFEAdditions) 13 | 14 | LIFE_CATEGORY_METHOD_IMPL(UIDevice) 15 | 16 | - (BOOL)life_isSimulator 17 | { 18 | NSString *modeIdentifier = [self _life_getSysInfoByName:"hw.machine"]; 19 | return [modeIdentifier isEqualToString:@"x86_64"]; 20 | } 21 | 22 | - (NSString *)_life_getSysInfoByName:(char *)typeSpecifier 23 | { 24 | size_t size; 25 | sysctlbyname(typeSpecifier, NULL, &size, NULL, 0); 26 | 27 | char *answer = malloc(size); 28 | sysctlbyname(typeSpecifier, answer, &size, NULL, 0); 29 | 30 | NSString *results = [NSString stringWithCString:answer encoding: NSUTF8StringEncoding]; 31 | 32 | free(answer); 33 | return results; 34 | } 35 | 36 | @end 37 | 38 | LIFE_CATEGORY_FUNCTION_IMPL(UIDevice); 39 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Controllers/LIFEAVPlayerViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEAVPlayerViewController.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | 18 | #import 19 | 20 | @interface LIFEAVPlayerViewController : NSObject 21 | 22 | + (void)presentFromViewController:(nonnull UIViewController *)presentingViewController playerWithURL:(nonnull NSURL *)url animated:(BOOL)animated; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Models/LIFEScreenshotContext.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEScreenshotContext.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @interface LIFEScreenshotContext : NSObject 22 | 23 | @property (nonatomic, readonly) UIStatusBarStyle statusBarStyle; 24 | @property (nonatomic, readonly) BOOL statusBarHidden; 25 | 26 | + (instancetype)currentContext; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Additions/Buglife+UIStuff.h: -------------------------------------------------------------------------------- 1 | // 2 | // Buglife+UIStuff.h 3 | // Copyright (C) 2018 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | 18 | #import "Buglife+Protected.h" 19 | 20 | @interface Buglife (UIStuff) 21 | 22 | - (void)_presentAlertControllerForInvocation:(LIFEInvocationOptions)invocation withScreenshot:(UIImage *)screenshot; 23 | - (void)_notifyBuglifeInvoked; 24 | 25 | @end 26 | 27 | void LIFELoadCategoryFor_BuglifeUIStuff(void); 28 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Additions/UIApplication+LIFEAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIApplication+LIFEAdditions.h 3 | // Copyright (C) 2015-2018 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | 18 | #import 19 | #import "LIFECategories.h" 20 | 21 | @interface UIApplication (LIFEAdditions) 22 | 23 | - (nonnull UIImage *)life_screenshot; 24 | - (nullable NSString *)life_hostApplicationName; 25 | 26 | @end 27 | 28 | LIFE_CATEGORY_FUNCTION_DECL(UIApplication); 29 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Services/LIFELogFacility.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFELogFacility.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @interface LIFELogFacility : NSObject 22 | 23 | - (void)fetchFormattedLogsToQueue:(dispatch_queue_t)returnQueue completion:(void (^)(NSString *))completionHandler; 24 | - (NSString *)formattedLogs; // don't call this on the main thread! 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Services/LIFESwizzler.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFESwizzler.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @interface LIFESwizzler : NSObject 22 | 23 | + (BOOL)instanceSwizzleFromClass:(Class)origClass andMethod:(SEL)origSel toClass:(Class)altClass andMethod:(SEL)altSel; 24 | 25 | IMP LIFEReplaceMethodWithBlock(Class c, SEL origSEL, id block); 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Services/LIFEAppInfoProvider.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEAppInfoProvider.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @class LIFEAppInfo; 22 | 23 | @interface LIFEAppInfoProvider : NSObject 24 | 25 | - (void)asyncFetchAppInfoToQueue:(dispatch_queue_t)completionQueue completion:(void (^)(LIFEAppInfo *))completionHandler; 26 | - (LIFEAppInfo *)syncFetchAppInfo; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/Jello View/LIFEJelloLayer.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEJelloLayer.h 3 | // Copyright (C) 2018 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @class LIFEJelloLayer; 22 | 23 | @protocol LIFEJelloLayerDelegate 24 | 25 | - (void)jelloLayer:(nonnull LIFEJelloLayer *)jelloLayer willStartAnimation:(nonnull CABasicAnimation *)animation; 26 | 27 | @end 28 | 29 | @interface LIFEJelloLayer : CALayer 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Additions/LIFECompatibilityUtils.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFECompatibilityUtils.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @interface LIFECompatibilityUtils : NSObject 22 | 23 | + (BOOL)isForceTouchAvailableForViewController:(UIViewController *)viewController; 24 | + (BOOL)isForceTouchAvailableForView:(UIView *)view; 25 | + (BOOL)isiOS9OrHigher; 26 | + (BOOL)isiOS10OrHigher; 27 | + (BOOL)isiOS11OrHigher; 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Services/LIFETelephonyNetworkInfo.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFETelephonyNetworkInfo.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | /** 22 | * Wraps CTTelephonyNetworkInfo & CTCarrier 23 | */ 24 | @interface LIFETelephonyNetworkInfo : NSObject 25 | 26 | @property (nonatomic, nullable, readonly) NSString *carrierName; 27 | @property (nonatomic, nullable, readonly) NSString *currentRadioAccessTechnology; 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Services/LIFEDeviceInfoProvider.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEDeviceInfoProvider.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | #import "LIFEAttribute.h" 21 | 22 | @class LIFEDeviceInfo; 23 | 24 | @interface LIFEDeviceInfoProvider : NSObject 25 | 26 | - (void)fetchDeviceInfoToQueue:(dispatch_queue_t)completionQueue completion:(void (^)(LIFEDeviceInfo *deviceInfo, LIFEAttributes *systemAttributes))completionHandler; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Additions/UIViewController+LIFEAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+LIFEAdditions.h 3 | // Copyright (C) 2018 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | #import "LIFECategories.h" 21 | 22 | @class LIFEContainerViewController; 23 | 24 | @interface UIViewController (LIFEAdditions) 25 | 26 | @property (nullable, nonatomic, readonly) LIFEContainerViewController *life_containerViewController; 27 | 28 | @end 29 | 30 | LIFE_CATEGORY_FUNCTION_DECL(UIViewController); 31 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/LIFEReportView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEReportView.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @class LIFEAttachmentButton; 22 | @class LIFEWhatHappenedTextView; 23 | 24 | @interface LIFEReportView : UIView 25 | 26 | @property (nonatomic, readonly) LIFEAttachmentButton *attachmentButton; 27 | @property (nonatomic, readonly) LIFEWhatHappenedTextView *whatHappenedTextView; 28 | @property (nonatomic) CGFloat bottomInset; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Controllers/Image Editor/LIFEImageEditorSegmentedControl.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEImageEditorSegmentedControl.h 3 | // Copyright (C) 2018 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | #import "LIFEToolButton.h" 21 | 22 | // Has the same basic functionality as a UISegmentedControl, 23 | // however it's styled to look like more of a UITabBar 24 | @interface LIFEImageEditorSegmentedControl : UIControl 25 | 26 | @property (nonatomic, readonly) LIFEToolButtonType selectedTool; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Models/LIFEAppInfo.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEAppInfo.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @interface LIFEAppInfo : NSObject 22 | 23 | @property (nonatomic, copy) NSString *bundleShortVersion; 24 | @property (nonatomic, copy) NSString *bundleVersion; 25 | @property (nonatomic, copy) NSString *bundleIdentifier; 26 | @property (nonatomic, copy) NSString *bundleName; 27 | 28 | - (NSDictionary *)JSONDictionary; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018-2019 Buglife, Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 9 | of the Software, and to permit persons to whom the Software is furnished to do 10 | so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /LocationSpoofer.podspec: -------------------------------------------------------------------------------- 1 | # 2 | # Be sure to run `pod lib lint LocationSpoofer.podspec' to ensure this is a 3 | # valid spec before submitting. 4 | # 5 | # Any lines starting with a # are optional, but their use is encouraged 6 | # To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html 7 | # 8 | 9 | Pod::Spec.new do |s| 10 | s.name = 'LocationSpoofer' 11 | s.version = '0.1.0' 12 | s.summary = 'Easy location mocking.' 13 | s.description = 'LocationSpoofer is an iOS library for spoofing / mocking location, without changing any of your existing CoreLocation code.' 14 | s.homepage = 'https://buglife.com' 15 | s.license = { :type => 'MIT', :file => 'LICENSE' } 16 | s.author = { 'buglife' => 'support@buglife.com' } 17 | s.source = { :git => 'https://github.com/buglife/LocationSpoofer.git', :tag => s.version.to_s } 18 | s.ios.deployment_target = '10.0' 19 | s.source_files = 'LocationSpoofer/Classes/**/*' 20 | s.public_header_files = 'LocationSpoofer/Classes/Public/**/*.h' 21 | s.frameworks = 'UIKit', 'MapKit', 'CoreLocation' 22 | end 23 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/Toast/LIFEToastControllerView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEToastControllerView.h 3 | // Copyright (C) 2018 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | static const CGFloat LIFEToastControllerViewDismissedOffsetY = 140.0f; 22 | 23 | @class LIFEToastView; 24 | 25 | // Mostly just a transparent view 26 | @interface LIFEToastControllerView : UIView 27 | 28 | @property (nonnull, nonatomic, readonly) LIFEToastView *toastView; 29 | @property (nonatomic) CGFloat toastViewOffsetY; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Services/LIFEReachability.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEReachability.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | 18 | #import 19 | #import 20 | 21 | @class LIFEReachability; 22 | 23 | @interface LIFEReachability : NSObject 24 | 25 | @property (nonatomic, assign) BOOL reachableOnWWAN; 26 | 27 | +(instancetype)reachabilityForLocalWiFi; 28 | 29 | -(instancetype)initWithReachabilityRef:(SCNetworkReachabilityRef)ref; 30 | 31 | -(BOOL)isReachableViaWiFi; 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Models/LIFEDeviceBatteryState.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEDeviceBatteryState.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #ifndef LIFEDeviceBatteryState_h 20 | #define LIFEDeviceBatteryState_h 21 | 22 | #import 23 | 24 | // @see UIDeviceBatteryState 25 | typedef NS_ENUM(NSInteger, LIFEDeviceBatteryState) { 26 | LIFEDeviceBatteryStateUnknown = 0, 27 | LIFEDeviceBatteryStateUnplugged = 1, 28 | LIFEDeviceBatteryStateCharging = 2, 29 | LIFEDeviceBatteryStateFull = 3 30 | }; 31 | 32 | #endif /* LIFEDeviceBatteryState_h */ 33 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Controllers/Alert View/LIFEAlertActionView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEAlertActionView.h 3 | // Copyright (C) 2018 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | typedef UIAlertActionStyle LIFEAlertActionStyle; 22 | 23 | // This should probably renamed `LIFEAlertActionButton`. 24 | // Only reason I named it *View was because that's how UIKit 25 | // internally names their alert view buttons. 26 | @interface LIFEAlertActionView : UIControl 27 | 28 | - (nonnull instancetype)initWithTitle:(nonnull NSString *)title style:(LIFEAlertActionStyle)style; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Additions/UIWindow+LIFEAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIWindow+LIFEAdditions.m 3 | // Pods 4 | // 5 | // Created by David Schukin on 11/4/15. 6 | // 7 | // 8 | 9 | #import "UIWindow+LIFEAdditions.h" 10 | #import "Buglife+Protected.h" 11 | #import "LIFESwizzler.h" 12 | 13 | @implementation LIFEUIWindow 14 | 15 | /* 16 | If you're wondering why we take this insane approach to swizzling, it's because 17 | http://petersteinberger.com/blog/2014/a-story-about-swizzling-the-right-way-and-touch-forwarding/ 18 | */ 19 | + (void)monkeyPatchMotionEndedForBuglife:(Buglife *)buglife 20 | { 21 | static dispatch_once_t onceToken; 22 | dispatch_once(&onceToken, ^{ 23 | [self _monkeyPatchMotionEndedForBuglife:buglife]; 24 | }); 25 | } 26 | 27 | + (void)_monkeyPatchMotionEndedForBuglife:(Buglife *)buglife 28 | { 29 | __block IMP originalIMP = LIFEReplaceMethodWithBlock([UIWindow class], @selector(motionEnded:withEvent:), ^(UIWindow *_self, UIEventSubtype motion, UIEvent *event) { 30 | ((void ( *)(id, SEL, UIEventSubtype, UIEvent *))originalIMP)(_self, @selector(motionEnded:withEvent:), motion, event); 31 | [buglife life_motionEnded:motion withEvent:event]; 32 | }); 33 | } 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/Container Window/LIFEContainerWindow.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEContainerWindow.h 3 | // Copyright (C) 2018 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @class LIFEContainerViewController; 22 | 23 | /** 24 | * Window that is placed above the host application's windows, 25 | * that contains all Buglife-related view controllers. 26 | * This class deprecates LIFEOverlayWindow & LIFEReportWindow. 27 | */ 28 | @interface LIFEContainerWindow : UIWindow 29 | 30 | + (nonnull instancetype)window; 31 | - (nonnull LIFEContainerViewController *)containerViewController; 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Controllers/Image Editor/LIFEToolButton.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEToolButton.h 3 | // Copyright (C) 2018 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | typedef NS_ENUM(NSInteger, LIFEToolButtonType) 22 | { 23 | LIFEToolButtonTypeArrow = 0, 24 | LIFEToolButtonTypeLoupe = 1, 25 | LIFEToolButtonTypeBlur = 2 26 | }; 27 | 28 | @interface LIFEToolButton : UIControl 29 | 30 | @property (nonnull, nonatomic) UIImageView *imageView; 31 | @property (nonnull, nonatomic) UILabel *titleView; 32 | 33 | - (void)setTintColor:(nonnull UIColor *)tintColor forState:(UIControlState)state; 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Protected/LIFEInputField+Protected.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEInputField+Protected.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | 18 | #import "LIFEInputField.h" 19 | 20 | static NSString * _Nonnull const LIFEInputFieldSummaryAttributeName = @"com.buglife.what_happened"; 21 | static NSString * _Nonnull const LIFEInputFieldUserEmailAttributeName = @"com.buglife.user_email"; 22 | 23 | @interface LIFEInputField (Protected) 24 | 25 | - (nonnull instancetype)initInternal; 26 | 27 | - (BOOL)isUserEmailField; 28 | - (BOOL)isSummaryField; 29 | 30 | @property (nonatomic, getter=isSystemAttribute) BOOL systemAttribute; 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Services/LIFEUserDefaults.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEUserDefaults.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @interface LIFEUserDefaults : NSObject 22 | 23 | + (instancetype)sharedDefaults; 24 | 25 | - (void)setLastFloatingButtonCenterPoint:(CGPoint)centerPoint; 26 | - (void)getLastFloatingButtonCenterPointToQueue:(dispatch_queue_t)completionQueue completion:(void (^)(CGPoint centerPoint))completionHandler; 27 | 28 | // Email address that was last submited via the userEmail text field 29 | @property (nonatomic) NSString *lastSubmittedUserEmailFieldValue; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/GestureRecognizers/LIFEPanGestureRecognizer.m: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEPanGestureRecognizer.m 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import "LIFEPanGestureRecognizer.h" 20 | #import 21 | 22 | @implementation LIFEPanGestureRecognizer 23 | 24 | //- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 25 | //{ 26 | // [super touchesBegan:touches withEvent:event]; 27 | // 28 | // // default UIPanGestureRecognizer doesn't begin until touches have moved a certain amount 29 | // self.state = UIGestureRecognizerStateBegan; 30 | //} 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Additions/NSLayoutConstraint+LIFEAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSLayoutConstraint+LIFEAdditions.m 3 | // 4 | // Created by David Schukin on 12/4/15. 5 | // 6 | // 7 | 8 | #import "NSLayoutConstraint+LIFEAdditions.h" 9 | 10 | @implementation LIFENSLayoutConstraint 11 | 12 | + (NSLayoutConstraint *)life_constraintPinningView:(UIView *)view attribute:(NSLayoutAttribute)attribute constant:(CGFloat)constant 13 | { 14 | return [NSLayoutConstraint constraintWithItem:view attribute:attribute relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:constant]; 15 | } 16 | 17 | + (NSLayoutConstraint *)life_constraintPinningView:(UIView *)view1 toView:(UIView *)view2 attribute:(NSLayoutAttribute)attribute 18 | { 19 | return [NSLayoutConstraint constraintWithItem:view1 attribute:attribute relatedBy:NSLayoutRelationEqual toItem:view2 attribute:attribute multiplier:1 constant:0]; 20 | } 21 | 22 | + (NSLayoutConstraint *)life_constraintPinningView:(UIView *)view toSuperviewWithAttribute:(NSLayoutAttribute)attribute 23 | { 24 | return [NSLayoutConstraint constraintWithItem:view attribute:attribute relatedBy:NSLayoutRelationEqual toItem:view.superview attribute:attribute multiplier:1 constant:0]; 25 | } 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Additions/NSMutableDictionary+LIFEAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSMutableDictionary+LIFEAdditions.m 3 | // Pods 4 | // 5 | // Created by David Schukin on 11/26/15. 6 | // 7 | // 8 | 9 | #import "NSMutableDictionary+LIFEAdditions.h" 10 | 11 | @interface LIFENSMutableDictionary () 12 | 13 | @property (nonatomic) NSMutableDictionary *subject; 14 | 15 | @end 16 | 17 | @implementation LIFENSMutableDictionary : NSObject 18 | 19 | - (instancetype)initWithSubject:(NSMutableDictionary *)subject 20 | { 21 | self = [super init]; 22 | if (self) { 23 | _subject = subject; 24 | } 25 | return self; 26 | } 27 | 28 | - (void)life_safeSetObject:(id)object forKey:(id)key 29 | { 30 | [self.subject life_safeSetObject:object forKey:key]; 31 | } 32 | 33 | @end 34 | 35 | @implementation NSMutableDictionary (LIFEAdditions) 36 | 37 | + (void)life_loadCategory_NSMutableDictionaryLIFEAdditions { } 38 | 39 | - (void)life_safeSetObject:(id)object forKey:(id)key 40 | { 41 | if (object) { 42 | [self setObject:object forKey:key]; 43 | } 44 | } 45 | 46 | @end 47 | 48 | void LIFELoadCategoryFor_NSMutableDictionaryLIFEAdditions() { 49 | [NSMutableDictionary life_loadCategory_NSMutableDictionaryLIFEAdditions]; 50 | } 51 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/LIFEComponentPickerCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEComponentPickerCell.m 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import "LIFEComponentPickerCell.h" 20 | 21 | @interface LIFEComponentPickerCell () 22 | 23 | @end 24 | 25 | @implementation LIFEComponentPickerCell 26 | 27 | #pragma mark - Public methods 28 | 29 | + (NSString *)defaultIdentifier 30 | { 31 | return NSStringFromClass([self class]); 32 | } 33 | 34 | - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 35 | { 36 | self = [super initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:reuseIdentifier]; 37 | return self; 38 | } 39 | 40 | @end 41 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Protected/LIFEAwesomeLogger+Protected.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEBuglifeLogger+Protected.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | 18 | #import "LIFEAwesomeLogger.h" 19 | 20 | @class LIFEFileLogger; 21 | 22 | @interface LIFEAwesomeLogger (Protected) 23 | 24 | @property (nonatomic, readonly) LIFEFileLogger *fileLogger; 25 | @property (nonatomic, readonly) dispatch_queue_t workQueue; 26 | 27 | - (void)asyncFlushLogsAndGetArchivedLogDataWithCompletion:(void (^)(NSData *archivedLogData))completion; 28 | 29 | // Should be used for internal logging, where 30 | // the source file / function / line are irrelevant 31 | - (void)_logDebugMessage:(NSString *)message context:(NSInteger)context; 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/Toast/LIFEToastController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEToastViewController.h 3 | // Copyright (C) 2018 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @interface LIFEToastController : UIViewController 22 | 23 | @property (nonatomic) UIStatusBarStyle statusBarStyle; 24 | @property (nonatomic) BOOL statusBarHidden; 25 | 26 | @property (nonatomic, copy) void (^dismissHandler)(void); 27 | 28 | - (void)prepareAnimateIn; 29 | - (void)animateIn; 30 | - (void)didAnimateIn; 31 | 32 | // Preparing the haptic feedback generator is done in init(), so it's 33 | // best to initialize an instance of this class some time before calling 34 | // generateSuccessFeedback(). 35 | - (void)generateSuccessFeedback; 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/LIFEBugButtonWindow.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEBugButtonWindow.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @class LIFEBugButtonWindow; 22 | 23 | @protocol LIFEBugButtonWindowDelegate 24 | 25 | - (void)bugButtonWasTappedInWindow:(LIFEBugButtonWindow *)bugButtonWindow; 26 | 27 | @end 28 | 29 | @interface LIFEBugButtonWindow : UIWindow 30 | 31 | @property (nonatomic, weak) id lifeDelegate; // avoid naming collisions? 32 | 33 | - (void)setBugButtonHidden:(BOOL)hidden animated:(BOOL)animated; 34 | 35 | - (void)configureBugButtonWithForegroundColor:(UIColor *)foregroundColor backgroundColor:(UIColor *)backgroundColor; 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Models/LIFEScreenshotContext.m: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEScreenshotContext.m 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import "LIFEScreenshotContext.h" 20 | 21 | @interface LIFEScreenshotContext () 22 | 23 | @property (nonatomic) UIStatusBarStyle statusBarStyle; 24 | @property (nonatomic) BOOL statusBarHidden; 25 | 26 | @end 27 | 28 | @implementation LIFEScreenshotContext 29 | 30 | + (instancetype)currentContext 31 | { 32 | LIFEScreenshotContext *context = [[LIFEScreenshotContext alloc] init]; 33 | context.statusBarStyle = [[UIApplication sharedApplication] statusBarStyle]; 34 | context.statusBarHidden = [[UIApplication sharedApplication] isStatusBarHidden]; 35 | return context; 36 | } 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/LIFEPickerInputField.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEPickerInputField.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | 18 | #import "LIFEInputField.h" 19 | 20 | /** 21 | * Represents a `picker` style input field in the Buglife bug reporter interface, 22 | * that allows the user to select a single value from an array of options. 23 | */ 24 | @interface LIFEPickerInputField : LIFEInputField 25 | 26 | /** 27 | * Sets the options for the picker. 28 | * To set the `default` option, call `Buglife.setStringValue(_:forAttribute:)` with 29 | * an attribute name equal to the picker attribute name, and an attribute value 30 | * equal to one of the picker options. 31 | */ 32 | - (void)setOptions:(nonnull NSArray *)options; 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/LIFEAppearanceImpl.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEAppearanceImpl.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | #import "Buglife.h" // Import Buglife.h instead of LIFEAppearance.h so we don't get a "duplicate protocol definition" warning 21 | 22 | @interface LIFEAppearanceImpl : NSObject 23 | 24 | @property (class, nonatomic, nonnull, readonly) LIFEAppearanceImpl *sharedAppearance; 25 | 26 | @property (nonatomic, null_resettable) UIColor *tintColor; 27 | @property (nonatomic, null_resettable) UIColor *barTintColor; 28 | @property (nonatomic, null_resettable, copy) NSDictionary *titleTextAttributes; 29 | @property (nonatomic) UIStatusBarStyle statusBarStyle; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Controllers/LIFENavigationController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFENavigationController.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @interface LIFENavigationController : UINavigationController 22 | 23 | @property (nonatomic) BOOL navigationBarStyleClear; 24 | 25 | // This should only be used for temporarily hiding the status bar; 26 | // i.e. when you need to coordinate a transition. 27 | // Otherwise, by default LIFENavigationController should always show 28 | // the status bar, and use the style specified by LIFEAppearance. 29 | - (void)enableStatusBarOverrideHidden:(BOOL)hidden style:(UIStatusBarStyle)style; 30 | - (void)disableStatusBarOverride; 31 | 32 | @end 33 | 34 | @interface LIFENavigationBar : UINavigationBar 35 | @end 36 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Additions/LIFECategories.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFECategories.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | 18 | 19 | #import 20 | 21 | @interface LIFECategories : NSObject 22 | 23 | + (void)loadCategories; 24 | 25 | @end 26 | 27 | // Categories need to be explicitly loaded at runtime 28 | // in case the host application isn't compiled using the -ObjC flag 29 | #define LIFE_CATEGORY_METHOD_IMPL(className) + (void)life_loadCategory_ ## className ## LIFEAdditions { } 30 | #define LIFE_CATEGORY_FUNCTION_DECL(className) void LIFELoadCategoryFor_ ## className ## LIFEAdditions(void); 31 | #define LIFE_CATEGORY_FUNCTION_IMPL(className) void LIFELoadCategoryFor_ ## className ## LIFEAdditions(void) { [className life_loadCategory_ ## className ## LIFEAdditions]; } 32 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Additions/UIViewController+LIFEAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+LIFEAdditions.m 3 | // Copyright (C) 2018 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import "UIViewController+LIFEAdditions.h" 20 | #import "LIFEContainerViewController.h" 21 | 22 | @implementation UIViewController (LIFEAdditions) 23 | 24 | LIFE_CATEGORY_METHOD_IMPL(UIViewController) 25 | 26 | - (nullable LIFEContainerViewController *)life_containerViewController 27 | { 28 | if ([self.parentViewController isKindOfClass:[LIFEContainerViewController class]]) { 29 | return (LIFEContainerViewController *)self.parentViewController; 30 | } else { 31 | return [self.parentViewController life_containerViewController]; 32 | } 33 | } 34 | 35 | @end 36 | 37 | LIFE_CATEGORY_FUNCTION_IMPL(UIViewController); 38 | -------------------------------------------------------------------------------- /LocationSpoofer/Classes/Private/LOSPRootViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOSPRootViewController.h 3 | // 4 | // Copyright © 2019 Buglife, Inc. All rights reserved. 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // 24 | 25 | #import 26 | 27 | @interface LOSPRootViewController : UITableViewController 28 | @end 29 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Additions/NSError+LIFEAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSError+LIFEAdditions.m 3 | // Pods 4 | // 5 | // Created by David Schukin on 12/9/15. 6 | // 7 | // 8 | 9 | #import "NSError+LIFEAdditions.h" 10 | 11 | @implementation LIFENSError 12 | 13 | + (NSString *)life_debugDescriptionForError:(NSError *)error 14 | { 15 | return error.debugDescription; 16 | } 17 | 18 | #pragma mark - Factory methods 19 | 20 | static NSString * const kErrorDomain = @"com.buglife.NetworkManager.ErrorDomain"; 21 | static const NSInteger kErrorCodeUnexpectedStatusCode = 71; // starting at 71 cause why not 22 | 23 | + (NSError *)life_errorWithHTTPURLResponse:(NSHTTPURLResponse *)httpResponse 24 | { 25 | NSInteger statusCode = httpResponse.statusCode; 26 | NSString *requestID = httpResponse.allHeaderFields[@"X-Request-Id"]; 27 | NSString *description = [NSString stringWithFormat:@"Buglife API returned status code %ld.", (long)statusCode]; 28 | NSMutableDictionary *userInfo = @{@"statusCode" : @(statusCode)}.mutableCopy; 29 | 30 | if (requestID) { 31 | [userInfo setObject:requestID forKey:@"requestID"]; 32 | description = [description stringByAppendingFormat:@" Request ID: %@", requestID]; 33 | } 34 | 35 | userInfo[NSLocalizedDescriptionKey] = description; 36 | return [NSError errorWithDomain:kErrorDomain code:kErrorCodeUnexpectedStatusCode userInfo:userInfo]; 37 | } 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Controllers/Alert View/LIFEAlertAction.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEAlertAction.h 3 | // Copyright (C) 2018 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @class LIFEAlertAction; 22 | 23 | typedef void (^LIFEAlertActionHandler)(LIFEAlertAction * _Nonnull action); 24 | 25 | /** 26 | * A replica of UIAlertAction, which lets us access the `handler` property. 27 | */ 28 | @interface LIFEAlertAction : NSObject 29 | 30 | + (nonnull instancetype)actionWithTitle:(nonnull NSString *)title style:(UIAlertActionStyle)style handler:(nonnull LIFEAlertActionHandler)handler; 31 | 32 | @property (nonnull, nonatomic, readonly) NSString *title; 33 | @property (nonatomic, readonly) UIAlertActionStyle style; 34 | @property (nonnull, nonatomic, readonly) LIFEAlertActionHandler handler; 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Services/LIFENetworkManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFENetworkManager.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | typedef void (^LIFENetworkManagerSuccess)(id responseObject); 22 | typedef void (^LIFENetworkManagerFailure)(NSError *error); 23 | 24 | @interface LIFENetworkManager : NSObject 25 | 26 | - (NSURLSessionTask *)PUT:(NSString *)URLString parameters:(NSDictionary *)parameters callbackQueue:(dispatch_queue_t)callbackQueue success:(LIFENetworkManagerSuccess)success failure:(LIFENetworkManagerFailure)failure; 27 | - (NSURLSessionTask *)POST:(NSString *)URLString parameters:(NSDictionary *)parameters callbackQueue:(dispatch_queue_t)callbackQueue success:(LIFENetworkManagerSuccess)success failure:(LIFENetworkManagerFailure)failure; 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/LIFETextFieldCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFETextFieldCellTableViewCell.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | 18 | 19 | #import 20 | 21 | @class LIFETextFieldCell; 22 | 23 | @protocol LIFETextFieldCellDelegate 24 | 25 | - (void)textFieldCellDidReturn:(nonnull LIFETextFieldCell *)textFieldCell; 26 | - (void)textFieldCellDidChange:(nonnull LIFETextFieldCell *)textFieldCell; 27 | 28 | @end 29 | 30 | @class LIFEInputField; 31 | 32 | @interface LIFETextFieldCell : UITableViewCell 33 | 34 | + (nonnull NSString *)defaultIdentifier; 35 | 36 | @property (nonatomic, weak, nullable) id delegate; 37 | @property (nonatomic, nonnull, readonly) UITextField *textField; 38 | @property (nonatomic, nullable, copy) LIFEInputField *inputField; 39 | 40 | @end 41 | -------------------------------------------------------------------------------- /LocationSpoofer/Classes/Public/LOSPTrip+LOSPPresets.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOSPTrip+LOSPPresets.h 3 | // 4 | // Copyright © 2019 Buglife, Inc. All rights reserved. 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // 24 | 25 | #import "LOSPTrip.h" 26 | 27 | @interface LOSPTrip (LOSPPresets) 28 | 29 | + (nonnull instancetype)lombardStreet; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Controllers/Alert View/LIFEAlertAction.m: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEAlertAction.m 3 | // Copyright (C) 2018 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import "LIFEAlertAction.h" 20 | #import "LIFEMacros.h" 21 | 22 | @interface LIFEAlertAction () 23 | 24 | @property (nonnull, nonatomic) NSString *title; 25 | @property (nonatomic) UIAlertActionStyle style; 26 | @property (nonnull, nonatomic) LIFEAlertActionHandler handler; 27 | 28 | @end 29 | 30 | @implementation LIFEAlertAction 31 | 32 | + (nonnull instancetype)actionWithTitle:(nonnull NSString *)title style:(UIAlertActionStyle)style handler:(nonnull LIFEAlertActionHandler)handler 33 | { 34 | let action = [[LIFEAlertAction alloc] init]; 35 | action.title = title; 36 | action.style = style; 37 | action.handler = handler; 38 | return action; 39 | } 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Models/LIFEAnnotation.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEAnnotation.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | typedef NS_ENUM(NSInteger, LIFEAnnotationType) 22 | { 23 | LIFEAnnotationTypeArrow, 24 | LIFEAnnotationTypeLoupe, 25 | LIFEAnnotationTypeBlur 26 | }; 27 | 28 | @interface LIFEAnnotation : NSObject 29 | 30 | @property (nonatomic, readonly) LIFEAnnotationType annotationType; 31 | @property (nonatomic, readonly) CGVector startVector; 32 | @property (nonatomic, readonly) CGVector endVector; 33 | 34 | - (null_unspecified instancetype)init NS_UNAVAILABLE; 35 | - (nonnull instancetype)initWithAnnotationType:(LIFEAnnotationType)annotationType startVector:(CGVector)startVector endVector:(CGVector)endVector NS_DESIGNATED_INITIALIZER; 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /LocationSpoofer/Classes/Private/UIView+LOSPAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+LOSPAdditions.h 3 | // 4 | // Copyright © 2019 Buglife, Inc. All rights reserved. 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // 24 | 25 | #import 26 | 27 | @interface UIView (LOSPAdditions) 28 | 29 | - (nonnull NSLayoutAnchor *)losp_safeAreaBottomAnchor; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Additions/UIBezierPath+LIFEAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIBezierPath+LIFEAdditions.h 3 | // Pods 4 | // 5 | // Created by David Schukin on 12/3/15. 6 | // 7 | // 8 | 9 | #import 10 | 11 | @interface LIFEUIBezierPath :NSObject 12 | 13 | #pragma mark - Dragonfly 14 | 15 | + (UIBezierPath *)life_dragonFlyBezierPath; 16 | + (CGSize)life_dragonFlyBezierPathSize; 17 | 18 | #pragma mark - Everything else 19 | 20 | + (UIBezierPath *)life_bezierPathWithArrowFromPoint:(CGPoint)startPoint toPoint:(CGPoint)endPoint; 21 | + (UIBezierPath *)life_bezierPathWithArrowFromPoint:(CGPoint)startPoint toPoint:(CGPoint)endPoint minTailWidth:(CGFloat)minTailWidth maxTailWith:(CGFloat)maxTailWidth headWidth:(CGFloat)headWidth headLength:(CGFloat)headLength; 22 | + (UIBezierPath *)life_bezierPathForDiscloserIndicator; 23 | 24 | #pragma mark - Helper methods 25 | 26 | @end 27 | 28 | void LIFELoadCategoryFor_UIBezierPathLIFEAdditions(void); 29 | 30 | @interface UIBezierPath (LIFEAdditions) 31 | 32 | - (NSArray *)life_controlPoints; 33 | 34 | @end 35 | 36 | CGFloat LIFECGPointDistance(CGPoint p1, CGPoint p2); 37 | CGFloat LIFETailWidthForArrowLength(CGFloat arrowLength); 38 | CGFloat LIFEHeadLengthForArrowLength(CGFloat arrowLength); 39 | CGFloat LIFEHeadWidthForArrowWithHeadLength(CGFloat headLength); 40 | CGFloat LIFEMinTailWidthForArrowWithHeadWidth(CGFloat arrowHeadWidth); 41 | CGFloat LIFEMaxTailWidthForArrowWithHeadWidth(CGFloat arrowHeadWidth); 42 | -------------------------------------------------------------------------------- /Example/LocationSpoofer/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "20x20", 5 | "idiom" : "iphone", 6 | "filename" : "icon_40.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "20x20", 11 | "idiom" : "iphone", 12 | "filename" : "icon_60.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "29x29", 17 | "idiom" : "iphone", 18 | "filename" : "icon_58.png", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "size" : "29x29", 23 | "idiom" : "iphone", 24 | "filename" : "icon_87.png", 25 | "scale" : "3x" 26 | }, 27 | { 28 | "size" : "40x40", 29 | "idiom" : "iphone", 30 | "filename" : "icon_80.png", 31 | "scale" : "2x" 32 | }, 33 | { 34 | "size" : "40x40", 35 | "idiom" : "iphone", 36 | "filename" : "icon_120-1.png", 37 | "scale" : "3x" 38 | }, 39 | { 40 | "size" : "60x60", 41 | "idiom" : "iphone", 42 | "filename" : "icon_120.png", 43 | "scale" : "2x" 44 | }, 45 | { 46 | "size" : "60x60", 47 | "idiom" : "iphone", 48 | "filename" : "icon_180.png", 49 | "scale" : "3x" 50 | }, 51 | { 52 | "size" : "1024x1024", 53 | "idiom" : "ios-marketing", 54 | "filename" : "icon_1024.png", 55 | "scale" : "1x" 56 | } 57 | ], 58 | "info" : { 59 | "version" : 1, 60 | "author" : "xcode" 61 | } 62 | } -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Controllers/LIFEStepsToReproTableViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEStepsToReproTableViewController.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @class LIFEReproStep; 22 | @class LIFEStepsToReproTableViewController; 23 | 24 | @protocol LIFEStepsToReproTableViewControllerDelegate 25 | 26 | - (void)stepsToReproTableViewController:(LIFEStepsToReproTableViewController *)stepsToReproTableViewController didUpdateReproSteps:(NSArray *)reproSteps; 27 | 28 | @end 29 | 30 | @interface LIFEStepsToReproTableViewController : UITableViewController 31 | 32 | @property (nonatomic, weak) id delegate; 33 | 34 | - (instancetype)init NS_UNAVAILABLE; 35 | - (instancetype)initWithReproSteps:(NSArray *)reproSteps; 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/LIFEAppearance.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEAppearance.h 3 | // Buglife 4 | // 5 | // Copyright (c) 2017 Buglife, Inc. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | /** 11 | * To customize the visual appearance of Buglife views & 12 | * view controllers, get an instance of an object conforming 13 | * to this protocol using the `Buglife.appearance` property, 14 | * then use any of that object's corresponding LIFEAppearance 15 | * properties. 16 | * 17 | * Example: 18 | * 19 | * ```objc 20 | * // Objective-C 21 | * [Buglife sharedBuglife].appearance.tintColor = [UIColor redColor]; 22 | * ``` 23 | * 24 | * ```swift 25 | * // Swift 26 | * Buglife.shared().apperance.tintColor = .red 27 | * ``` 28 | * 29 | * @see `Buglife.appearance` 30 | */ 31 | @protocol LIFEAppearance 32 | 33 | /** 34 | * The color of interactive elements, such as navigation bar buttons. 35 | */ 36 | @property (nonatomic, null_resettable) UIColor *tintColor; 37 | 38 | /** 39 | * The background color of navigation bars & toolbars. 40 | */ 41 | @property (nonatomic, null_resettable) UIColor *barTintColor; 42 | 43 | /** 44 | * Display attributes for the bar’s title text. 45 | */ 46 | @property (nonatomic, null_resettable, copy) NSDictionary *titleTextAttributes; 47 | 48 | /** 49 | * The status bar style, if & when the status bar is visible. 50 | */ 51 | @property (nonatomic) UIStatusBarStyle statusBarStyle; 52 | 53 | @end 54 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Models/LIFEVideoAttachment.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEScreenRecording.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | #import "LIFEUserFacingAttachment.h" 21 | 22 | @class UIImage; 23 | 24 | @interface LIFEVideoAttachment : NSObject 25 | 26 | @property (nonnull, readonly) NSURL *url; 27 | @property (nonnull, readonly) NSString *uniformTypeIdentifier; 28 | @property (nonnull, readonly) NSString *filename; 29 | @property (nonnull, readonly) NSDate *creationDate; 30 | @property (nonatomic, getter=isProcessing) BOOL processing; 31 | 32 | - (nonnull instancetype)initWithFileURL:(nonnull NSURL *)url uniformTypeIdentifier:(nonnull NSString *)uniformTypeIdentifier filename:(nonnull NSString *)filename isProcessing:(BOOL)processing; 33 | - (nullable UIImage *)getThumbnail; 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /Example/LocationSpoofer/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // LocationSpoofer 4 | // 5 | // Copyright © 2019 Buglife, Inc. All rights reserved. 6 | // 7 | 8 | import UIKit 9 | import LocationSpoofer 10 | import Buglife 11 | 12 | @UIApplicationMain 13 | class AppDelegate: UIResponder, UIApplicationDelegate { 14 | 15 | var window: UIWindow? 16 | 17 | 18 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 19 | 20 | let vc = ViewController() 21 | let nav = UINavigationController(rootViewController: vc) 22 | let window = UIWindow(frame: UIScreen.main.bounds) 23 | window.rootViewController = nav 24 | window.makeKeyAndVisible() 25 | self.window = window 26 | 27 | configureBuglife() 28 | 29 | return true 30 | } 31 | 32 | private func configureBuglife() { 33 | Buglife.shared().start(withAPIKey: "QRhrGr7g7W5EvGRTK9ctmgtt") 34 | 35 | // Customize Buglife's appearance 36 | Buglife.shared().appearance.tintColor = .white 37 | Buglife.shared().appearance.barTintColor = .ls_appTintColor 38 | Buglife.shared().appearance.statusBarStyle = .lightContent 39 | 40 | // Show both the email field and the summary field 41 | Buglife.shared().inputFields = [LIFETextInputField.userEmail(), LIFETextInputField.summary()]; 42 | } 43 | } 44 | 45 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Controllers/LIFETextInputViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFETextInputViewController.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @class LIFETextInputViewController; 22 | 23 | @protocol LIFETextInputViewControllerDelegate 24 | 25 | - (void)textInputViewControllerTextDidChange:(LIFETextInputViewController *)textInputViewController; 26 | 27 | @end 28 | 29 | @interface LIFETextInputViewController : UITableViewController 30 | 31 | @property (nonatomic, readonly) NSString *text; 32 | @property (nonatomic) NSString *placeholder; 33 | @property (nonatomic, weak) id delegate; 34 | 35 | - (instancetype)initWithText:(NSString *)text; 36 | - (instancetype)init NS_UNAVAILABLE; 37 | - (instancetype)initWithStyle:(UITableViewStyle)style NS_UNAVAILABLE; 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/LIFEStepsToReproduceCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEStepsToReproduceCell.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @class LIFEStepsToReproduceCell; 22 | @class LIFEReproStep; 23 | 24 | @protocol LIFEStepsToReproduceCellDelegate 25 | 26 | - (void)stepsToReproduceCellDidReturn:(nonnull LIFEStepsToReproduceCell *)stepsToReproduceCell; 27 | 28 | @end 29 | 30 | @interface LIFEStepsToReproduceCell : UITableViewCell 31 | 32 | + (nonnull NSString *)defaultIdentifier; 33 | @property (nonatomic, weak, null_unspecified) id delegate; 34 | @property (nullable, nonatomic, strong) LIFEReproStep *reproStep; 35 | - (void)setStepNumber:(NSUInteger)stepNumber; 36 | + (CGFloat)heightWithReproStep:(nonnull LIFEReproStep *)reproStep boundsWidth:(CGFloat)boundsWidth; 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Controllers/Alert View/LIFEAlertController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEContainerAlertToImageEditorAnimator.m 3 | // Copyright (C) 2017-2018 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @class LIFEAlertView; 22 | @class LIFEAlertAction; 23 | 24 | @interface LIFEAlertController : UIViewController 25 | 26 | @property (nonnull, nonatomic, readonly) LIFEAlertView *alertView; 27 | @property (nullable, nonatomic, readonly) NSLayoutConstraint *alertViewWidthConstriant; 28 | 29 | + (nonnull instancetype)alertControllerWithTitle:(nullable NSString *)title message:(nullable NSString *)message preferredStyle:(UIAlertControllerStyle)preferredStyle; 30 | 31 | - (void)setImage:(nullable UIImage *)image; 32 | - (void)addAction:(nonnull LIFEAlertAction *)action; 33 | - (void)setDarkOverlayHidden:(BOOL)hidden; 34 | - (void)prepareExpandToDismissTransition; 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /LocationSpoofer/Classes/Private/MKMapView+LOSPAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKMapView+LOSPAdditions.h 3 | // 4 | // Copyright © 2019 Buglife, Inc. All rights reserved. 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // 24 | 25 | #import 26 | 27 | @interface MKMapView (LOSPAdditions) 28 | 29 | - (void)losp_zoomToLocation:(nonnull CLLocation *)location animated:(BOOL)animated; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Additions/UIColor+LIFEAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIColor+LIFEAdditions.h 3 | // Copyright (C) 2015-2018 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | #import "LIFECategories.h" 21 | 22 | @interface UIColor (LIFEAdditions) 23 | 24 | + (nonnull instancetype)life_annotationStrokeColor; 25 | + (nonnull instancetype)life_annotationFillColor; 26 | 27 | #pragma mark - Brand colors 28 | 29 | + (nonnull instancetype)life_buglifeTurqoise; 30 | + (nonnull instancetype)life_buglifeNavy; 31 | 32 | #pragma mark - Helper methods 33 | 34 | - (nonnull instancetype)life_grayscale; 35 | + (nonnull instancetype)life_colorWithHexValue:(NSUInteger)hexValue; 36 | + (nullable instancetype)life_debugColorWithAlpha:(CGFloat)alpha __deprecated_msg("This should only be used for debug builds!");; 37 | - (BOOL)life_isLightColor; 38 | 39 | @end 40 | 41 | LIFE_CATEGORY_FUNCTION_DECL(UIColor); 42 | -------------------------------------------------------------------------------- /LocationSpoofer/Classes/Public/LOSPLocationProvider.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOSPLocationProvider.h 3 | // 4 | // Copyright © 2019 Buglife, Inc. All rights reserved. 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // 24 | 25 | @class CLLocation; 26 | 27 | NS_SWIFT_NAME(LocationProvider) 28 | @protocol LOSPLocationProvider 29 | 30 | - (nullable CLLocation *)locationAtTimestamp:(NSDate *)timestamp; 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /LocationSpoofer/Classes/Private/LOSPLocationPickerViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOSPLocationPickerViewController.h 3 | // 4 | // Copyright © 2019 Buglife, Inc. All rights reserved. 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // 24 | 25 | #import 26 | 27 | NS_ASSUME_NONNULL_BEGIN 28 | 29 | @interface LOSPLocationPickerViewController : UIViewController 30 | 31 | @end 32 | 33 | NS_ASSUME_NONNULL_END 34 | -------------------------------------------------------------------------------- /LocationSpoofer/Classes/Public/MKCoordinateSpan+LOSPAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKCoordinateSpan+LOSPAdditions.m 3 | // 4 | // Copyright © 2019 Buglife, Inc. All rights reserved. 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // 24 | 25 | #import "MKCoordinateSpan+LOSPAdditions.h" 26 | 27 | const MKCoordinateSpan LOSPCoordinateSpanCity = { 0.18, 0.18 }; 28 | const MKCoordinateSpan LOSPCoordinateSpanNeighborhood = { 0.4, 0.4 }; 29 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Controllers/Alert View/LIFEAlertView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEAlertView.h 3 | // Copyright (C) 2018 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @class LIFEAlertAction; 22 | 23 | @protocol LIFEAlertViewDelegate 24 | 25 | - (void)alertViewDidSelectAction:(nonnull LIFEAlertAction *)action; 26 | 27 | @end 28 | 29 | @interface LIFEAlertView : UIView 30 | 31 | - (nonnull instancetype)initWithTitle:(nonnull NSString *)title; 32 | - (void)setImage:(nullable UIImage *)image; 33 | - (void)addAction:(nonnull LIFEAlertAction *)action; 34 | 35 | @property (nullable, weak, nonatomic) id delegate; 36 | @property (nonnull, nonatomic, readonly) UIImageView *imageView; 37 | 38 | - (void)setBackgroundViewBackgroundColor:(nullable UIColor *)backgroundColor; 39 | // This should only be used by view controller animators 40 | - (void)performDismissTransition; 41 | 42 | @end 43 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Controllers/LIFEReportViewControllerDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEReportViewControllerDelegate.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | @class LIFEReport; 20 | @class LIFEReportBuilder; 21 | @class LIFEReportTableViewController; 22 | 23 | @protocol LIFEReportViewControllerDelegate 24 | 25 | - (BOOL)reportViewControllerShouldSubmitSynchronously:(nonnull LIFEReportTableViewController *)reportViewController; 26 | 27 | - (void)reportViewControllerDidCancel:(nonnull LIFEReportTableViewController *)reportViewController; 28 | 29 | // The reportViewController should call this when it's done 30 | // setting all user-configurable fields on the report builder 31 | - (void)reportViewController:(nonnull LIFEReportTableViewController *)reportViewController shouldCompleteReportBuilder:(nonnull LIFEReportBuilder *)reportBuilder completion:(void (^_Nullable)(BOOL finished))completion; 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Models/LIFEReportOwner.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEReportOwner.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | 18 | 19 | #import 20 | 21 | typedef NS_ENUM(NSInteger, LIFEReportOwnerType) { 22 | LIFEReportOwnerTypeAPIKey, 23 | LIFEReportOwnerTypeEmail 24 | }; 25 | 26 | 27 | @interface LIFEReportOwner : NSObject 28 | 29 | + (nonnull instancetype)reportOwnerWithAPIKey:(nonnull NSString *)apiKey; 30 | + (nonnull instancetype)reportOwnerWithEmail:(nonnull NSString *)email; 31 | 32 | @property (nonatomic, readonly) LIFEReportOwnerType ownerType; 33 | @property (nonnull, nonatomic, readonly) NSString *ownerIdentifier; // this is an API key, or email address, depending on the owner type 34 | 35 | // god I wish I had Swift enums 36 | - (void)switchCaseAPIKey:(nonnull void (^)( NSString * _Nonnull apiKey))apiKeyBlock email:(nonnull void (^)(NSString * _Nonnull email))emailBlock; 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/LIFEAnnotatedImageView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEAnnotatedImageView.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @class LIFEAnnotationView; 22 | @class LIFEAnnotatedImage; 23 | 24 | @interface LIFEAnnotatedImageView : UIView 25 | 26 | @property (nonatomic, readonly, nonnull) NSArray *annotationViews; 27 | @property (nonatomic, readonly, nonnull) UIImageView *sourceImageView; 28 | 29 | - (nonnull instancetype)initWithAnnotatedImage:(nonnull LIFEAnnotatedImage *)annotatedImage; 30 | 31 | - (void)addAnnotationView:(nonnull LIFEAnnotationView *)annotationView; 32 | - (void)animateAddedAnnotationView:(nonnull LIFEAnnotationView *)annotationView; 33 | - (void)removeAnnotationView:(nonnull LIFEAnnotationView *)annotationView; 34 | - (void)updateLoupeAnnotationViewsWithSourceImage:(nonnull UIImage *)sourceImage; 35 | - (CGFloat)aspectRatio; 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/Jello View/LIFEJelloLayer.m: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEJelloLayer.m 3 | // Copyright (C) 2018 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import "LIFEJelloLayer.h" 20 | #import "LIFEMacros.h" 21 | 22 | @implementation LIFEJelloLayer 23 | 24 | - (void)addAnimation:(CAAnimation *)anim forKey:(NSString *)key 25 | { 26 | [super addAnimation:anim forKey:key]; 27 | 28 | if ([anim isKindOfClass:[CABasicAnimation class]]) { 29 | let basicAnimation = (CABasicAnimation *)anim; 30 | 31 | if ([basicAnimation.keyPath isEqualToString:NSStringFromSelector(@selector(position))]) { 32 | if ([self.delegate conformsToProtocol:@protocol(LIFEJelloLayerDelegate)]) { 33 | id delegate = (id)self.delegate; 34 | [delegate jelloLayer:self willStartAnimation:basicAnimation]; 35 | } 36 | } 37 | } 38 | } 39 | 40 | @end 41 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Services/LIFEDependencyLoader.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEDependencyLoader.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | 18 | #import 19 | #import "LIFEAVFoundation.h" 20 | 21 | /** 22 | * We dynamically load frameworks at runtime. Why? Because for developers manually 23 | * installing the Buglife SDK, adding necessary frameworks is a PITA. Dynamically 24 | * loading frameworks at runtime allows us to minimize dependencies, and to 25 | * be ridiculously easy to install :) 26 | * This also gives us the flexibility to easily target other platforms (i.e. watchOS) 27 | * in the future. 28 | * 29 | * LIFELoad* functions should only be called *as needed*, rather than all at once. 30 | * This is to minimize the performance impact of loading individual frameworks. 31 | */ 32 | @interface LIFEDependencyLoader : NSObject 33 | @end 34 | 35 | void LIFELoadAVKit(void); 36 | void LIFELoadPhotosFramework(void); 37 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Services/Logging/LIFEJSONLogFileFormatter.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEJSONLogFileFormatter.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | 18 | 19 | // Software License Agreement (BSD License) 20 | // 21 | // Copyright (c) 2010-2016, Deusty, LLC 22 | // All rights reserved. 23 | // 24 | // Redistribution and use of this software in source and binary forms, 25 | // with or without modification, are permitted provided that the following conditions are met: 26 | // 27 | // * Redistributions of source code must retain the above copyright notice, 28 | // this list of conditions and the following disclaimer. 29 | // 30 | // * Neither the name of Deusty nor the names of its contributors may be used 31 | // to endorse or promote products derived from this software without specific 32 | // prior written permission of Deusty, LLC. 33 | 34 | #import "LIFELog.h" 35 | 36 | @interface LIFEJSONLogFileFormatter : NSObject 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Controllers/LIFEPickerViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEPickerViewController.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @class LIFEPickerViewController; 22 | 23 | @protocol LIFEPickerViewControllerDelegate 24 | 25 | - (void)pickerViewController:(nonnull LIFEPickerViewController *)pickerViewController didSelectOptionAtIndex:(NSUInteger)index; 26 | - (NSUInteger)selectedIndexForPickerViewController:(nonnull LIFEPickerViewController *)pickerViewController; 27 | 28 | @end 29 | 30 | @class LIFEPickerInputField; 31 | 32 | @interface LIFEPickerViewController : UITableViewController 33 | 34 | - (nonnull instancetype)initWithPickerInputField:(nonnull LIFEPickerInputField *)pickerInputField; 35 | 36 | @property (nonatomic, nonnull, readonly) LIFEPickerInputField *pickerInputField; 37 | @property (nonatomic, weak, nullable) id pickerDelegate; 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Controllers/Image Editor/LIFEImageEditorView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEImageEditorView.h 3 | // Copyright (C) 2018 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | #import "LIFEToolButton.h" 21 | 22 | @class LIFEAnnotatedImage; 23 | @class LIFEScreenshotAnnotatorView; 24 | 25 | @interface LIFEImageEditorView : UIView 26 | 27 | - (nonnull instancetype)initWithAnnotatedImage:(nonnull LIFEAnnotatedImage *)annotatedImage; 28 | 29 | - (nonnull LIFEScreenshotAnnotatorView *)screenshotAnnotatorView; 30 | - (nonnull UIImageView *)sourceImageView; 31 | - (void)prepareFirstPresentationTransition; 32 | - (void)prepareSecondPresentationTransition; 33 | - (void)performSecondPresentationTransition; 34 | - (void)completeFirstPresentationTransition; 35 | 36 | - (nonnull UIView *)backgroundView; 37 | 38 | @property (nonatomic, readonly) LIFEToolButtonType selectedTool; 39 | 40 | + (CGFloat)imageBorderWidth; 41 | + (nonnull UIColor *)imageBorderColor; 42 | 43 | @end 44 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Services/LIFERecordingShrinker.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFERecordingShrinker.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @class LIFEVideoAttachment; 22 | 23 | NS_ASSUME_NONNULL_BEGIN 24 | typedef void (^LIFERecordingShrinkerCompletion)(NSURL *outputURL); 25 | @interface LIFERecordingShrinker : NSObject 26 | - (instancetype)initWithRecording:(LIFEVideoAttachment *)recording; 27 | - (instancetype)init NS_UNAVAILABLE; 28 | - (void)startShrinkOnQueue:(dispatch_queue_t)queue completionHandler:(LIFERecordingShrinkerCompletion)completionHandler; 29 | - (void)startShrinkOnOperationQueue:(NSOperationQueue *)opq completionHandler:(LIFERecordingShrinkerCompletion)completionHandler; 30 | @property (nonatomic, readonly, assign) float progress; // 0.0f-1.0f 31 | @property (nonatomic, readonly) LIFEVideoAttachment *recording; 32 | @property (nonatomic, readonly) NSURL *outputURL; 33 | @end 34 | NS_ASSUME_NONNULL_END 35 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Services/LIFEDataProvider.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEDataProvider.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | #import "Buglife.h" 21 | 22 | typedef void (^LIFEDataProviderSubmitCompletion)(BOOL submitted); 23 | 24 | @class LIFEReport; 25 | @class LIFEReportOwner; 26 | 27 | @interface LIFEDataProvider : NSObject 28 | 29 | - (nonnull instancetype)initWithReportOwner:(nonnull LIFEReportOwner *)reportOwner SDKVersion:(nonnull NSString *)sdkVersion; 30 | - (_Null_unspecified instancetype)init NS_UNAVAILABLE; 31 | - (void)submitReport:(nonnull LIFEReport *)report withRetryPolicy:(LIFERetryPolicy)retryPolicy completion:(nullable LIFEDataProviderSubmitCompletion)completion; 32 | - (void)flushPendingReportsAfterDelay:(NSTimeInterval)delay; 33 | - (void)logClientEventWithName:(nonnull NSString *)eventName afterDelay:(NSTimeInterval)delay; 34 | - (void)logClientEventWithName:(nonnull NSString *)eventName; 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /LocationSpoofer/Classes/Private/LOSPSwizzler.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOSPSwizzler.h 3 | // 4 | // Copyright © 2019 Buglife, Inc. All rights reserved. 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // 24 | 25 | #import 26 | 27 | @interface LOSPSwizzler : NSObject 28 | 29 | @end 30 | 31 | NSArray *LOSPGetClassesAdoptingProtocol(Protocol *protocol); 32 | IMP LOSPReplaceMethodWithBlock(Class c, SEL origSEL, id block); 33 | IMP LOSPReplaceClassMethodWithBlock(Class c, SEL origSEL, id block); 34 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Controllers/LIFEComponentPickerViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEComponentPickerViewController.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @class LIFEComponentPickerViewController; 22 | 23 | @protocol LIFEComponentPickerViewControllerDelegate 24 | 25 | - (nonnull NSString *)selectedComponentForComponentPickerViewController:(nonnull LIFEComponentPickerViewController *)componentPickerViewController; 26 | - (nonnull NSArray *)componentsForComponentPickerViewController:(nonnull LIFEComponentPickerViewController *)componentPickerViewController; 27 | - (void)componentPickerViewController:(nonnull LIFEComponentPickerViewController *)componentPickerViewController didSelectComponent:(nonnull NSString *)component; 28 | 29 | @end 30 | 31 | @interface LIFEComponentPickerViewController : UITableViewController 32 | 33 | @property (nonatomic, weak, null_unspecified) id delegate; 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/Container Window/LIFEContainerViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEContainerViewController.h 3 | // Copyright (C) 2018 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @class LIFEToastController; 22 | 23 | @interface LIFEContainerViewController : UIViewController 24 | 25 | @property (nonatomic) UIStatusBarStyle statusBarStyle; 26 | @property (nonatomic) BOOL statusBarHidden; 27 | 28 | - (void)life_presentViewController:(nonnull UIViewController *)newViewController animated:(BOOL)animated completion:(void (^_Nullable)(void))completion; 29 | - (void)life_setChildViewController:(nonnull UIViewController *)childViewController animated:(BOOL)animated completion:(void (^_Nullable)(void))completion; 30 | - (void)life_dismissEverythingAnimated:(BOOL)flag completion:(void (^ __nullable)(void))completion; 31 | - (void)dismissWithWindowBlindsAnimation:(BOOL)animated showToast:(nullable LIFEToastController *)toastViewController completion:(void (^ __nullable)(void))completion; 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /LocationSpoofer/Classes/Public/CLPlacemark+LOSPAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // CLPlacemark+LOSPAdditions.h 3 | // 4 | // Copyright © 2019 Buglife, Inc. All rights reserved. 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // 24 | 25 | #import 26 | 27 | @interface CLPlacemark (LOSPAdditions) 28 | 29 | + (nonnull NSArray *)losp_presets; 30 | + (void)losp_getPlacemarkWithAddress:(nonnull NSString *)address completion:(nonnull void (^)(CLPlacemark * _Nullable, NSError * _Nullable))completion; 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /LocationSpoofer/Classes/Private/UIView+LOSPAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+LOSPAdditions.m 3 | // 4 | // Copyright © 2019 Buglife, Inc. All rights reserved. 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // 24 | 25 | #import "UIView+LOSPAdditions.h" 26 | 27 | @implementation UIView (LOSPAdditions) 28 | 29 | - (nonnull NSLayoutAnchor *)losp_safeAreaBottomAnchor 30 | { 31 | if (@available(iOS 11.0, *)) { 32 | return self.safeAreaLayoutGuide.bottomAnchor; 33 | } else { 34 | return self.bottomAnchor; 35 | } 36 | } 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Models/LIFEDeviceInfo.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEDeviceInfo.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | #import "LIFEDeviceBatteryState.h" 21 | 22 | @interface LIFEDeviceInfo : NSObject 23 | 24 | @property (nonatomic) NSString *operatingSystemVersion; 25 | @property (nonatomic) NSString *deviceModel; 26 | @property (nonatomic) NSNumber *fileSystemSizeInBytes; 27 | @property (nonatomic) NSNumber *freeFileSystemSizeInBytes; 28 | @property (nonatomic) NSNumber *freeMemory; 29 | @property (nonatomic) NSNumber *usableMemory; 30 | @property (nonatomic) NSString *identifierForVendor; 31 | @property (nonatomic) NSString *localeIdentifier; 32 | @property (nonatomic) NSString *carrierName; 33 | @property (nonatomic) NSString *currentRadioAccessTechnology; 34 | @property (nonatomic) BOOL wifiConnected; 35 | @property (nonatomic) float batteryLevel; 36 | @property (nonatomic) LIFEDeviceBatteryState batteryState; 37 | @property (nonatomic) BOOL lowPowerMode; 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/LIFEAttachmentView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEAttachmentView.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @interface LIFEAttachmentView : UIView; 22 | 23 | @property (nonatomic, null_unspecified) UIImage *screenshot; 24 | 25 | @end 26 | 27 | 28 | 29 | 30 | 31 | 32 | @interface LIFEAttachmentCell : UITableViewCell 33 | 34 | + (CGSize)targetImageSize; 35 | + (nonnull NSString *)defaultIdentifier; 36 | 37 | - (void)setThumbnailImage:(nullable UIImage *)image; 38 | - (void)setTitle:(nonnull NSString *)title; 39 | - (void)setActivityIndicatorViewIsAnimating:(BOOL)animating; 40 | 41 | @end 42 | 43 | 44 | 45 | 46 | 47 | // @deprecated 48 | @interface LIFEAttachmentButton : UIButton 49 | 50 | @property (nonatomic, null_unspecified) UIImage *screenshot; 51 | @property (nonatomic) BOOL lifeSelected; // our own custom 'selected' property to mimic the behavior of table view cells 52 | - (void)setLifeSelected:(BOOL)lifeSelected animated:(BOOL)animated; 53 | 54 | @end 55 | -------------------------------------------------------------------------------- /LocationSpoofer/Classes/Public/LOSPLocationDebugViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOSPLocationDebugViewController.h 3 | // 4 | // Copyright © 2019 Buglife, Inc. All rights reserved. 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // 24 | 25 | #import 26 | 27 | NS_SWIFT_NAME(LocationDebugViewController) 28 | @interface LOSPLocationDebugViewController : UINavigationController 29 | 30 | - (nonnull instancetype)init NS_DESIGNATED_INITIALIZER; 31 | - (instancetype)initWithRootViewController:(UIViewController *)rootViewController NS_UNAVAILABLE; 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /Example/LocationSpoofer/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | Spoofer 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | LSRequiresIPhoneOS 26 | 27 | NSLocationUsageDescription 28 | This is for testing purposes. 29 | NSLocationWhenInUseUsageDescription 30 | This is for testing purposes. 31 | NSPhotoLibraryUsageDescription 32 | Buglife can attach screenshots from your photo library for bug reports. 33 | UILaunchStoryboardName 34 | LaunchScreen 35 | UIRequiredDeviceCapabilities 36 | 37 | armv7 38 | 39 | UISupportedInterfaceOrientations 40 | 41 | UIInterfaceOrientationPortrait 42 | UIInterfaceOrientationLandscapeLeft 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/LIFETitleCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // LIFETitleCell.m 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import "LIFETitleCell.h" 20 | 21 | @interface LIFETitleCell () 22 | 23 | @property (nonatomic) UITextField *textField; 24 | 25 | @end 26 | 27 | @implementation LIFETitleCell 28 | 29 | #pragma mark - Public methods 30 | 31 | + (NSString *)defaultIdentifier 32 | { 33 | return NSStringFromClass([self class]); 34 | } 35 | 36 | - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 37 | { 38 | self = [super initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:reuseIdentifier]; 39 | 40 | if (self) { 41 | self.selectionStyle = UITableViewCellSelectionStyleNone; 42 | 43 | _textField = [[UITextField alloc] init]; 44 | [self.contentView addSubview:_textField]; 45 | } 46 | 47 | return self; 48 | } 49 | 50 | - (void)layoutSubviews 51 | { 52 | [super layoutSubviews]; 53 | 54 | _textField.frame = self.bounds; 55 | } 56 | 57 | @end 58 | -------------------------------------------------------------------------------- /LocationSpoofer/Classes/Private/CLLocationCoordinate2D+LOSPAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // CLLocationCoordinate2D+LOSPAdditions.h 3 | // 4 | // Copyright © 2019 Buglife, Inc. All rights reserved. 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // 24 | 25 | #import 26 | 27 | typedef double LOSPBearing; 28 | 29 | LOSPBearing LOSPBearingFromCoordinateToCoordinate(CLLocationCoordinate2D startCoordinate, CLLocationCoordinate2D endCoordinate); 30 | CLLocationCoordinate2D LOSPGetCoordinateFromStartingCoordinate(CLLocationCoordinate2D startCoordinate, CLLocationDistance distance, LOSPBearing bearing); 31 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Models/LIFEReproStep.m: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEReproStep.m 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import "LIFEReproStep.h" 20 | 21 | @implementation LIFEReproStep 22 | 23 | - (instancetype)init 24 | { 25 | self = [super init]; 26 | if (self) { 27 | _userDescription = @""; 28 | } 29 | return self; 30 | } 31 | 32 | #pragma mark - NSCoding 33 | 34 | - (instancetype)initWithCoder:(NSCoder *)coder 35 | { 36 | self = [super init]; 37 | if (self) { 38 | _userDescription = [coder decodeObjectForKey:@"userDescription"]; 39 | } 40 | return self; 41 | } 42 | 43 | - (void)encodeWithCoder:(NSCoder *)coder 44 | { 45 | [coder encodeObject:_userDescription forKey:@"userDescription"]; 46 | } 47 | 48 | #pragma mark - Public methods 49 | 50 | - (BOOL)isEmpty 51 | { 52 | NSCharacterSet *whitespaceCharacters = [NSCharacterSet whitespaceAndNewlineCharacterSet]; 53 | NSString *trimmedString = [_userDescription stringByTrimmingCharactersInSet:whitespaceCharacters]; 54 | return trimmedString.length == 0; 55 | } 56 | 57 | @end 58 | -------------------------------------------------------------------------------- /LocationSpoofer/Classes/Public/MKCoordinateSpan+LOSPAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKCoordinateSpan+LOSPAdditions.h 3 | // 4 | // Copyright © 2019 Buglife, Inc. All rights reserved. 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // 24 | 25 | #import 26 | 27 | /** 28 | * Returns a span that roughly encompasses the map 29 | * area of a U.S. city equivalent to San Francisco. 30 | */ 31 | MK_EXTERN const MKCoordinateSpan LOSPCoordinateSpanCity; 32 | 33 | /** 34 | * Returns a span that roughly encompasses the map 35 | * area of a neighborhood. 36 | */ 37 | MK_EXTERN const MKCoordinateSpan LOSPCoordinateSpanNeighborhood; 38 | -------------------------------------------------------------------------------- /LocationSpoofer/Classes/Private/MKMapView+LOSPAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKMapView+LOSPAdditions.m 3 | // 4 | // Copyright © 2019 Buglife, Inc. All rights reserved. 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // 24 | 25 | #import "MKMapView+LOSPAdditions.h" 26 | #import "MKCoordinateSpan+LOSPAdditions.h" 27 | 28 | @implementation MKMapView (LOSPAdditions) 29 | 30 | - (void)losp_zoomToLocation:(nonnull CLLocation *)location animated:(BOOL)animated 31 | { 32 | MKCoordinateRegion region = MKCoordinateRegionMake(location.coordinate, LOSPCoordinateSpanNeighborhood); 33 | [self setRegion:region animated:animated]; 34 | } 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/Container Window/LIFEContainerTransitionContext.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEContainerTransitionContext.h 3 | // Copyright (C) 2018 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | @interface LIFEContainerTransitionContext : NSObject 22 | 23 | /** 24 | * If presenting a view controller for the first time within a parent, 25 | * the containerView should be the parent's view. 26 | * If moving from one view controller to another, the containterView 27 | * should be fromVc's view's superView. 28 | */ 29 | - (nonnull instancetype)initWithFromViewController:(nullable UIViewController *)fromVc toViewController:(nullable UIViewController *)toVc containerView:(nonnull UIView *)containerView; 30 | 31 | @property (nonatomic, copy) void (^ _Nullable completionBlock)(BOOL didComplete); 32 | @property (nonatomic, getter=isAnimated) BOOL animated; 33 | @property (nonatomic, getter=isInteractive) BOOL interactive; 34 | @property (nonatomic, readonly) UIModalPresentationStyle presentationStyle; 35 | @property (nonatomic, readonly, nonnull) UIView *containerView; 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Services/Logging/LIFENotificationLogger.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFENotificationLogger.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | // Software License Agreement (BSD License) 20 | // 21 | // Copyright (c) 2010-2016, Deusty, LLC 22 | // All rights reserved. 23 | // 24 | // Redistribution and use of this software in source and binary forms, 25 | // with or without modification, are permitted provided that the following conditions are met: 26 | // 27 | // * Redistributions of source code must retain the above copyright notice, 28 | // this list of conditions and the following disclaimer. 29 | // 30 | // * Neither the name of Deusty nor the names of its contributors may be used 31 | // to endorse or promote products derived from this software without specific 32 | // prior written permission of Deusty, LLC. 33 | 34 | 35 | #import 36 | 37 | extern NSString * const LIFENotificationLoggerBuglifeInvoked; 38 | extern NSString * const LIFENotificationLoggerSendButtonTapped; 39 | 40 | @interface LIFENotificationLogger : NSObject 41 | 42 | - (void)beginLoggingNotifications; 43 | 44 | @end 45 | -------------------------------------------------------------------------------- /LocationSpoofer/Classes/Public/LOSPLocationDebugViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // LOSPLocationDebugViewController.m 3 | // 4 | // Copyright © 2019 Buglife, Inc. All rights reserved. 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // 24 | 25 | #import "LOSPLocationDebugViewController.h" 26 | #import "LOSPRootViewController.h" 27 | 28 | @interface LOSPLocationDebugViewController () 29 | @end 30 | 31 | @implementation LOSPLocationDebugViewController 32 | 33 | - (instancetype)init 34 | { 35 | LOSPRootViewController *vc = [[LOSPRootViewController alloc] initWithStyle:UITableViewStyleGrouped]; 36 | self = [super initWithRootViewController:vc]; 37 | return self; 38 | } 39 | 40 | @end 41 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Services/LIFEDependencyLoader.m: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEDependencyLoader.m 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | 18 | #import "LIFEDependencyLoader.h" 19 | #import "LIFEMacros.h" 20 | #import 21 | 22 | void LIFELoadAVKit() { 23 | static dispatch_once_t onceToken; 24 | dispatch_once(&onceToken, ^{ 25 | void *frameworkHandle = dlopen("/System/Library/Frameworks/AVKit.framework/AVKit", RTLD_LAZY | RTLD_GLOBAL); 26 | 27 | if (frameworkHandle) { 28 | } else { 29 | LIFELogExtWarn(@"Buglife warning: Your app must link AVKit.framework to enable video playback in in the bug reporter UI."); 30 | } 31 | }); 32 | } 33 | 34 | void LIFELoadPhotosFramework() { 35 | static dispatch_once_t onceToken; 36 | dispatch_once(&onceToken, ^{ 37 | void *frameworkHandle = dlopen("/System/Library/Frameworks/Photos.framework/Photos", RTLD_LAZY | RTLD_GLOBAL); 38 | 39 | if (frameworkHandle) { 40 | } else { 41 | LIFELogExtWarn(@"Buglife warning: Your app must link Photos.framework to enable photo attachments in bug reports."); 42 | } 43 | }); 44 | } 45 | -------------------------------------------------------------------------------- /LocationSpoofer/Classes/Private/LOSPPresetTableViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOSPPresetTableViewController.h 3 | // 4 | // Copyright © 2019 Buglife, Inc. All rights reserved. 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // 24 | 25 | #import 26 | 27 | @interface LOSPPresetTableViewController : UITableViewController 28 | 29 | - (nonnull instancetype)init NS_DESIGNATED_INITIALIZER; 30 | - (null_unspecified instancetype)initWithCoder:(NSCoder *)coder NS_UNAVAILABLE; 31 | - (null_unspecified instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil NS_UNAVAILABLE; 32 | - (null_unspecified instancetype)initWithStyle:(UITableViewStyle)style NS_UNAVAILABLE; 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Models/LIFEImageFormat.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEImageFormat.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | typedef NS_ENUM(NSInteger, LIFEImageFormat) { 22 | LIFEImageFormatUnknown = 0, 23 | LIFEImageFormatPNG, 24 | LIFEImageFormatJPEG, 25 | LIFEImageFormatHEIC 26 | }; 27 | 28 | #pragma mark - LIFEImageFormat / UTI conversions 29 | 30 | LIFEImageFormat LIFEImageFormatFromUniformTypeIdentifierAndFilename(NSString * __nonnull uniformTypeIdentifier, NSString * __nullable filename); 31 | NSString * __nonnull LIFEImageFormatToImageUniformTypeIdentifier(LIFEImageFormat imageFormat); 32 | LIFEImageFormat LIFEImageFormatInferredFromFilename(NSString * __nullable filename); 33 | 34 | #pragma mark - Core graphics wrappers 35 | 36 | NSData * __nonnull LIFEImageRepresentationWithImageFormat(LIFEImageFormat imageFormat, UIImage * __nonnull image, CGFloat compressionQuality); 37 | 38 | // Returns an image resized for the given maximum filesize 39 | NSData * __nonnull LIFEImageRepresentationWithImageFormatAndMaximumSize(LIFEImageFormat imageFormat, UIImage * __nonnull image, CGFloat compressionQuality, NSUInteger maximumFilesize); 40 | -------------------------------------------------------------------------------- /LocationSpoofer/Classes/Private/MKDirections+LOSPAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKDirections+LOSPAdditions.h 3 | // 4 | // Copyright © 2019 Buglife, Inc. All rights reserved. 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // 24 | 25 | #import 26 | 27 | typedef void (^LOSPGetRouteHandler)(MKRoute * _Nullable, NSError * _Nullable); 28 | 29 | @interface MKDirections (LOSPAdditions) 30 | 31 | + (void)losp_getRouteFromPlacemark:(nonnull CLPlacemark *)fromPlacemark toPlacemark:(nonnull CLPlacemark *)toPlacemark completion:(nonnull LOSPGetRouteHandler)completion; 32 | + (void)losp_getRouteFromAddress:(nonnull NSString *)fromAddress toAddress:(nonnull NSString *)toAddress completion:(nonnull LOSPGetRouteHandler)completion; 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /LocationSpoofer/Classes/Public/CLLocation+LOSPAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // CLLocation+LOSPAdditions.h 3 | // 4 | // Copyright © 2019 Buglife, Inc. All rights reserved. 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // 24 | 25 | #import 26 | #import "LOSPLocationProvider.h" 27 | 28 | extern const CLLocationCoordinate2D CLLocationCoordinate2DAlcatraz; 29 | extern const CLLocationCoordinate2D CLLocationCoordinate2DEasterIsland; 30 | 31 | @interface CLLocation (LOSPAdditions) 32 | 33 | + (instancetype)losp_locationWithCoordinate:(CLLocationCoordinate2D)coordinate; 34 | + (void)losp_getLocationWithAddress:(nonnull NSString *)address completion:(nonnull void (^)(CLLocation * _Nullable, NSError * _Nullable))completion; 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Additions/NSArray+LIFEAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSArray+LIFEAdditions.m 3 | // Pods 4 | // 5 | // Created by David Schukin on 5/17/16. 6 | // 7 | // 8 | 9 | #import "NSArray+LIFEAdditions.h" 10 | 11 | @implementation NSArray (LIFEAdditions) 12 | 13 | + (void)life_loadCategory_NSArrayLIFEAdditions { } 14 | 15 | - (NSArray *)life_map:(id (^)(id obj))block 16 | { 17 | NSParameterAssert(block != nil); 18 | NSMutableArray *result = [NSMutableArray arrayWithCapacity:self.count]; 19 | 20 | [self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { 21 | id value = block(obj); 22 | 23 | if (value) { 24 | [result addObject:value]; 25 | } 26 | }]; 27 | 28 | return [NSArray arrayWithArray:result]; 29 | } 30 | 31 | - (NSArray *)life_arrayFilteredToObjectsOfClass:(Class)aClass 32 | { 33 | NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(id _Nonnull evaluatedObject, NSDictionary * _Nullable bindings) { 34 | return [evaluatedObject isKindOfClass:aClass]; 35 | }]; 36 | 37 | return [self filteredArrayUsingPredicate:predicate]; 38 | } 39 | 40 | - (nonnull NSArray *)life_filteredArrayUsingBlock:(BOOL (^)(id obj))block 41 | { 42 | NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(id _Nonnull evaluatedObject, NSDictionary * _Nullable bindings) { 43 | return block(evaluatedObject); 44 | }]; 45 | 46 | return [self filteredArrayUsingPredicate:predicate]; 47 | } 48 | 49 | - (nullable id)life_firstObjectMatchingBlock:(BOOL (^)(id obj))block 50 | { 51 | NSArray *matchingObjects = [self life_filteredArrayUsingBlock:block]; 52 | return matchingObjects.firstObject; 53 | } 54 | 55 | @end 56 | 57 | void LIFELoadCategoryFor_NSArrayLIFEAdditions() { 58 | [NSArray life_loadCategory_NSArrayLIFEAdditions]; 59 | } 60 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/LIFEScreenshotAnnotatorView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEScreenshotAnnotatorView.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | 18 | #import 19 | #import "LIFEAnnotation.h" 20 | 21 | @class LIFEAnnotatedImage; 22 | @class LIFEAnnotationView; 23 | 24 | @interface LIFEScreenshotAnnotatorView : UIView 25 | 26 | @property (nonatomic, readonly) LIFEAnnotationType selectedAnnotationType; 27 | @property (nonatomic, readonly) NSArray *annotationViews; 28 | - (UIImageView *)sourceImageView; 29 | 30 | - (instancetype)initWithAnnotatedImage:(LIFEAnnotatedImage *)annotatedImage; 31 | 32 | - (void)addAnnotationView:(LIFEAnnotationView *)annotationView; 33 | - (void)animateAddedAnnotationView:(LIFEAnnotationView *)annotationView; 34 | - (void)removeAnnotationView:(LIFEAnnotationView *)annotationView; 35 | 36 | // You may want to call this when views underneath loupe annotations move/change 37 | - (void)updateLoupeAnnotationViewsWithSourceImage:(UIImage *)sourceImage; 38 | 39 | #pragma mark - Toolbars 40 | 41 | @property (nonatomic, readonly) BOOL toolbarsHidden; 42 | - (void)setToolbarsHidden:(BOOL)hidden animated:(BOOL)animated completion:(void (^)(void))completion; 43 | 44 | + (NSTimeInterval)toolbarTransitionDuration; 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Additions/LIFEGeometry.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEGeometry.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | CGPoint LIFECGPointAdd(CGPoint p1, CGPoint p2); 22 | CGSize LIFECGSizeIntegral(CGSize size); 23 | CGSize LIFECGSizeAspectFill(CGSize aspectRatio, CGSize minimumSize); 24 | BOOL LIFECGSizeEqualToSizeWithPrecision(CGSize size1, CGSize size2, CGFloat precision); 25 | CGFloat LIFECGPointDistance(CGPoint point1, CGPoint point2); 26 | 27 | // Given two CGPoints, "extends" the endPoint such that the distance between 28 | // the given startPoint and the returned endPoint is equal to the given distance 29 | CGPoint LIFEEndpointAdjustedForDistance(CGPoint startPoint, CGPoint endPoint, CGFloat distance); 30 | CGPoint LIFEEndpointAdjustedForMinimumDistance(CGPoint startPoint, CGPoint endPoint, CGFloat minimumDistance); 31 | CGVector LIFEEndVectorAdjustedForMinimumDistance(CGVector startVector, CGVector endVector, CGSize boundsSize, CGFloat minimumDistance); 32 | 33 | #pragma mark - CGPoint <-> CGVector conversions 34 | 35 | CGPoint LIFEPointFromVectorAndSize(CGVector vector, CGSize size); 36 | CGVector LIFEVectorFromPointAndSize(CGPoint point, CGSize size); 37 | 38 | CGPoint LIFECGPointApplyRotation(CGPoint pointToRotate, CGPoint anchor, CGFloat angleInRadians); 39 | CGPoint LIFECGPointApplyScale(CGPoint pointToScale, CGPoint anchor, CGFloat scaleAmount); 40 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Controllers/LIFELogViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // LIFELogViewController.m 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import "LIFELogViewController.h" 20 | #import "LIFELogFacility.h" 21 | 22 | @interface LIFELogViewController () 23 | 24 | @property (nonatomic) UITextView *logView; 25 | @property (nonatomic) LIFELogFacility *logFacility; 26 | @property (nonatomic) NSUInteger counter; 27 | 28 | @end 29 | 30 | @implementation LIFELogViewController 31 | 32 | - (void)loadView 33 | { 34 | self.logView = [[UITextView alloc] init]; 35 | self.view = self.logView; 36 | _counter = 0; 37 | } 38 | 39 | - (void)viewDidLoad 40 | { 41 | [super viewDidLoad]; 42 | [self _refresh]; 43 | 44 | self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Append" style:UIBarButtonItemStylePlain target:self action:@selector(_appendButtonTapped:)]; 45 | } 46 | 47 | - (void)_appendButtonTapped:(id)sender 48 | { 49 | for (int i = 0; i < 50; i++) { 50 | _counter += 1; 51 | } 52 | 53 | [self _refresh]; 54 | } 55 | 56 | - (void)_refresh 57 | { 58 | __weak typeof(self) weakSelf = self; 59 | _logFacility = [[LIFELogFacility alloc] init]; 60 | [_logFacility fetchFormattedLogsToQueue:dispatch_get_main_queue() completion:^(NSString *logs) { 61 | weakSelf.logView.text = logs; 62 | }]; 63 | } 64 | 65 | @end 66 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Additions/UITextView+LIFEAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // UITextView+LIFEAdditions.m 3 | // Pods 4 | // 5 | // Created by David Schukin on 11/17/15. 6 | // 7 | // 8 | 9 | #import "UITextView+LIFEAdditions.h" 10 | 11 | static const CGFloat kDefaultLineFragmentPadding = 5; // the default according to apple docs 12 | 13 | @implementation LIFEUITextView 14 | 15 | + (CGFloat)textView:(UITextView *)textView boundingHeightWithWidth:(CGFloat)width 16 | { 17 | CGFloat boundsMinusPadding = width - (2.0 * textView.textContainer.lineFragmentPadding); 18 | return [self textView:textView boundingRectWithSize:CGSizeMake(boundsMinusPadding, CGFLOAT_MAX)].height; 19 | } 20 | 21 | + (CGSize)textView:(UITextView *)textView boundingRectWithSize:(CGSize)size 22 | { 23 | NSDictionary *attributes = @{ NSFontAttributeName : textView.font }; 24 | CGRect rect = [textView.text boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil]; 25 | return rect.size; 26 | } 27 | 28 | + (CGFloat)textView:(UITextView *)textView boundingHeightWithWidth:(CGFloat)width replacementText:(NSString *)replacementText 29 | { 30 | return [self boundingHeightForText:replacementText width:width lineFragmentPadding:textView.textContainer.lineFragmentPadding font:textView.font]; 31 | } 32 | 33 | + (CGFloat)boundingHeightForText:(NSString *)text width:(CGFloat)width font:(UIFont *)font 34 | { 35 | return [self boundingHeightForText:text width:width lineFragmentPadding:kDefaultLineFragmentPadding font:font]; 36 | } 37 | 38 | + (CGFloat)boundingHeightForText:(NSString *)text width:(CGFloat)width lineFragmentPadding:(CGFloat)lineFragmentPadding font:(UIFont *)font 39 | { 40 | CGFloat boundsMinusPadding = width - (2.0 * lineFragmentPadding); 41 | CGSize size = CGSizeMake(boundsMinusPadding, CGFLOAT_MAX); 42 | NSDictionary *attributes = @{ NSFontAttributeName : font }; 43 | CGRect rect = [text boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil]; 44 | return rect.size.height; 45 | } 46 | 47 | @end 48 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Models/LIFEAnnotation.m: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEAnnotation.m 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import "LIFEAnnotation.h" 20 | 21 | @implementation LIFEAnnotation 22 | 23 | #pragma mark - Lifecycle 24 | 25 | - (nonnull instancetype)initWithAnnotationType:(LIFEAnnotationType)annotationType startVector:(CGVector)startVector endVector:(CGVector)endVector 26 | { 27 | self = [super init]; 28 | if (self) { 29 | _annotationType = annotationType; 30 | _startVector = startVector; 31 | _endVector = endVector; 32 | } 33 | return self; 34 | } 35 | 36 | #pragma mark - NSCopying 37 | 38 | - (id)copyWithZone:(NSZone *)zone 39 | { 40 | LIFEAnnotation *annotation = [[[self class] allocWithZone:zone] initWithAnnotationType:_annotationType startVector:_startVector endVector:_endVector]; 41 | return annotation; 42 | } 43 | 44 | #pragma mark - Debugging 45 | 46 | - (NSString *)debugDescription 47 | { 48 | return [NSString stringWithFormat:@"<%@ (%@): %p>", NSStringFromClass([self class]), [self _annotationTypeString], self]; 49 | } 50 | 51 | #pragma mark - Private methods 52 | 53 | - (NSString *)_annotationTypeString 54 | { 55 | switch (self.annotationType) { 56 | case LIFEAnnotationTypeArrow: 57 | return @"Arrow"; 58 | case LIFEAnnotationTypeLoupe: 59 | return @"Loupe"; 60 | case LIFEAnnotationTypeBlur: 61 | return @"Blur"; 62 | } 63 | } 64 | 65 | @end 66 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Models/LIFEReportOwner.m: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEReportOwner.m 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | 18 | 19 | #import "LIFEReportOwner.h" 20 | 21 | @interface LIFEReportOwner () 22 | 23 | @property (nonatomic) LIFEReportOwnerType ownerType; 24 | @property (nonatomic) NSString *ownerIdentifier; // this is an API key, or email address, depending on the owner type 25 | 26 | @end 27 | 28 | @implementation LIFEReportOwner 29 | 30 | + (instancetype)reportOwnerWithAPIKey:(NSString *)apiKey 31 | { 32 | return [self _reportOwnerWithType:LIFEReportOwnerTypeAPIKey identifier:apiKey]; 33 | } 34 | 35 | + (instancetype)reportOwnerWithEmail:(NSString *)email 36 | { 37 | return [self _reportOwnerWithType:LIFEReportOwnerTypeEmail identifier:email]; 38 | } 39 | 40 | + (instancetype)_reportOwnerWithType:(LIFEReportOwnerType)type identifier:(NSString *)identifier 41 | { 42 | LIFEReportOwner *reportOwner = [[LIFEReportOwner alloc] init]; 43 | reportOwner.ownerType = type; 44 | reportOwner.ownerIdentifier = identifier; 45 | return reportOwner; 46 | } 47 | 48 | - (void)switchCaseAPIKey:(void (^)(NSString *apiKey))apiKeyBlock email:(void (^)(NSString *email))emailBlock 49 | { 50 | switch (_ownerType) { 51 | case LIFEReportOwnerTypeAPIKey: 52 | apiKeyBlock(self.ownerIdentifier); 53 | break; 54 | case LIFEReportOwnerTypeEmail: 55 | emailBlock(self.ownerIdentifier); 56 | break; 57 | } 58 | } 59 | 60 | @end 61 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/LIFETextInputField.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFETextInputField.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | 18 | #import "LIFEInputField.h" 19 | 20 | /** 21 | * Represents a single- or multi-line text input field in the Buglife bug reporter interface. 22 | */ 23 | @interface LIFETextInputField : LIFEInputField 24 | 25 | /** 26 | * The placeholder text displayed by the text field when it is empty. 27 | */ 28 | @property (nonatomic, nullable, copy) NSString *placeholder; 29 | 30 | /** 31 | * Returns YES if this is a multi-line text input field, 32 | * or NO if it is a single-line text input field. 33 | * The default value for this is NO. 34 | */ 35 | @property (nonatomic, getter=isMultiline) BOOL multiline; 36 | 37 | /** 38 | * Returns the system-provided summary field (i.e. "What happened?"). 39 | * When there are no custom input fields configured, 40 | * the bug reporter UI shows the summary field by default. 41 | */ 42 | + (nonnull instancetype)summaryInputField; 43 | 44 | /** 45 | * Returns a field for entering the user's email address. 46 | * 47 | * If an email is programmatically set using Buglife.setUserEmail(), 48 | * then that email will be shown by default for this field. 49 | * 50 | * If the user edits the value for this field, then the new value 51 | * will override whatever value may have been provided via `BuglifesetUserEmail()`, 52 | * and the new value will persist across application launches. 53 | */ 54 | + (nonnull instancetype)userEmailInputField; 55 | 56 | @end 57 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/Container Window/LIFEContainerModalDismissAnimator.m: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEContainerModalDismissAnimator.m 3 | // Copyright (C) 2018 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import "LIFEContainerModalDismissAnimator.h" 20 | #import "LIFEImageEditorViewController.h" 21 | #import "LIFEContainerViewController.h" 22 | #import "UIViewController+LIFEAdditions.h" 23 | #import "LIFEMacros.h" 24 | 25 | @implementation LIFEContainerModalDismissAnimator 26 | 27 | - (void)animateTransition:(nonnull id)transitionContext 28 | { 29 | UIViewController *fromVc = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey]; 30 | let containerVc = fromVc.life_containerViewController; 31 | let duration = [self transitionDuration:transitionContext]; 32 | let oldFrame = fromVc.view.frame; 33 | let newFrame = CGRectOffset(oldFrame, 0, [UIScreen mainScreen].bounds.size.height); 34 | 35 | UIViewAnimationOptions options = UIViewAnimationOptionCurveEaseInOut; 36 | [UIView animateWithDuration:duration delay:0 options:options animations:^{ 37 | fromVc.view.frame = newFrame; 38 | [containerVc setNeedsStatusBarAppearanceUpdate]; 39 | } completion:^(BOOL finished) { 40 | [transitionContext completeTransition:!transitionContext.transitionWasCancelled]; 41 | }]; 42 | } 43 | 44 | - (NSTimeInterval)transitionDuration:(nullable id)transitionContext 45 | { 46 | return 0.3; 47 | } 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Additions/LIFECategories.m: -------------------------------------------------------------------------------- 1 | // 2 | // LIFECategories.m 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | 18 | 19 | #import "LIFECategories.h" 20 | #import "Buglife+UIStuff.h" 21 | #import "UIBezierPath+LIFEAdditions.h" 22 | #import "UIView+LIFEAdditions.h" 23 | #import "NSArray+LIFEAdditions.h" 24 | #import "UIImage+LIFEAdditions.h" 25 | #import "NSMutableDictionary+LIFEAdditions.h" 26 | #import "NSString+LIFEAdditions.h" 27 | #import "UIDevice+LIFEAdditions.h" 28 | #import "UIColor+LIFEAdditions.h" 29 | #import "UIViewController+LIFEAdditions.h" 30 | #import "UIApplication+LIFEAdditions.h" 31 | #import "UIControl+LIFEAdditions.h" 32 | 33 | @implementation LIFECategories 34 | 35 | + (void)loadCategories 36 | { 37 | static dispatch_once_t onceToken; 38 | dispatch_once(&onceToken, ^{ 39 | LIFELoadCategoryFor_BuglifeUIStuff(); 40 | LIFELoadCategoryFor_UIBezierPathLIFEAdditions(); 41 | LIFELoadCategoryFor_UIViewLIFEAdditions(); 42 | LIFELoadCategoryFor_NSArrayLIFEAdditions(); 43 | LIFELoadCategoryFor_UIImageLIFEAdditions(); 44 | LIFELoadCategoryFor_NSStringLIFEAdditions(); 45 | LIFELoadCategoryFor_NSMutableDictionaryLIFEAdditions(); 46 | LIFELoadCategoryFor_UIDeviceLIFEAdditions(); 47 | LIFELoadCategoryFor_UIColorLIFEAdditions(); 48 | LIFELoadCategoryFor_UIViewControllerLIFEAdditions(); 49 | LIFELoadCategoryFor_UIApplicationLIFEAdditions(); 50 | LIFELoadCategoryFor_UIControlLIFEAdditions(); 51 | }); 52 | } 53 | 54 | @end 55 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Models/LIFEReportAttachmentImpl.h: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEAttachment.h 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import 20 | 21 | extern NSString * __nonnull const LIFEScreenshotDefaultFilename; 22 | 23 | @class UIImage; 24 | @class LIFEAttachment; 25 | @class LIFEVideoAttachment; 26 | 27 | @interface LIFEReportAttachmentImpl : NSObject 28 | 29 | @property (nonatomic, nonnull, readonly) NSData *attachmentData; 30 | // This is a UTI (Uniform Type Identifier). 31 | // See https://developer.apple.com/library/ios/documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html 32 | @property (nonatomic, nonnull, readonly) NSString *uniformTypeIdentifier; 33 | @property (nonatomic, nullable, readonly) NSString *filename; 34 | 35 | // Returns the AwesomeLog version, if this is a log attachment >= 2.0. 36 | // For previous versions (ASL logs), we did not include a logVersion. 37 | @property (nonatomic, nullable, readonly) NSString *logVersion; 38 | 39 | - (nonnull instancetype)initWithData:(nonnull NSData *)data uniformTypeIdentifier:(nonnull NSString *)uti filename:(nonnull NSString *)filename; 40 | - (nonnull instancetype)initWithImage:(nonnull UIImage *)image filename:(nonnull NSString *)filename; 41 | - (nonnull instancetype)initWithLogData:(nonnull NSData *)logData; 42 | - (_Null_unspecified instancetype)init NS_UNAVAILABLE; 43 | 44 | - (nonnull NSDictionary *)JSONDictionary; 45 | - (NSUInteger)size; 46 | - (BOOL)isImageAttachment; 47 | 48 | @end 49 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Controllers/LIFEAVPlayerViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEAVPlayerViewController.m 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | 18 | #import "LIFEAVPlayerViewController.h" 19 | #import "LIFEMacros.h" 20 | #import "LIFEDependencyLoader.h" 21 | 22 | @protocol LIFEAVPlayer 23 | - (void)play; 24 | - (instancetype)initWithURL:(NSURL *)url; 25 | @end 26 | 27 | @protocol LIFEAVPlayerViewController 28 | @property (strong, nullable) NSObject *player; 29 | @end 30 | 31 | @implementation LIFEAVPlayerViewController 32 | 33 | #pragma mark - Public methods 34 | 35 | + (void)presentFromViewController:(UIViewController *)presentingViewController playerWithURL:(NSURL *)url animated:(BOOL)animated 36 | { 37 | LIFELoadAVKit(); 38 | LIFELoadAVFoundation(); 39 | 40 | Class avPlayerClass = NSClassFromString(@"AVPlayer"); 41 | Class avPlayerViewControllerClass = NSClassFromString(@"AVPlayerViewController"); 42 | 43 | if (avPlayerClass && avPlayerViewControllerClass) { 44 | NSObject *player = [[avPlayerClass alloc] initWithURL:url]; 45 | UIViewController *playerViewController = [[avPlayerViewControllerClass alloc] init]; 46 | playerViewController.player = player; 47 | [presentingViewController presentViewController:playerViewController animated:YES completion:^{ 48 | [player play]; 49 | }]; 50 | } else { 51 | LIFELogExtWarn(@"Buglife warning: AVKit.framework and/or AVFoundation.framework isn't linked"); 52 | } 53 | } 54 | 55 | @end 56 | -------------------------------------------------------------------------------- /Example/Pods/Buglife/Source/Views/LIFEAppearanceImpl.m: -------------------------------------------------------------------------------- 1 | // 2 | // LIFEAppearanceImpl.m 3 | // Copyright (C) 2017 Buglife, Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | // 18 | 19 | #import "LIFEAppearanceImpl.h" 20 | #import "UIColor+LIFEAdditions.h" 21 | 22 | @implementation LIFEAppearanceImpl 23 | 24 | + (instancetype)sharedAppearance 25 | { 26 | static LIFEAppearanceImpl *sSharedInstance = nil; 27 | static dispatch_once_t onceToken; 28 | dispatch_once(&onceToken, ^{ 29 | sSharedInstance = [[self alloc] init]; 30 | 31 | // Reset all properties 32 | sSharedInstance.tintColor = nil; 33 | sSharedInstance.barTintColor = nil; 34 | sSharedInstance.titleTextAttributes = nil; 35 | sSharedInstance.statusBarStyle = UIStatusBarStyleLightContent; 36 | }); 37 | return sSharedInstance; 38 | } 39 | 40 | #pragma mark - LIFEAppearance 41 | 42 | - (void)setTintColor:(UIColor *)tintColor 43 | { 44 | if (tintColor == nil) { 45 | tintColor = [UIColor life_buglifeTurqoise]; 46 | } 47 | 48 | _tintColor = tintColor; 49 | } 50 | 51 | - (void)setBarTintColor:(UIColor *)barTintColor 52 | { 53 | if (barTintColor == nil) { 54 | barTintColor = [UIColor life_buglifeNavy]; 55 | } 56 | 57 | _barTintColor = barTintColor; 58 | } 59 | 60 | - (void)setTitleTextAttributes:(NSDictionary *)titleTextAttributes 61 | { 62 | if (titleTextAttributes == nil) { 63 | titleTextAttributes = @{ NSForegroundColorAttributeName : [UIColor whiteColor] }; 64 | } 65 | 66 | _titleTextAttributes = titleTextAttributes; 67 | } 68 | 69 | @end 70 | --------------------------------------------------------------------------------