Copy
grpcurl \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-d '
{
"records": [
{
"subscriberNumber": {
"e164": "+46712345678"
},
"operatorCode": "A21",
"routingCode": "006",
"validFrom": "2024-04-01T00:00:00Z",
"metadata": {
"test_key": "test_value"
}
}
]
}
' \
sandbox.api.shamrock.wgtwo.com:443 \
wgtwo.number_portability.v1.NumberPortabilityService/CreatePortingRecords
Copy
package com.example.numberPortability
import com.google.protobuf.Timestamp
import com.google.protobuf.util.Timestamps
import com.wgtwo.api.v1.common.e164
import com.wgtwo.api.v1.number_portability.NumberPortabilityServiceGrpcKt
import com.wgtwo.api.v1.number_portability.createPortingRecordsRequest
import com.wgtwo.api.v1.number_portability.portingRecord
import io.grpc.ManagedChannelBuilder
import io.grpc.Status
import io.grpc.StatusException
import kotlinx.coroutines.runBlocking
import java.util.Date
import kotlin.test.assertFailsWith
// private val channel = ManagedChannelBuilder.forAddress("sandbox.api.shamrock.wgtwo.com", 443).build()
private val channel = ManagedChannelBuilder.forAddress("localhost", 11111).usePlaintext().build()
private val stub = NumberPortabilityServiceGrpcKt.NumberPortabilityServiceCoroutineStub(channel)
fun main() = runBlocking {
val createPortingRecordsRequest = createPortingRecordsRequest {
records += portingRecord {
subscriberNumber = e164 { e164 = "+46700000001" }
validFrom = Timestamps.fromDate(Date())
operatorCode = "A21"
routingCode = "010"
metadata.put("test_key", "test_value")
}
records += portingRecord {
subscriberNumber = e164 { e164 = "+46700000002" }
validFrom = Timestamps.fromDate(Date())
operatorCode = "C39"
routingCode = "005"
metadata.putAll(mapOf("test_key1" to "test_value", "test_key2" to "test_value2"))
}
records += portingRecord {
subscriberNumber = e164 { e164 = "+32012345678" }
validFrom = Timestamps.parse("2021-06-01T00:00:00.000Z")
destinationId = "1234"
}
}
println("createPortingRecordsRequest:
$createPortingRecordsRequest")
val createPortingRecordsResponse = stub.createPortingRecords(createPortingRecordsRequest)
println("createPortingRecordsResponse:
$createPortingRecordsResponse")
val createPortingRecordsRequestWithInvalidSubscriberNumber = createPortingRecordsRequest {
records += portingRecord {
subscriberNumber = e164 { e164 = "invalid" }
validFrom = Timestamp.newBuilder().setSeconds(System.currentTimeMillis() / 1000).build()
operatorCode = "A21"
routingCode = "010"
}
}
val exception = assertFailsWith<StatusException>("exception is not a StatusException") {
stub.createPortingRecords(createPortingRecordsRequestWithInvalidSubscriberNumber)
}
assert(exception.status.code == Status.INVALID_ARGUMENT.code) {
"status code is not INVALID_ARGUMENT: ${exception.status.code}"
}
}