Skip to content

Commit ef52176

Browse files
snadorpBenFradet
authored andcommitted
Enforce scalafmt (closes #51)
1 parent 559d29d commit ef52176

File tree

7 files changed

+85
-72
lines changed

7 files changed

+85
-72
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ scala:
55
jdk:
66
- oraclejdk8
77
script:
8-
- sbt coverage test coverageReport
8+
- sbt scalafmtCheck coverage test coverageReport
99
deploy:
1010
skip_cleanup: true
1111
provider: script

project/plugins.sbt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
addSbtPlugin("com.lucidchart" % "sbt-scalafmt" % "1.15")
2-
addSbtPlugin("com.eed3si9n" % "sbt-unidoc" % "0.4.1")
3-
addSbtPlugin("com.typesafe.sbt" % "sbt-site" % "1.3.2")
4-
addSbtPlugin("com.typesafe.sbt" % "sbt-ghpages" % "0.6.2")
5-
addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.5.1")
6-
addSbtPlugin("org.foundweekends" % "sbt-bintray" % "0.5.4")
1+
addSbtPlugin("com.geirsson" % "sbt-scalafmt" % "1.5.1")
2+
addSbtPlugin("com.eed3si9n" % "sbt-unidoc" % "0.4.1")
3+
addSbtPlugin("com.typesafe.sbt" % "sbt-site" % "1.3.2")
4+
addSbtPlugin("com.typesafe.sbt" % "sbt-ghpages" % "0.6.2")
5+
addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.5.1")
6+
addSbtPlugin("org.foundweekends" % "sbt-bintray" % "0.5.4")

src/main/scala/com/snowplowanalytics/refererparser/CorruptJsonException.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,4 @@
1515
*/
1616
package com.snowplowanalytics.refererparser
1717

18-
final case class CorruptJsonException(val message: String) extends Exception(message)
18+
final case class CorruptJsonException(message: String) extends Exception(message)

src/main/scala/com/snowplowanalytics/refererparser/Medium.scala

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,26 +22,26 @@ sealed abstract class Medium(val value: String)
2222

2323
object Medium {
2424
def fromString(s: String): Option[Medium] = s match {
25-
case UnknownMedium.value => Some(UnknownMedium)
26-
case SearchMedium.value => Some(SearchMedium)
27-
case InternalMedium.value => Some(InternalMedium)
28-
case SocialMedium.value => Some(SocialMedium)
29-
case EmailMedium.value => Some(EmailMedium)
30-
case PaidMedium.value => Some(PaidMedium)
31-
case _ => None
25+
case UnknownMedium.value => Some(UnknownMedium)
26+
case SearchMedium.value => Some(SearchMedium)
27+
case InternalMedium.value => Some(InternalMedium)
28+
case SocialMedium.value => Some(SocialMedium)
29+
case EmailMedium.value => Some(EmailMedium)
30+
case PaidMedium.value => Some(PaidMedium)
31+
case _ => None
3232
}
3333

34-
val Unknown = UnknownMedium
35-
val Search = SearchMedium
34+
val Unknown = UnknownMedium
35+
val Search = SearchMedium
3636
val Internal = InternalMedium
37-
val Social = SocialMedium
38-
val Email = EmailMedium
39-
val Paid = PaidMedium
37+
val Social = SocialMedium
38+
val Email = EmailMedium
39+
val Paid = PaidMedium
4040
}
4141

42-
case object UnknownMedium extends Medium("unknown")
43-
case object SearchMedium extends Medium("search")
42+
case object UnknownMedium extends Medium("unknown")
43+
case object SearchMedium extends Medium("search")
4444
case object InternalMedium extends Medium("internal")
45-
case object SocialMedium extends Medium("social")
46-
case object EmailMedium extends Medium("email")
47-
case object PaidMedium extends Medium("paid")
45+
case object SocialMedium extends Medium("social")
46+
case object EmailMedium extends Medium("email")
47+
case object PaidMedium extends Medium("paid")

src/main/scala/com/snowplowanalytics/refererparser/ParseReferers.scala

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ private[refererparser] object ParseReferers {
3939
parameters: Option[List[String]]
4040
)
4141

42-
implicit val jsonEntryDecoder = deriveDecoder[JsonEntry]
42+
implicit val jsonEntryDecoder: Decoder[JsonEntry] = deriveDecoder[JsonEntry]
4343

4444
def loadJsonFromString(rawJson: String): Either[Exception, Map[String, RefererLookup]] =
4545
parse(rawJson).flatMap(loadJson)
@@ -51,23 +51,26 @@ private[refererparser] object ParseReferers {
5151
entries.foldLeft(map) { (mapInner, sourceEntry) =>
5252
val (source, entry) = sourceEntry
5353
mapInner ++ entry.domains.map(domain =>
54-
domain -> RefererLookup(medium, source, entry.parameters.getOrElse(Nil))
55-
)
54+
domain -> RefererLookup(medium, source, entry.parameters.getOrElse(Nil)))
5655
}
5756
}
5857
}
5958

60-
private def parseReferersJson(c: ACursor): Either[Exception, Map[Medium, Map[String, JsonEntry]]] =
59+
private def parseReferersJson(
60+
c: ACursor): Either[Exception, Map[Medium, Map[String, JsonEntry]]] =
6161
for {
6262
mediumKeys <- someOrExcept(c.keys, "Referers json must be an object")
63-
mediumEntries <- mediumKeys.toList.map(k => for {
64-
medium <- someOrExcept(Medium.fromString(k), s"Unrecognized medium: '$k'")
65-
sourceNames <- someOrExcept(c.downField(k).keys, s"Medium '$k' not an object")
66-
sourceEntriesJson = sourceNames.map(mediumName => c.downField(k).downField(mediumName))
67-
sourceEntries <- sourceEntriesJson.map(_.as[JsonEntry]).toList.sequence
68-
} yield medium -> ((sourceNames zip sourceEntries).toMap)).sequence
63+
mediumEntries <- mediumKeys.toList
64+
.map(k =>
65+
for {
66+
medium <- someOrExcept(Medium.fromString(k), s"Unrecognized medium: '$k'")
67+
sourceNames <- someOrExcept(c.downField(k).keys, s"Medium '$k' not an object")
68+
sourceEntriesJson = sourceNames.map(mediumName => c.downField(k).downField(mediumName))
69+
sourceEntries <- sourceEntriesJson.map(_.as[JsonEntry]).toList.sequence
70+
} yield medium -> (sourceNames zip sourceEntries).toMap)
71+
.sequence
6972
} yield mediumEntries.toMap
70-
73+
7174
private def someOrExcept[A](opt: Option[A], message: String): Either[Exception, A] =
7275
opt.toRight(CorruptJsonException(message))
7376
}

src/main/scala/com/snowplowanalytics/refererparser/Parser.scala

Lines changed: 39 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ import cats.syntax.all._
3333
*/
3434
object Parser {
3535
def create[F[_]: Sync](filePath: String): F[Either[Exception, Parser]] =
36-
Sync[F].delay { Source.fromFile(filePath).mkString }.map(rawJson =>
36+
Sync[F]
37+
.delay { Source.fromFile(filePath).mkString }
38+
.map(rawJson =>
3739
ParseReferers.loadJsonFromString(rawJson).map(referers => new Parser(referers)))
3840
}
3941

@@ -78,31 +80,34 @@ class Parser private (referers: Map[String, RefererLookup]) {
7880
internalDomains: List[String]
7981
): Option[Referer] = {
8082
val scheme = refererUri.getScheme
81-
val host = refererUri.getHost
82-
val path = refererUri.getPath
83-
val query = Option(refererUri.getQuery)
83+
val host = refererUri.getHost
84+
val path = refererUri.getPath
85+
val query = Option(refererUri.getQuery)
8486

8587
val validUri = (scheme == "http" || scheme == "https") && host != null && path != null
8688

8789
if (validUri) {
88-
if ( // Check for internal domains
89-
pageHost.map(_.equals(host)).getOrElse(false) ||
90-
internalDomains.map(_.trim()).contains(host)
91-
) {
90+
if (// Check for internal domains
91+
pageHost.exists(_.equals(host)) ||
92+
internalDomains.map(_.trim()).contains(host)) {
9293
Some(InternalReferer)
9394
} else {
94-
Some(lookupReferer(host, path).map(lookup => {
95-
lookup.medium match {
96-
case UnknownMedium => UnknownReferer
97-
case SearchMedium => SearchReferer(
98-
lookup.source,
99-
query.flatMap(q => extractSearchTerm(q, lookup.parameters)))
100-
case InternalMedium => InternalReferer
101-
case SocialMedium => SocialReferer(lookup.source)
102-
case EmailMedium => EmailReferer(lookup.source)
103-
case PaidMedium => PaidReferer(lookup.source)
104-
}
105-
}).getOrElse(UnknownReferer))
95+
Some(
96+
lookupReferer(host, path)
97+
.map(lookup => {
98+
lookup.medium match {
99+
case UnknownMedium => UnknownReferer
100+
case SearchMedium =>
101+
SearchReferer(
102+
lookup.source,
103+
query.flatMap(q => extractSearchTerm(q, lookup.parameters)))
104+
case InternalMedium => InternalReferer
105+
case SocialMedium => SocialReferer(lookup.source)
106+
case EmailMedium => EmailReferer(lookup.source)
107+
case PaidMedium => PaidReferer(lookup.source)
108+
}
109+
})
110+
.getOrElse(UnknownReferer))
106111
}
107112
} else {
108113
None
@@ -116,7 +121,9 @@ class Parser private (referers: Map[String, RefererLookup]) {
116121
query.split("&").toList.map { pair =>
117122
val equalsIndex = pair.indexOf("=")
118123
if (equalsIndex > 0) {
119-
(decodeUriPart(pair.substring(0, equalsIndex)), decodeUriPart(pair.substring(equalsIndex+1)))
124+
(
125+
decodeUriPart(pair.substring(0, equalsIndex)),
126+
decodeUriPart(pair.substring(equalsIndex + 1)))
120127
} else {
121128
(decodeUriPart(pair), "")
122129
}
@@ -125,18 +132,18 @@ class Parser private (referers: Map[String, RefererLookup]) {
125132
private def decodeUriPart(part: String): String = URLDecoder.decode(part, "UTF-8")
126133

127134
/**
128-
* Determine
135+
* Determine
129136
*/
130137
private def lookupReferer(refererHost: String, refererPath: String): Option[RefererLookup] = {
131138
val hosts = hostsToTry(refererHost)
132139
val paths = pathsToTry(refererPath)
133140

134141
val results: Stream[RefererLookup] = for {
135-
path <- paths.toStream
136-
host <- hosts.toStream
142+
path <- paths.toStream
143+
host <- hosts.toStream
137144
result <- referers.get(host + path).toStream
138145
} yield result
139-
146+
140147
// Since streams are lazy we don't calculate past the first element
141148
results.headOption
142149
}
@@ -146,8 +153,11 @@ class Parser private (referers: Map[String, RefererLookup]) {
146153
* For instance, hostsToTry("www.google.com") == List("www.google.com", "google.com", "com")
147154
*/
148155
private def hostsToTry(refererHost: String): List[String] = {
149-
refererHost.split("\\.").toList
150-
.scanRight("")((part, full) => s"$part.$full").init
156+
refererHost
157+
.split("\\.")
158+
.toList
159+
.scanRight("")((part, full) => s"$part.$full")
160+
.init
151161
.map(s => s.substring(0, s.length - 1))
152162
}
153163

@@ -156,9 +166,9 @@ class Parser private (referers: Map[String, RefererLookup]) {
156166
* For instance, pathsToTry("google.com/images/1/2/3") == List("/images/1/2/3", "/images", "")
157167
*/
158168
private def pathsToTry(refererPath: String): List[String] = {
159-
refererPath.split("/").toList.filter(_ != "").headOption match {
169+
refererPath.split("/").find(_ != "") match {
160170
case Some(p) => List(refererPath, "/" + p, "")
161-
case None => List("")
171+
case None => List("")
162172
}
163173
}
164174
}

src/main/scala/com/snowplowanalytics/refererparser/Referer.scala

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ package com.snowplowanalytics.refererparser
2020
* UnknownReferer, SearchReferer, InternalReferer, SocialReferer, EmailReferer,
2121
* or PaidReferer.
2222
*/
23-
sealed abstract trait Referer
24-
final case object UnknownReferer extends Referer
25-
final case class SearchReferer (source: String, term: Option[String]) extends Referer
26-
final case object InternalReferer extends Referer
27-
final case class SocialReferer (source: String) extends Referer
28-
final case class EmailReferer (source: String) extends Referer
29-
final case class PaidReferer (source: String) extends Referer
23+
sealed trait Referer
24+
case object UnknownReferer extends Referer
25+
final case class SearchReferer(source: String, term: Option[String]) extends Referer
26+
case object InternalReferer extends Referer
27+
final case class SocialReferer(source: String) extends Referer
28+
final case class EmailReferer(source: String) extends Referer
29+
final case class PaidReferer(source: String) extends Referer

0 commit comments

Comments
 (0)