Skip to content

Commit e8ceb1b

Browse files
Fixed exporting issue for base64 encoded content, charles did not like url encoding
Show http status line when we have it, show default when we do not Version bumped plugin to 0.0.18
1 parent 61ec63b commit e8ceb1b

File tree

7 files changed

+30
-10
lines changed

7 files changed

+30
-10
lines changed

niddler-plugin/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ plugins {
1919
apply plugin: 'kotlin'
2020

2121
group 'com.icapps'
22-
version '0.0.17'
22+
version '0.0.18'
2323
sourceCompatibility = 1.8
2424

2525
intellij {

niddler-plugin/src/main/resources/META-INF/plugin.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
<idea-plugin version="2">
22
<id>com.icapps.niddler</id>
33
<name>Niddler</name>
4-
<version>0.0.16</version>
4+
<version>0.0.18</version>
55
<vendor email="support@icapps.com" url="https://www.icapps.com">iCapps</vendor>
66

77
<description>This plugin enables the niddler ui inside the IDE</description>
88

99
<change-notes>
10+
0.0.18 - Fixed HAR export of base64, charles did not like url encoding. Show status line with code when we have it
1011
0.0.17 - Fixed HAR exports using wrong url
1112
0.0.16 - Fixed exception when the server uses a different format. Support for exporting to HAR 1.2
1213
0.0.15 - Better handle empty bodies (from network requests/replies)

niddler-ui/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ group 'com.icapps'
22
version '0.0.1'
33

44
buildscript {
5-
ext.kotlin_version = '1.1.51'
5+
ext.kotlin_version = '1.1.60'
66

77
repositories {
88
jcenter()

niddler-ui/src/main/kotlin/com/icapps/niddler/ui/export/HarExport.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,9 +105,9 @@ class HarExport(private val targetFile: File) {
105105
BodyFormatType.FORMAT_JSON -> builder.withMime(BodyFormatType.FORMAT_JSON.verbose).withText(message.message.getBodyAsString(message.bodyFormat.encoding))
106106
BodyFormatType.FORMAT_XML -> builder.withMime(BodyFormatType.FORMAT_XML.verbose).withText(message.message.getBodyAsString(message.bodyFormat.encoding))
107107
BodyFormatType.FORMAT_PLAIN -> builder.withMime(BodyFormatType.FORMAT_PLAIN.verbose).withText(message.message.getBodyAsString(message.bodyFormat.encoding))
108-
BodyFormatType.FORMAT_IMAGE -> builder.withMime(message.bodyFormat.subtype ?: "").withText(message.message.body).withEncoding("base64")
109-
BodyFormatType.FORMAT_BINARY -> builder.withMime(message.bodyFormat.subtype ?: "").withText(message.message.body).withEncoding("base64")
110-
BodyFormatType.FORMAT_HTML -> builder.withMime(message.bodyFormat.subtype ?: "").withText(message.message.body).withEncoding("base64")
108+
BodyFormatType.FORMAT_IMAGE -> builder.withMime(message.bodyFormat.subtype ?: "").withText(message.message.bodyAsNormalBase64).withEncoding("base64")
109+
BodyFormatType.FORMAT_BINARY -> builder.withMime(message.bodyFormat.subtype ?: "").withText(message.message.bodyAsNormalBase64).withEncoding("base64")
110+
BodyFormatType.FORMAT_HTML -> builder.withMime(message.bodyFormat.subtype ?: "").withText(message.message.bodyAsNormalBase64).withEncoding("base64")
111111
BodyFormatType.FORMAT_EMPTY -> builder.withMime("").withText("")
112112
else -> builder.withMime("").withText("")
113113
}

niddler-ui/src/main/kotlin/com/icapps/niddler/ui/model/NiddlerMessage.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ open class NiddlerMessage {
3535
val getBodyAsBytes: ByteArray?
3636
get() = if (body != null) Base64.getUrlDecoder().decode(body) else null
3737

38+
val bodyAsNormalBase64: String?
39+
get() = if (body != null) Base64.getEncoder().encodeToString(getBodyAsBytes) else null
40+
3841
fun getBodyAsString(encoding: String?): String? {
3942
return if (body != null)
4043
String(Base64.getUrlDecoder().decode(body), if (encoding == null) Charsets.UTF_8 else Charset.forName(encoding))

niddler-ui/src/main/kotlin/com/icapps/niddler/ui/model/ui/LinkedMessagesRenderer.kt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.icapps.niddler.ui.model.ui
22

3+
import com.icapps.niddler.ui.model.NiddlerMessage
34
import com.icapps.niddler.ui.model.ParsedNiddlerMessage
45
import com.icapps.niddler.ui.setFixedWidth
56
import com.icapps.niddler.ui.util.getStatusCodeString
@@ -84,7 +85,7 @@ class LinkedMessagesRenderer(private val protocolVersion: Int) : TreeCellRendere
8485
} else if (value is ResponseNode) {
8586
message = value.message
8687
icon = downIcon
87-
status = formatStatusCode(value.message.statusCode)
88+
status = fromStatusLine(value.message.message) ?: formatStatusCode(value.message.statusCode)
8889
format = value.message.bodyFormat.toString()
8990

9091
if (protocolVersion == 3) {
@@ -128,7 +129,7 @@ class LinkedMessagesRenderer(private val protocolVersion: Int) : TreeCellRendere
128129
return if (statusCode == null) {
129130
""
130131
} else {
131-
String.format("%d %s", statusCode, getStatusCodeString(statusCode))
132+
String.format("%d - %s", statusCode, getStatusCodeString(statusCode))
132133
}
133134
}
134135

@@ -140,4 +141,10 @@ class LinkedMessagesRenderer(private val protocolVersion: Int) : TreeCellRendere
140141
formatLabel.foreground = color
141142
}
142143

144+
private fun fromStatusLine(message: NiddlerMessage): String? {
145+
if (message.statusLine.isNullOrBlank())
146+
return null
147+
return "${message.statusCode} - ${message.statusLine}"
148+
}
149+
143150
}

niddler-ui/src/main/kotlin/com/icapps/niddler/ui/model/ui/TimelineMessagesTableModel.kt

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,16 @@ class TimelineMessagesTableModel : TableModel, MessagesModel {
9898
INDEX_DIRECTION -> if (message.isRequest) upIcon else downIcon
9999
INDEX_METHOD -> message.method ?: other?.method
100100
INDEX_URL -> message.url ?: other?.url
101-
INDEX_STATUS_CODE -> if (message.statusCode != null) formatStatusCode(message.statusCode) else formatStatusCode(other?.statusCode)
101+
INDEX_STATUS_CODE -> {
102+
if (!message.message.statusLine.isNullOrBlank())
103+
"${message.statusCode} - ${message.message.statusLine}"
104+
else if (!other?.message?.statusLine.isNullOrBlank())
105+
"${other?.message?.statusCode} - ${other?.message?.statusLine}"
106+
else if (message.statusCode != null)
107+
formatStatusCode(message.statusCode)
108+
else
109+
formatStatusCode(other?.statusCode)
110+
}
102111
INDEX_FORMAT -> message.bodyFormat
103112
else -> "<NO COLUMN DEF>"
104113
}
@@ -108,7 +117,7 @@ class TimelineMessagesTableModel : TableModel, MessagesModel {
108117
return if (statusCode == null) {
109118
""
110119
} else {
111-
String.format("%d %s", statusCode, getStatusCodeString(statusCode))
120+
String.format("%d - %s", statusCode, getStatusCodeString(statusCode))
112121
}
113122
}
114123

0 commit comments

Comments
 (0)