Skip to content

Commit

Permalink
[Project] Rename SwiftErrorArchiver -> Swift Event Shotter (#2)
Browse files Browse the repository at this point in the history
* feat: package 이름 변경

* feat: example reanme

* feat: rename swiftErrorArchiver content

* feat: SwiftEventShotterExampleApp 수정

* project: update readme.md

* test: update githubaction
  • Loading branch information
MaraMincho authored Dec 30, 2024
1 parent 5e19a1e commit 048fdd5
Show file tree
Hide file tree
Showing 63 changed files with 352 additions and 320 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/ios.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,5 @@ jobs:
# Build 및 Test 실행
- name: Build and Test Project
run: |
cd SwiftErrorArchiver
cd SwiftEventShooter
swift test
33 changes: 23 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,40 +1,53 @@
# SwiftErrorArchiver
# SwiftEventShotter

SwiftErrorArchiver is focused on transmitting errors that occur on the client-side via platforms such as Discord or Slack.
SwiftEventShotter is focused on transmitting errors that occur on the client-side via platforms such as Discord or Slack.
SDK detect the client's network status, store events in local storage if they cannot be sent. And transmit the events once the client regains network connectivity.
The features are designed for personal apps or applications with a small user base in the early stages.
It offers a simple way to design and view platform-specific logging objects or messages. Currently, Discord and Slack are supported.

<br/>

# Usage

### Slack

To send Slack message, you must know Slack webhookURL. Then, SDK send the event to Slack.

```swift
let slackSDK = SwiftErrorArchiverSDK(type:
.slack(.init(slackWebHookURL: "SlackURL"))
)
let slackSDK = SwiftEventShooterSDK(type:.slack(.init(slackWebHookURL: "SlackURL")))

slackSDK.sendMessage(event: TestEventObject(message: "Hello slack"))
slackSDK.sendMessage(event: "Hello world")
```

### Discord

To send Discord message, you must know Discord webhookURL. Then, SDK send the event to Discord.

```swift
let discordSDK = SwiftErrorArchiverSDK(type:
.discord(.init(discordNetworkURL: "DiscordWebHookURL"))
)
let discordSDK = SwiftEventShooterSDK(type: .discord(.init(discordNetworkURL: "DiscordWebHookURL")))

discordSDK.sendMessage(event: TestEventObject(message: "Hello Discord"))
discordSDK.sendMessage(event: "Hello world")
```

### Configure

<br/>
If you want to save the failed network or failed to transmit event, call `configure` method.

``` swift
let sdk = SwiftEventShotter(...)
sdk.configure()
```


<br/><br/>

# Installation

```swift
dependencies: [
.package(url: "https://github.com/MaraMincho/SwiftErrorArchiver", .upToNextMajor(from: "1.0.0"))
.package(url: "https://github.com/MaraMincho/SwiftEventShooter", .upToNextMajor(from: "1.0.0"))
]
```

Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,22 @@
import PackageDescription

let package = Package(
name: "SwiftErrorArchiver",
name: "SwiftEventShooter",
platforms: [.iOS(.v15), .macOS(.v13), .visionOS(.v1), .tvOS(.v13)],
products: [
// Products define the executables and libraries a package produces, making them visible to other packages.
.library(
name: "SwiftErrorArchiver",
targets: ["SwiftErrorArchiver"]
name: "SwiftEventShooter",
targets: ["SwiftEventShooter"]
),
], targets: [
// Targets are the basic building blocks of a package, defining a module or a test suite.
// Targets can depend on other targets in this package and products from dependencies.
.target(
name: "SwiftErrorArchiver"),
name: "SwiftEventShooter"),
.testTarget(
name: "SwiftErrorArchiverTests",
dependencies: ["SwiftErrorArchiver"]
name: "SwiftEventShooterTests",
dependencies: ["SwiftEventShooter"]
),
],
swiftLanguageModes: [.v6, .v5]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
//
// DiscordErrorStreamController.swift
// SwiftErrorArchiver
// DiscordEventStreamController.swift
// DiscordEventStreamController
//
// Created by MaraMincho on 12/20/24.
//

import Foundation

// MARK: - DiscordErrorStreamController
// MARK: - DiscordEventStreamController

public struct DiscordErrorStreamController: EventControllerInterface, Sendable {
public struct DiscordEventStreamController: EventStreamControllerInterface, Sendable {
private let nowNetworkingStorageController: EventStorageControllerInterface?
private let networkingFailedStorageController: EventStorageControllerInterface?
private let provider: SDKNetworkProvider<DiscordNetworkTargetType>
Expand Down Expand Up @@ -37,23 +37,23 @@ public struct DiscordErrorStreamController: EventControllerInterface, Sendable {

public func post(_ event: some EventInterface) async {
guard networkMonitor.isNetworkAvailable else {
SwiftErrorArchiverLogger.debug(message: "Network is not available")
SwiftEventShooterLogger.debug(message: "Network is not available")
return
}
guard let data = try? JSONEncoder.encode(event),
let currentString = String(data: data, encoding: .utf8)
else {
SwiftErrorArchiverLogger.error(message: "Json decoding error occurred", dumpObject: event)
SwiftEventShooterLogger.error(message: "Json decoding error occurred", dumpObject: event)
return
}
var fileName: String? = nil
do {
fileName = try await nowNetworkingStorageController?.save(event: event)
try await sendDiscordLog(currentString)
SwiftErrorArchiverLogger.debug(message: "Network worked correctly")
SwiftEventShooterLogger.debug(message: "Network worked correctly")
} catch {
await failedNetworkingRoutine(event: event)
SwiftErrorArchiverLogger.error(message: "Network error occurred", dumpObject: error)
SwiftEventShooterLogger.error(message: "Network error occurred", dumpObject: error)
}

// 만약 fileName이 있다면
Expand All @@ -66,7 +66,7 @@ public struct DiscordErrorStreamController: EventControllerInterface, Sendable {
do {
try await networkingFailedStorageController?.save(event: event)
} catch {
SwiftErrorArchiverLogger.error(message: "Failed to save failed networking event to storage", dumpObject: event)
SwiftEventShooterLogger.error(message: "Failed to save failed networking event to storage", dumpObject: event)
}
}

Expand Down Expand Up @@ -95,7 +95,7 @@ public struct DiscordErrorStreamController: EventControllerInterface, Sendable {
for await result in group {
switch result {
case let .failure(error):
SwiftErrorArchiverLogger.error(message: "Unable to save failedNetworking event to storage", dumpObject: error)
SwiftEventShooterLogger.error(message: "Unable to save failedNetworking event to storage", dumpObject: error)
case .success:
break
}
Expand All @@ -105,12 +105,12 @@ public struct DiscordErrorStreamController: EventControllerInterface, Sendable {

public func sendPendingEvents() async {
guard networkMonitor.isNetworkAvailable else {
SwiftErrorArchiverLogger.debug(message: "Network is not available")
SwiftEventShooterLogger.debug(message: "Network is not available")
return
}

guard let networkingFailedStorageController else {
SwiftErrorArchiverLogger.error(message: "NetworkingFailedStorageController is not initiated")
SwiftEventShooterLogger.error(message: "NetworkingFailedStorageController is not initiated")
return
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
//
// DiscordNetworkTargetType.swift
// SwiftErrorArchiver
// DiscordNetworkTargetType
//
// Created by MaraMincho on 12/20/24.
//
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
//
// EventControllerInterface.swift
// SwiftErrorArchiver
// EventStreamControllerInterface.swift
// SwiftEventShooter
//
// Created by MaraMincho on 12/20/24.
//

import Foundation

public protocol EventControllerInterface: Sendable {
public protocol EventStreamControllerInterface: Sendable {
func post(_ event: some EventInterface) async
func sendPendingEvents() async
func configure()
Expand Down
Loading

0 comments on commit 048fdd5

Please sign in to comment.