本文整理汇总了Scala中scodec.bits.ByteVector类的典型用法代码示例。如果您正苦于以下问题:Scala ByteVector类的具体用法?Scala ByteVector怎么用?Scala ByteVector使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了ByteVector类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Scala代码示例。
示例1: b64T
//设置package包名称以及导入依赖的类
package codes.mark.geilematte
import org.http4s._
import org.http4s.headers.{Accept, `Content-Type`}
import scodec.{Codec, DecodeResult}
import scodec.bits.{BitVector, ByteVector}
import scodec.codecs.implicits._
import org.http4s.{DecodeResult => DecRes}
import scalaz.concurrent.Task
trait EntityEncoders {
def b64T[A:Codec]:EntityEncoder[Task[A]] =
EntityEncoder.simple(`Content-Type`(MediaType.`application/base64`))(
(a:Task[A]) => ByteVector(Codec.encode(a.unsafePerformSync).require.toBase64.getBytes)
)
def b64[A:Codec]:EntityEncoder[A] =
EntityEncoder.simple(`Content-Type`(MediaType.`application/base64`))(
(a:A) => ByteVector(Codec.encode(a).require.toBase64.getBytes)
)
}
trait EntityDecoders {
def fromB64[A:Codec]:EntityDecoder[A] =
new EntityDecoder[A] {
override def consumes = Set(MediaType.`application/base64`)
override def decode(msg: Message, strict: Boolean) =
DecRes.success(
msg.as[String]
.map(s => Codec.decode[A](BitVector.fromBase64(s).get).require)
.unsafePerformSync.value
)
}
}
开发者ID:i-am-the-slime,项目名称:geilematte,代码行数:38,代码来源:EntityEncoders.scala
示例2: encVectorCategory
//设置package包名称以及导入依赖的类
package codes.mark
import doobie.imports._
import doobie.util.transactor.DriverManagerTransactor
import org.http4s.headers.`Content-Type`
import org.http4s.{EntityEncoder, MediaType}
import scodec.bits.ByteVector
import scalatags.Text.TypedTag
import scalaz.concurrent.Task
import scalaz.std.vector._
import scalaz.std.string._
import scalaz.syntax.traverse._
package object geilematte {
trait GeileMatteEntityEncoders {
implicit val htmlEnc: EntityEncoder[TypedTag[String]] =
EntityEncoder.simple(`Content-Type`(MediaType.`text/html`))(
tt => ByteVector(("<!DOCTYPE html>" + tt.render).getBytes)
)
implicit def encVectorCategory: EntityEncoder[Vector[Category]] =
EntityEncoder.simple(`Content-Type`(MediaType.`application/json`))(
(vec: Vector[Category]) => ByteVector(("[" + vec.foldMap(_.name + ",\n").dropRight(1) + "]").getBytes)
)
implicit val intEnc: EntityEncoder[Int] =
EntityEncoder.simple(`Content-Type`(MediaType.`text/plain`))(
(i: Int) => ByteVector(i.toString.getBytes)
)
}
object Implicits extends GeileMatteEntityEncoders
}
开发者ID:i-am-the-slime,项目名称:geilematte,代码行数:36,代码来源:package.scala
示例3: ServiceSpec
//设置package包名称以及导入依赖的类
package org.mdoc.rendering.service
import org.http4s.{ Request, Uri }
import org.http4s.dsl._
import org.http4s.headers.`Content-Type`
import org.http4s.util.CaseInsensitiveString
import org.mdoc.common.model.{ Document, Format }
import org.mdoc.common.model.jvm.FormatOps
import org.scalacheck.Prop._
import org.scalacheck.Properties
import scodec.bits.ByteVector
object ServiceSpec extends Properties("Service") {
property("docToResponse sets ContentType") = secure {
Format.values.forall { format =>
val doc = Document(format, ByteVector.view("".getBytes))
val response = Service.docToResponse(doc).run
response.headers.get(CaseInsensitiveString("content-type"))
.contains(`Content-Type`(FormatOps.toMediaType(format)))
}
}
property("showRequest") = forAll { (s: String) =>
Service.showRequest(Request(uri = Uri(path = s))) ?= s"GET $s"
}
property("route: /") = secure {
Service.route.run(Request()).run.status ?= NotFound
}
property("route: /render failure") = secure {
val req: Request = Request(uri = Uri(path = "/render"), method = POST)
val body = Service.route.run(req).run.body.runLast.run
.flatMap(_.decodeAscii.right.toOption).getOrElse("")
body ?= "Invalid JSON"
}
property("route: /render/pdf/test.pdf") = secure {
val req = Request(uri = Uri(path = "/render/pdf/test.pdf"))
Service.route.run(req).run.status ?= BadRequest
}
property("route: /version") = secure {
Service.route.run(Request(uri = Uri(path = "/version"))).run.status ?= Ok
}
}
开发者ID:m-doc,项目名称:rendering-service,代码行数:49,代码来源:ServiceSpec.scala
示例4: ClientMovement
//设置package包名称以及导入依赖的类
package wow.realm.protocol.payloads
import scodec.Codec
import scodec.bits.ByteVector
import scodec.codecs._
import wow.realm.entities.{Guid, Position}
import wow.realm.protocol.{ClientSide, Payload, ServerSide}
case class ClientMovement(guid: Guid, flags: Long, extraFlags: Int, time: Long, position: Position, bytes: ByteVector)
extends Payload with ClientSide with ServerSide
object ClientMovement {
implicit val codec: Codec[ClientMovement] = (
("guid" | Guid.packedCodec) ::
("flags" | uint32L) ::
("extraFlags" | uint16L) ::
("time" | uint32L) ::
("position" | Position.codecXYZO) ::
("bytes" | bytes)
).as[ClientMovement]
}
开发者ID:SKNZ,项目名称:SpinaciCore,代码行数:23,代码来源:ClientMovement.scala
示例5: ClientAuthSession
//设置package包名称以及导入依赖的类
package wow.realm.protocol.payloads
import wow.common.codecs._
import wow.realm.protocol._
import scodec.Codec
import scodec.bits.ByteVector
import scodec.codecs._
case class ClientAuthSession(build: Long,
loginServerId: Long,
login: String,
loginServerType: Long,
challenge: Long,
regionId: Long,
battleGroupId: Long,
realmId: Long,
dosResponse: BigInt,
shaDigest: ByteVector,
// Below that, everything is zlib deflated
addons: Vector[AddonInfo],
currentTime: Long) extends Payload with ClientSide
object ClientAuthSession {
val AddonInfoMaxSize = 0xFFFFF
implicit val opCodeProvider: OpCodeProvider[ClientAuthSession] = OpCodes.AuthSession
implicit val codec: Codec[ClientAuthSession] = {
("build" | uint32L) ::
("loginServerId" | uint32L) ::
("login" | cstring) ::
("loginServerType" | uint32L) ::
("challenge" | uint32L) ::
("regionId" | uint32L) ::
("battleGroupId" | uint32L) ::
("realmId" | uint32L) ::
("dosResponse" | fixedUBigIntL(8)) ::
("shaDigest" | bytes(20)) ::
sizePrefixedTransform(
upperBound(uint32L, AddonInfoMaxSize),
uint32L.consume {
addonCount => vectorOfN(provide(addonCount.toInt), Codec[AddonInfo])
} {
addons => addons.size.toLong
} :: ("currentTime" | uint32L),
zlib(bits)
)
}.as[ClientAuthSession]
}
开发者ID:SKNZ,项目名称:SpinaciCore,代码行数:51,代码来源:ClientAuthSession.scala
示例6: sizeBound
//设置package包名称以及导入依赖的类
package wow.common.codecs
import wow.utils.BigIntExtensions._
import scodec.bits.{BitVector, ByteVector}
import scodec.{Attempt, Codec, DecodeResult, Err, SizeBound}
private val sizeInBits = sizeInBytes * 8L
override def sizeBound: SizeBound = SizeBound.exact(sizeInBits)
override def encode(value: BigInt): Attempt[BitVector] = {
try {
val valueBytes = value.toUnsignedLBytes(sizeInBytes.toInt)
val valueBits = ByteVector.view(valueBytes).bits
Attempt.successful(valueBits)
} catch {
case e: IllegalArgumentException => Attempt.failure(Err(e.toString))
}
}
override def decode(bits: BitVector): Attempt[DecodeResult[BigInt]] = {
bits.acquire(sizeInBits) match {
case Left(err) => Attempt.failure(Err(err))
case Right(usableBits) =>
val bigInt = BigInt.fromUnsignedLBytes(usableBits.toByteArray)
Attempt.successful(DecodeResult(bigInt, bits.drop(sizeInBits)))
}
}
override def toString = s"BigIntCodec"
}
开发者ID:SKNZ,项目名称:SpinaciCore,代码行数:36,代码来源:FixedUnsignedLBigIntCodec.scala
示例7: SessionCipherTest
//设置package包名称以及导入依赖的类
package wow.realm.crypto
import wow.utils.BigIntExtensions._
import org.scalatest.{FlatSpec, Matchers}
import scodec.bits.{ByteVector, _}
class SessionCipherTest extends FlatSpec with Matchers {
behavior of "SessionCipher"
private val sessionKey = BigInt.fromUnsignedLBytes(
hex"0x4EE9401C869593B43EDEA515C59FDBF0C3E7C9BC7E4912815CE177B7FA6CA2D735B8C8651952B2A6".reverse.toArray
)
val cipher = new SessionCipher(sessionKey)
it should "decipher value as expected" in {
def decrypt(crypted: ByteVector, decrypted: ByteVector) = {
val cryptedArray = crypted.toArray
cipher.decrypt(cryptedArray)
cryptedArray shouldEqual decrypted.toArray
}
decrypt(hex"2FB030BAE9F7", hex"0004ff040000")
decrypt(hex"9DD64EA5DD8B", hex"000437000000")
decrypt(hex"A841E178BDD6", hex"00088C030000")
decrypt(hex"868813402A0E", hex"000CDC010000")
}
}
开发者ID:SKNZ,项目名称:SpinaciCore,代码行数:29,代码来源:SessionCipherTest.scala
示例8: circe
//设置package包名称以及导入依赖的类
package org.mdoc.common.model
import cats.data.Xor
import io.circe.{ Decoder, DecodingFailure, Encoder }
import scodec.bits.ByteVector
object circe {
implicit val byteVectorDecoder: Decoder[ByteVector] =
Decoder.instance { cursor =>
Decoder[String].apply(cursor).flatMap { str =>
ByteVector.fromBase64Descriptive(str) match {
case Right(bytes) => Xor.right(bytes)
case Left(err) => Xor.left(DecodingFailure(err, cursor.history))
}
}
}
implicit val byteVectorEncoder: Encoder[ByteVector] =
Encoder[String].contramap(_.toBase64)
}
开发者ID:m-doc,项目名称:common-model,代码行数:22,代码来源:circe.scala
示例9: CirceSpec
//设置package包名称以及导入依赖的类
package org.mdoc.common.model
import cats.data.Xor
import io.circe.{ Decoder, Encoder, Json }
import org.mdoc.common.model.circe._
import org.scalacheck.Prop._
import org.scalacheck.Properties
import scodec.bits.ByteVector
object CirceSpec extends Properties("circe") {
property("Decoder[ByteVector] success") = secure {
Decoder[ByteVector].decodeJson(Json.string("SGVsbG8=")) ?=
Xor.right(ByteVector("Hello".getBytes))
}
property("Decoder[ByteVector] failure") = secure {
Decoder[ByteVector].decodeJson(Json.string("???")).isLeft
}
property("Encoder[ByteVector]") = secure {
Encoder[ByteVector].apply(ByteVector("Hello".getBytes)) ?=
Json.string("SGVsbG8=")
}
}
开发者ID:m-doc,项目名称:common-model,代码行数:26,代码来源:CirceSpec.scala
示例10: RenderingInputSpec
//设置package包名称以及导入依赖的类
package org.mdoc.common.model
import cats.data.Xor
import io.circe.generic.auto._
import io.circe.parse._
import io.circe.syntax._
import org.mdoc.common.model.Format.{ Html, Pdf }
import org.mdoc.common.model.RenderingEngine.LibreOffice
import org.mdoc.common.model.circe._
import org.scalacheck.Prop._
import org.scalacheck.Properties
import scodec.bits.ByteVector
object RenderingInputSpec extends Properties("RenderingInput") {
{
val json = """
{"id":{"self":"42"},"config":{"outputFormat":{"Pdf":{}},"engine":{"LibreOffice":{}}},"doc":{"format":{"Html":{}},"body":"SGVsbG8sIFdvcmxkIQ=="}}
""".trim
val config = RenderingConfig(Pdf, LibreOffice)
val doc = Document(Html, ByteVector("Hello, World!".getBytes))
val input = RenderingInput(JobId("42"), config, doc)
property("JSON decode") = secure {
decode[RenderingInput](json) ?= Xor.right(input)
}
property("JSON encode") = secure {
input.asJson.noSpaces ?= json
}
}
}
开发者ID:m-doc,项目名称:common-model,代码行数:34,代码来源:RenderingInputSpec.scala
示例11: GPOCommand
//设置package包名称以及导入依赖的类
package org.emv.commands
import org.emv.tlv.EMVTLV.EMVTLVType
import org.emv.tlv.{CommandTemplate, ProcessingOptionsDataObjectList}
import org.iso7816.APDU
import org.iso7816.APDU.APDUCommand
import org.lau.tlv.ber._
import scodec.bits.ByteVector
import scodec.bits._
case class GPOCommand(commandTemplate: CommandTemplate)
extends APDUCommand(GPOCommand.CLA,
GPOCommand.INS, 0.toByte,
0.toByte,
Some(commandTemplate.serializeTLV),
Some(0.toByte)) {
}
object GPOCommand {
val INS: Byte = 0xA8.toByte
val CLA: Byte = 0x80.toByte
def apply(pdol: ProcessingOptionsDataObjectList, tagList: List[BerTLV]) =
new GPOCommand(CommandTemplate(pdol.createDOLValue(tagList)))
def apply() = new GPOCommand(CommandTemplate(ByteVector.empty))
}
开发者ID:lfcabend,项目名称:emvlib,代码行数:32,代码来源:GPOCommand.scala
示例12: ByteUtils
//设置package包名称以及导入依赖的类
package org.emv.tlv
import scodec.bits.ByteVector
object ByteUtils {
def withBitInByteSet(value: ByteVector, bitIndex: Int, byteIndex: Int): ByteVector =
if (byteIndex >= 1 && byteIndex <= value.size) {
val bit2Set = 1 << bitIndex - 1
val u = (value(byteIndex - 1) | bit2Set).toByte
value.update(byteIndex - 1, u)
} else value
def withBitInByteUnSet(value: ByteVector, bitIndex: Int, byteIndex: Int): ByteVector =
if (byteIndex >= 1 && byteIndex <= value.size) {
val bit2Set = 1 << bitIndex - 1
val u = (value(byteIndex - 1) & ~bit2Set).toByte
value.update(byteIndex - 1, u)
} else value
def isBitSetInByte(value: ByteVector, bitIndex: Int, byteIndex: Int): Boolean =
if (byteIndex >= 1 && byteIndex <= value.size) {
val bit2Check = 1 << bitIndex - 1
(value(byteIndex - 1) & bit2Check) == bit2Check
} else false
}
开发者ID:lfcabend,项目名称:emvlib,代码行数:28,代码来源:ByteUtils.scala
示例13: writeToString
//设置package包名称以及导入依赖的类
package org.http4s
package argonaut
import scalaz.Monoid
import scalaz.stream.Process
import scalaz.stream.text.utf8Decode
import scodec.bits.ByteVector
trait WriteToString {
// In the real repo, this comes from Http4sSpec
def writeToString[A](a: A)(implicit W: EntityEncoder[A]): String =
Process.eval(W.toEntity(a))
.collect { case EntityEncoder.Entity(body, _ ) => body }
.flatMap(identity)
.fold1Monoid
.pipe(utf8Decode)
.runLastOr("")
.run
implicit val byteVectorMonoidInstance: Monoid[ByteVector] = Monoid.instance(_ ++ _, ByteVector.empty)
}
开发者ID:http4s,项目名称:http4s-argonaut61,代码行数:22,代码来源:WriteToString.scala
示例14: FileDrainSpec
//设置package包名称以及导入依赖的类
package swave.core.io.files
import java.nio.file.{Files, Path}
import scala.concurrent.duration._
import scodec.bits.ByteVector
import swave.compat.scodec._
import swave.core.util._
import swave.core._
class FileDrainSpec extends SwaveSpec {
import swave.core.io.files._
implicit val env = StreamEnv()
val TestLines = List[String](
"a" * 1000 + "\n",
"b" * 1000 + "\n",
"c" * 1000 + "\n",
"d" * 1000 + "\n",
"e" * 1000 + "\n",
"f" * 1000 + "\n")
val TestBytes = TestLines.map(ByteVector.encodeAscii(_).right.get)
"Drain.toPath must" - {
"write lines to a short file" in withTempPath(create = true) { path ?
val result = Spout.one(ByteVector("abc" getBytes UTF8)).drainTo(Drain.toPath(path, chunkSize = 512))
result.await(5.seconds) shouldEqual 3
verifyFileContents(path, "abc")
}
"write lines to a long file" in withTempPath(create = true) { path ?
val result = Spout(TestBytes).drainTo(Drain.toPath(path, chunkSize = 512))
result.await(5.seconds) shouldEqual 6006
verifyFileContents(path, TestLines mkString "")
}
"create new file if required" in withTempPath(create = false) { path ?
val result = Spout(TestBytes).drainTo(Drain.toPath(path, chunkSize = 512))
result.await(5.seconds) shouldEqual 6006
verifyFileContents(path, TestLines mkString "")
}
}
private def withTempPath(create: Boolean)(block: Path ? Unit): Unit = {
val targetFile = Files.createTempFile("file-sink", ".tmp")
if (!create) Files.delete(targetFile)
try block(targetFile)
finally Files.delete(targetFile)
}
private def verifyFileContents(path: Path, contents: String): Unit = {
val out = Files.readAllBytes(path)
new String(out) shouldEqual contents
}
}
开发者ID:sirthias,项目名称:swave,代码行数:58,代码来源:FileDrainSpec.scala
示例15: HashTransformationSpec
//设置package包名称以及导入依赖的类
package swave.core.hash
import scodec.bits.ByteVector
import swave.compat.scodec._
import swave.core._
class HashTransformationSpec extends SwaveSpec {
import swave.core.text._
implicit val env = StreamEnv()
"HashTransformations" - {
"md5" in {
Spout
.one("swave rocks!")
.utf8Encode
.md5
.drainToHead()
.value
.get
.get shouldEqual ByteVector.fromHex("e1b2b603f9cca4a909c07d42a5788fe3").get
}
}
}
开发者ID:sirthias,项目名称:swave,代码行数:26,代码来源:HashTransformationSpec.scala
示例16: LockTicketFactory
//设置package包名称以及导入依赖的类
package one.lockstep.lock
import one.lockstep.util.crypto._
import one.lockstep.util.protocol.Protocol
import scodec.bits.ByteVector
object LockTicketFactory {
val defaultCiphersuite = Ciphersuite128
val defaultSelfSignKeyPair: KeyPair = { //fixed key-pair for self-signed tickets
val privKey = PrivateKey(ByteVector.fromValidBase64("MEECAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQcEJzAlAgEBBCBRZbavTgattYk1rs88SnlKDyH6QdOskTWqQLlluDOTGw=="))
val publicKey = PublicKey(ByteVector.fromValidBase64("MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/LC5MharLwnEX64rAc1i4EUxmgSqDduHg92Cj9KN9uWytw8SwxwRxFm0xReoqHuCPiiQlbTptm6MLlGV1GxjaA=="))
KeyPair(privKey, publicKey)
}
def apply(ciphersuite: Ciphersuite, selfSignKeyPair: KeyPair) =
new LockTicketFactory(ciphersuite, selfSignKeyPair)
def apply(): LockTicketFactory =
new LockTicketFactory(defaultCiphersuite, defaultSelfSignKeyPair)
}
class LockTicketFactory(ciphersuite: Ciphersuite, selfSignKeyPair: KeyPair) {
def selfIssuedTicket(): LockTicket = {
val lockId = LockId.generate()
val issuanceTime = System.currentTimeMillis()
val body = LockTicketBody(lockId, issuer = "self", issuanceTime, Map.empty)
sign(body, selfSignKeyPair)
}
def sign(ticketBody: LockTicketBody, keyPair: KeyPair): LockTicket = {
val encodedTicket = Protocol.encoded(ticketBody)
val signature = ciphersuite.signature.sign(keyPair.privateKey)(encodedTicket)
val fp = ciphersuite.hash(keyPair.publicKey)
LockTicket(encodedTicket, fp, signature)
}
}
开发者ID:lockstep-one,项目名称:vault,代码行数:41,代码来源:LockTicketFactory.scala
示例17: WkhtmltopdfSpec
//设置package包名称以及导入依赖的类
package org.mdoc.rendering.engines
import java.nio.file.Paths
import org.mdoc.common.model._
import org.mdoc.common.model.Format.{ Html, Jpeg, Pdf }
import org.mdoc.common.model.RenderingEngine._
import org.mdoc.fshell.Shell
import org.mdoc.fshell.Shell.ShellSyntax
import org.mdoc.rendering.engines.wkhtmltopdf._
import org.scalacheck.Prop._
import org.scalacheck.Properties
import scodec.bits.ByteVector
object WkhtmltopdfSpec extends Properties("wkhtmltopdf") {
property("renderDoc: Html -> Pdf") = secure {
val body = ByteVector.view("<html><body>Hello, world!</body></html>".getBytes)
val input = RenderingInput(JobId(""), RenderingConfig(Pdf, Wkhtmltopdf), Document(Html, body))
generic.renderDoc(input).map(util.isPdfDocument).yolo
}
property("renderDoc: Html -> Jpeg") = secure {
val body = ByteVector.view("<html><body>Hello, world!</body></html>".getBytes)
val input = RenderingInput(JobId(""), RenderingConfig(Jpeg, Wkhtmltoimage), Document(Html, body))
generic.renderDoc(input).map(_.body.size > 1024).runTask.handle { case _ => true }.run
}
property("renderUrl") = secure {
renderUrl("http://google.com", Pdf).map(util.isPdfDocument).yolo
}
property("execWkhtmltoX: Png") = secure {
val p = for {
tmpFile <- Shell.createTempFile("google", ".png")
res <- execWkhtmltoX(Wkhtmltoimage, "http://google.com", tmpFile, Paths.get("."))
bytes <- Shell.readAllBytes(tmpFile)
_ <- Shell.delete(tmpFile)
} yield res.status > 0 || bytes.size > 1024 // wkhtmltoimage is not available on Travis
p.yolo
}
property("execWkhtmltoX: Pdf") = secure {
val p = for {
tmpFile <- Shell.createTempFile("google", ".pdf")
_ <- execWkhtmltoX(Wkhtmltopdf, "http://google.com", tmpFile, Paths.get("."))
bytes <- Shell.readAllBytes(tmpFile)
_ <- Shell.delete(tmpFile)
} yield util.isPdfByteVector(bytes)
p.yolo
}
}
开发者ID:m-doc,项目名称:rendering-engines,代码行数:52,代码来源:WkhtmltopdfSpec.scala
示例18: PandocSpec
//设置package包名称以及导入依赖的类
package org.mdoc.rendering.engines
import org.mdoc.common.model._
import org.mdoc.common.model.Format.{ Latex, Pdf, Txt }
import org.mdoc.common.model.RenderingEngine.Pandoc
import org.mdoc.fshell.Shell.ShellSyntax
import org.scalacheck.Prop._
import org.scalacheck.Properties
import scodec.bits.ByteVector
object PandocSpec extends Properties("pandoc") {
property("renderDoc: Latex -> Pdf") = secure {
val body = ByteVector.view("\\documentclass{article}\\begin{document}Hello, world!\\end{document}".getBytes)
val input = RenderingInput(JobId(""), RenderingConfig(Pdf, Pandoc), Document(Latex, body))
generic.renderDoc(input).map(util.isPdfDocument).yolo
}
property("renderDoc: Txt -> Txt") = secure {
val doc = Document(Txt, ByteVector.view("Hello\n".getBytes))
val input = RenderingInput(JobId(""), RenderingConfig(Txt, Pandoc), doc)
val rendered = generic.renderDoc(input).yolo
rendered.body.containsSlice(doc.body)
}
}
开发者ID:m-doc,项目名称:rendering-engines,代码行数:26,代码来源:PandocSpec.scala
示例19: LibreOfficeSpec
//设置package包名称以及导入依赖的类
package org.mdoc.rendering.engines
import java.nio.file.Paths
import org.mdoc.common.model._
import org.mdoc.common.model.Format.{ Odt, Pdf, Txt }
import org.mdoc.common.model.RenderingEngine.LibreOffice
import org.mdoc.fshell.Shell
import org.mdoc.fshell.Shell.ShellSyntax
import org.mdoc.rendering.engines.libreoffice._
import org.scalacheck.Prop._
import org.scalacheck.Properties
import scodec.bits.ByteVector
object LibreOfficeSpec extends Properties("libreoffice") {
property("renderDoc: Odt -> Pdf") = secure {
val odt = Paths.get("./src/test/resources/test.odt")
val p = for {
inputBytes <- Shell.readAllBytes(odt)
input = RenderingInput(JobId(""), RenderingConfig(Pdf, LibreOffice),
Document(Odt, inputBytes))
doc <- generic.renderDoc(input)
} yield util.isPdfDocument(doc)
p.yolo
}
property("renderDoc: Txt -> Txt") = secure {
val doc = Document(Txt, ByteVector.view("Hello\n".getBytes))
val input = RenderingInput(JobId(""), RenderingConfig(Txt, LibreOffice), doc)
val rendered = generic.renderDoc(input).yolo
rendered.body.containsSlice(doc.body)
}
property("execLowriter") = secure {
val odt = Paths.get("./src/test/resources/test.odt")
val pdf = Paths.get("./test.pdf")
val p = for {
notExists <- Shell.fileNotExists(pdf)
_ <- execLowriter(odt, Paths.get("."), Pdf)
bytes <- Shell.readAllBytes(pdf)
_ <- Shell.delete(pdf)
} yield notExists && util.isPdfByteVector(bytes)
p.yolo
}
}
开发者ID:m-doc,项目名称:rendering-engines,代码行数:46,代码来源:LibreOfficeSpec.scala
示例20: decode
//设置package包名称以及导入依赖的类
package spinoco.fs2.http.body
import scodec.bits.ByteVector
import scodec.{Attempt, Decoder, Err}
import spinoco.protocol.http.Uri
import spinoco.protocol.http.header.value.{ContentType, HttpCharset, MediaType}
trait BodyDecoder[A] {
def decode(bytes: ByteVector, contentType: ContentType): Attempt[A]
}
object BodyDecoder {
def apply[A](f: (ByteVector, ContentType) => Attempt[A]): BodyDecoder[A] =
new BodyDecoder[A] {
def decode(bytes: ByteVector, contentType: ContentType): Attempt[A] =
f(bytes, contentType)
}
def forDecoder[A](f: ContentType => Attempt[Decoder[A]]): BodyDecoder[A] =
BodyDecoder { (bs, ct) => f(ct).flatMap(_.decodeValue(bs.bits)) }
val stringDecoder: BodyDecoder[String] = BodyDecoder { case (bytes, ct) =>
if (! ct.mediaType.isText) Attempt.Failure(Err(s"Media Type must be text, but is ${ct.mediaType}"))
else {
HttpCharset.asJavaCharset(ct.charset.getOrElse(HttpCharset.`UTF-8`)).flatMap { implicit chs =>
Attempt.fromEither(bytes.decodeString.left.map(ex => Err(s"Failed to decode string ContentType: $ct, charset: $chs, err: ${ex.getMessage}")))
}
}
}
val `x-www-form-urlencoded`: BodyDecoder[Uri.Query] =
forDecoder { ct =>
if (ct.mediaType == MediaType.`application/x-www-form-urlencoded`) Attempt.successful(Uri.Query.codec)
else Attempt.failure(Err(s"Unsupported content type : $ct"))
}
}
开发者ID:Spinoco,项目名称:fs2-http,代码行数:42,代码来源:BodyDecoder.scala
注:本文中的scodec.bits.ByteVector类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论