• Stars
    star
    1,950
  • Rank 22,797 (Top 0.5 %)
  • Language
    Swift
  • License
    MIT License
  • Created almost 9 years ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Sherlock Holmes of the networking layer. πŸ•΅οΈβ€β™‚οΈ

ResponseDetective is a non-intrusive framework for intercepting any outgoing requests and incoming responses between your app and your server for debugging purposes.

Requirements

ResponseDetective is written in Swift 5.3 and supports iOS 9.0+, macOS 10.10+ and tvOS 9.0+.

Usage

Incorporating ResponseDetective in your project is very simple – it all comes down to just two steps:

Step 1: Enable interception

For ResponseDetective to work, it needs to be added as a middleman between your (NS)URLSession and the Internet. You can do this by registering the provided URLProtocol class in your session's (NS)URLSessionConfiguration.protocolClasses, or use a shortcut method:

// Objective-C

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
[RDTResponseDetective enableInConfiguration:configuration];
// Swift

let configuration = URLSessionConfiguration.default
ResponseDetective.enable(inConfiguration: configuration)

Then, you should use that configuration with your (NS)URLSession:

// Objective-C

NSURLSession *session = [[NSURLSession alloc] initWithConfiguration:configuration];
// Swift

let session = URLSession(configuration: configuration)

Or, if you're using AFNetworking/Alamofire as your networking framework, integrating ResponseDetective comes down to just initializing your AFURLSessionManager/Manager with the above (NS)URLSessionConfiguration:

// Objective-C (AFNetworking)

AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
// Swift (Alamofire)

let manager = Alamofire.SessionManager(configuration: configuration)

And that's all!

Step 2: Profit

Now it's time to perform the actual request:

// Objective-C

NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://httpbin.org/get"]];
[[session dataTaskWithRequest:request] resume];
// Swift

let request = URLRequest(URL: URL(string: "http://httpbin.org/get")!)
session.dataTask(with: request).resume()

VoilΓ ! πŸŽ‰ Check out your console output:

<0x000000000badf00d> [REQUEST] GET https://httpbin.org/get
 β”œβ”€ Headers
 β”œβ”€ Body
 β”‚ <none>

<0x000000000badf00d> [RESPONSE] 200 (NO ERROR) https://httpbin.org/get
 β”œβ”€ Headers
 β”‚ Server: nginx
 β”‚ Date: Thu, 01 Jan 1970 00:00:00 GMT
 β”‚ Content-Type: application/json
 β”œβ”€ Body
 β”‚ {
 β”‚   "args" : {
 β”‚   },
 β”‚   "headers" : {
 β”‚     "User-Agent" : "ResponseDetective\/1 CFNetwork\/758.3.15 Darwin\/15.4.0",
 β”‚     "Accept-Encoding" : "gzip, deflate",
 β”‚     "Host" : "httpbin.org",
 β”‚     "Accept-Language" : "en-us",
 β”‚     "Accept" : "*\/*"
 β”‚   },
 β”‚   "url" : "https:\/\/httpbin.org\/get"
 β”‚ }

Installation

Carthage

If you're using Carthage, add the following dependency to your Cartfile:

github "netguru/ResponseDetective" ~> {version}

CocoaPods

If you're using CocoaPods, add the following dependency to your Podfile:

use_frameworks!
pod 'ResponseDetective', '~> {version}'

Swift Package Manager

If you're using Swift Package Manager, add this repository to the Swift Packages in your project settings.

Local

To install the test dependencies or to build ResponseDetective itself, do not run carthage directly. It can't handle the Apple Silicon architectures introduced in Xcode 12. Instead, run it through the carthage.sh script:

$ ./carthage.sh bootstrap

Alternatively, you can run the tests locally using Swift Package Manager with the following command:

$ swift test

About

This project was made with β™‘ by Netguru.

Release names

Starting from version 1.0.0, ResponseDetective's releases are named after Sherlock Holmes canon stories, in chronological order. What happens if we reach 60 releases and there are no more stories? We don't know, maybe we'll start naming them after cats or something.

License

This project is licensed under MIT License. See LICENSE.md for more info.

More Repositories

1

sticky-parallax-header

A simple React Native library, enabling the creation of fully customized header for your iOS and Android apps.
TypeScript
1,716
star
2

CarLensCollectionViewLayout

An easy-to-use Collection View Layout for card-like animation.
Swift
544
star
3

Kissme

Kissme: Kotlin Secure Storage Multiplatform
Kotlin
403
star
4

videochatguru-android

Open source library to create fast and beautiful video chats over WebRTC
Kotlin
310
star
5

ngrvalidator

Validation has never been as easy as now!
Objective-C
165
star
6

BlueSwift

Swift framework for easy connection with Bluetooth peripherals.
Swift
164
star
7

CarLens-iOS

CarLens - Recognize and Collect Cars
Swift
129
star
8

compose-multiplatform-charts

Charts library for Kotlin multiplatform applications
Kotlin
81
star
9

AnimatedCardInput

Easy to use iOS library with components for input of Credit Card data.
Swift
37
star
10

ar-localizer-view-android

Kotlin
33
star
11

CarLens-Android

CarLens - Recognize and Collect Cars
Kotlin
24
star
12

mobile-security-checklist

Netguru mobile security checklist
Python
23
star
13

rnd-retail-multiplatform-public

Kotlin
20
star
14

baby-monitor-client-android

Internal Baby Monitor android project
Kotlin
18
star
15

heroes-api

TypeScript
18
star
16

baby-monitor-client-ios

Swift
17
star
17

netguru

netguru gem - collection of solutions we use to develop and deploy our projects.
Ruby
16
star
18

xcconfigs

Collection of common Xcode configuration files. πŸ› οΈ
14
star
19

CreateML-Research

The easy ways to start your journey with CreateML.
Swift
13
star
20

awesome-list

Ruby
12
star
21

react-native-ar-localizer

Java
12
star
22

mobile-security-review

Security review guidelines for mobile projects
12
star
23

productivity

Productivity tips for Netguru
Dockerfile
10
star
24

nodejs-recruitment-task

Repository for Node.js department's recruitment process.
JavaScript
10
star
25

ng-ios-network-module

iOS Networking Module
Swift
9
star
26

commentable-rs

Rust
9
star
27

highway

Build system on top of Fastlane.
Ruby
9
star
28

coolcal-android

Kotlin
9
star
29

flutter-recruitment-task

Dart
8
star
30

opoca

Library for speeding up building machine learning proof of concepts.
Python
8
star
31

design-process

CSS
7
star
32

kivy-games

Python
5
star
33

atstats-android

atStats native android app
Kotlin
5
star
34

graphql-starter-pack

Graphql training by Netguru.
Ruby
4
star
35

SimpleRegEx

Wrapper for RegEx, made so the RegEx code will be understable
Python
4
star
36

react-native-modal-dropdown

JavaScript
4
star
37

smarthome

Kotlin
4
star
38

netguru-grdb

Swift
4
star
39

sections-decorator-android

Kotlin
4
star
40

bitrise-step-slack

A next-gen Slack webhook step for Bitrise
Ruby
3
star
41

frontend-recruitment-task

3
star
42

picguard-swift

Image analysis framework for Swift
Swift
3
star
43

hubguru-ios-public

Swift
3
star
44

ios-framework-template

Swift
3
star
45

qa-selenium-java-framework

Java
2
star
46

ar-localizer-view-iOS

Swift
2
star
47

capistrano-docker

Ruby
2
star
48

awesome-frontend-architecture

Collection of awesome frontend architecture resources
2
star
49

ngrcrop-ios

ngrcrop-ios: UI component for editing selected photos.
Objective-C
2
star
50

rack_password

Small rack middleware to block your site from unwanted vistors.
Ruby
2
star
51

iOS-Good-Practices

Swift
2
star
52

inicjatywyotwarte-be

A website that tries to collect all important and relevant initiatives that could help in the times of COVID-19. https://www.inicjatywyotwarte.pl
Ruby
2
star
53

terraform-module-hcloud

Hetzner Cloud module for terraform
HCL
2
star
54

inicjatywyotwarte-fe

A website that tries to collect all important and relevant initiatives that could help in the times of COVID-19.
JavaScript
2
star
55

sync-aws-extend-switch-roles

Sync AWS Extend Switch Roles
1
star
56

bitrise-step-ng-jira-step

Shell
1
star
57

codestories-react-native-hooks

JavaScript
1
star
58

devise-2fa

Devise with 2FA support based on Twilio
Ruby
1
star
59

twilio-2fa-bot

Simple Twilio messages scrapper for shared phone numbers
JavaScript
1
star
60

danger-flutter-coverage

Ruby
1
star
61

django-modular-user

Python
1
star
62

meetguru

JavaScript
1
star
63

ios-bitrise-client-public

Swift
1
star
64

bitrise-step-danger-android

Shell
1
star
65

dc-docker-task

This repo stores docker recruitment tasks for devops-college
Dockerfile
1
star