Skip to content

Commit

Permalink
Release 1.10.0
Browse files Browse the repository at this point in the history
  • Loading branch information
chetanshanbagBV authored Apr 25, 2022
1 parent a2e0c6a commit adf30bc
Show file tree
Hide file tree
Showing 36 changed files with 1,224 additions and 51 deletions.
55 changes: 55 additions & 0 deletions .github/workflows/sonarscanCI.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: BVSwift Sonarqube Scan CI

on:
push:
branches: [ develop ]
pull_request:
branches: [ develop ]

env:
SONAR_LOGIN: ${{ secrets.SONAR_TOKEN }}
SONAR_URL: ${{ secrets.SONAR_URL }}

jobs:
build:

runs-on: macos-11

steps:
- uses: actions/checkout@v2
- uses: Homebrew/actions/setup-homebrew@master

- name: Select Xcode
run: sudo Xcode-select -switch /Applications/Xcode_13.1.app

- name: GenerateBuildConfigCoverage
run: sh '././ci_scripts/generateCoverage.sh'

- uses: actions/upload-artifact@v2
with:
name: Coverage
path: |
${{ github.workspace }}/sonarqube-generic-coverage.xml
retention-days: 1

scan:
needs: build

runs-on: [self-hosted,qa]

steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- uses: actions/download-artifact@v2
with:
name: Coverage
path: ${{ github.workspace }}
- uses: actions/setup-java@v2
with:
distribution: 'adopt'
java-version: '11'


- name: Sonarqube Scan
run: sh '././ci_scripts/sonarscan.sh'
2 changes: 1 addition & 1 deletion BVSwift.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

Pod::Spec.new do |s|
s.name = 'BVSwift'
s.version = '1.9.0'
s.version = '1.10.0'
s.summary = 'Simple Swift based iOS SDK to interact with the Bazaarvoice platform API.'
s.description = 'The Bazaarvoice Software Development Kit (SDK) is a Swift iOS library that provides an easy way to generate REST calls to the Bazaarvoice Developer API. Using this SDK, mobile developers can quickly integrate Bazaarvoice content into their native iOS apps for iPhone and iPad on iOS 8.0 or newer.'

Expand Down
39 changes: 28 additions & 11 deletions BVSwift.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,14 @@
895FB971279846BB0031DDED /* BVFeature.swift in Sources */ = {isa = PBXBuildFile; fileRef = 895FB970279846BB0031DDED /* BVFeature.swift */; };
895FB972279847750031DDED /* BVFeedback.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98686C852407112F00D67889 /* BVFeedback.swift */; };
895FB97627994A300031DDED /* BVLanguageStat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 895FB97527994A300031DDED /* BVLanguageStat.swift */; };
899900092706E45F0005275A /* BVReviewFilterQweryTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 899900082706E45F0005275A /* BVReviewFilterQweryTest.swift */; };
899900092706E45F0005275A /* BVFeatureQueryTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 899900082706E45F0005275A /* BVFeatureQueryTest.swift */; };
8999000B270B454D0005275A /* BVFeatureStats.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8999000A270B454D0005275A /* BVFeatureStats.swift */; };
89DB2B4026F1C726006E8CAC /* BVTopicFilterQuery.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89DB2B3F26F1C726006E8CAC /* BVTopicFilterQuery.swift */; };
89DB2B4226F1C7F8006E8CAC /* BVFilterReview.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89DB2B4126F1C7F8006E8CAC /* BVFilterReview.swift */; };
89DB2B4026F1C726006E8CAC /* BVFeatureQuery.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89DB2B3F26F1C726006E8CAC /* BVFeatureQuery.swift */; };
89DB2B4226F1C7F8006E8CAC /* BVFeatures.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89DB2B4126F1C7F8006E8CAC /* BVFeatures.swift */; };
89E3106F27F4C9F700D42042 /* BVTagStats.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89E3106E27F4C9F700D42042 /* BVTagStats.swift */; };
89F1351E27FD92D4006BBBF5 /* BVSecondaryRatingStat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89F1351D27FD92D4006BBBF5 /* BVSecondaryRatingStat.swift */; };
89F1352027FEE9EA006BBBF5 /* BVSecondaryRatingsDistributionValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89F1351F27FEE9EA006BBBF5 /* BVSecondaryRatingsDistributionValue.swift */; };
89F1352227FEEC2B006BBBF5 /* BVSecondaryRatingsDistribution.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89F1352127FEEC2B006BBBF5 /* BVSecondaryRatingsDistribution.swift */; };
98686BBF2406F3CF00D67889 /* BVCommentQueryTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98686BBE2406F3CF00D67889 /* BVCommentQueryTest.swift */; };
98686BC724070EC700D67889 /* BVAnalyticsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98686BC124070EC600D67889 /* BVAnalyticsManager.swift */; };
98686BC824070EC700D67889 /* BVAnalyticsLocaleService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98686BC024070EC600D67889 /* BVAnalyticsLocaleService.swift */; };
Expand Down Expand Up @@ -294,10 +298,14 @@
42C3C3B52507951C00305A4C /* BVIncentivizedStats.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BVIncentivizedStats.swift; sourceTree = "<group>"; };
895FB970279846BB0031DDED /* BVFeature.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BVFeature.swift; sourceTree = "<group>"; };
895FB97527994A300031DDED /* BVLanguageStat.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BVLanguageStat.swift; sourceTree = "<group>"; };
899900082706E45F0005275A /* BVReviewFilterQweryTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BVReviewFilterQweryTest.swift; sourceTree = "<group>"; };
899900082706E45F0005275A /* BVFeatureQueryTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BVFeatureQueryTest.swift; sourceTree = "<group>"; };
8999000A270B454D0005275A /* BVFeatureStats.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BVFeatureStats.swift; sourceTree = "<group>"; };
89DB2B3F26F1C726006E8CAC /* BVTopicFilterQuery.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BVTopicFilterQuery.swift; sourceTree = "<group>"; };
89DB2B4126F1C7F8006E8CAC /* BVFilterReview.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BVFilterReview.swift; sourceTree = "<group>"; };
89DB2B3F26F1C726006E8CAC /* BVFeatureQuery.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BVFeatureQuery.swift; sourceTree = "<group>"; };
89DB2B4126F1C7F8006E8CAC /* BVFeatures.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BVFeatures.swift; sourceTree = "<group>"; };
89E3106E27F4C9F700D42042 /* BVTagStats.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BVTagStats.swift; sourceTree = "<group>"; };
89F1351D27FD92D4006BBBF5 /* BVSecondaryRatingStat.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BVSecondaryRatingStat.swift; sourceTree = "<group>"; };
89F1351F27FEE9EA006BBBF5 /* BVSecondaryRatingsDistributionValue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BVSecondaryRatingsDistributionValue.swift; sourceTree = "<group>"; };
89F1352127FEEC2B006BBBF5 /* BVSecondaryRatingsDistribution.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BVSecondaryRatingsDistribution.swift; sourceTree = "<group>"; };
98686BBE2406F3CF00D67889 /* BVCommentQueryTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = BVCommentQueryTest.swift; path = BVSwiftTests/BVConversations/Display/BVCommentQueryTest.swift; sourceTree = SOURCE_ROOT; };
98686BC024070EC600D67889 /* BVAnalyticsLocaleService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BVAnalyticsLocaleService.swift; sourceTree = "<group>"; };
98686BC124070EC600D67889 /* BVAnalyticsManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BVAnalyticsManager.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -922,7 +930,10 @@
98686D882408089E00D67889 /* ProgressiveSubmissionReview.swift */,
98686D8A240808BD00D67889 /* BVProgressiveReview.swift */,
98686D8C240808F300D67889 /* BVProgressiveReviewFields.swift */,
89DB2B4126F1C7F8006E8CAC /* BVFeatures.swift */,
89DB2B4126F1C7F8006E8CAC /* BVFilterReview.swift */,
89F1351F27FEE9EA006BBBF5 /* BVSecondaryRatingsDistributionValue.swift */,
89F1352127FEEC2B006BBBF5 /* BVSecondaryRatingsDistribution.swift */,
);
path = Model;
sourceTree = "<group>";
Expand Down Expand Up @@ -955,7 +966,7 @@
98686C702407110300D67889 /* BVReviewSearchQuery.swift */,
98686D842408067100D67889 /* BVMultiProductQuery.swift */,
98686D862408069600D67889 /* BVMultiProductQueryResponse.swift */,
89DB2B3F26F1C726006E8CAC /* BVTopicFilterQuery.swift */,
89DB2B3F26F1C726006E8CAC /* BVFeatureQuery.swift */,
);
path = Types;
sourceTree = "<group>";
Expand Down Expand Up @@ -1000,6 +1011,8 @@
9F34FD7A251DCBC60023BB89 /* BVProductFilteredStat.swift */,
8999000A270B454D0005275A /* BVFeatureStats.swift */,
895FB97527994A300031DDED /* BVLanguageStat.swift */,
89F1351D27FD92D4006BBBF5 /* BVSecondaryRatingStat.swift */,
89E3106E27F4C9F700D42042 /* BVTagStats.swift */,
);
path = Types;
sourceTree = "<group>";
Expand Down Expand Up @@ -1092,7 +1105,7 @@
9F51CA51240CD8A80043AED5 /* BVReviewHighlightsQueryTest.swift */,
9F34FD7C2521B7FA0023BB89 /* BVProductsQueryTest.swift */,
422C3B202538524900080544 /* BVCommentsQueryTest.swift */,
899900082706E45F0005275A /* BVReviewFilterQweryTest.swift */,
899900082706E45F0005275A /* BVFeatureQueryTest.swift */,
);
path = Display;
sourceTree = "<group>";
Expand Down Expand Up @@ -1468,6 +1481,7 @@
98686C972407113100D67889 /* BVDistributionElement.swift in Sources */,
98686D032407122D00D67889 /* BVCurationsSubmissionable.swift in Sources */,
98686C9A2407113100D67889 /* BVRatingDistribution.swift in Sources */,
89F1352027FEE9EA006BBBF5 /* BVSecondaryRatingsDistributionValue.swift in Sources */,
98686CBE2407117400D67889 /* BVCommentSubmission.swift in Sources */,
98686C212407103D00D67889 /* BVSubmissionable.swift in Sources */,
98686C102407100900D67889 /* BVNetworkingManager.swift in Sources */,
Expand Down Expand Up @@ -1559,8 +1573,11 @@
98686C372407109900D67889 /* BVConversationsSortOrder.swift in Sources */,
98686D1B240712BB00D67889 /* BVUtilities.swift in Sources */,
98686D18240712BB00D67889 /* BVAtomic.swift in Sources */,
89E3106F27F4C9F700D42042 /* BVTagStats.swift in Sources */,
98686C722407110300D67889 /* BVProductSearchQuery.swift in Sources */,
89F1351E27FD92D4006BBBF5 /* BVSecondaryRatingStat.swift in Sources */,
98686BDD24070F3800D67889 /* BVAnalyticsProductType.swift in Sources */,
89F1352227FEEC2B006BBBF5 /* BVSecondaryRatingsDistribution.swift in Sources */,
98686CCF240711B800D67889 /* BVManagerCurationsSubmission.swift in Sources */,
98686BDC24070F3800D67889 /* BVAnalyticsEventBatch.swift in Sources */,
98686C5D240710AE00D67889 /* BVAuthorInclude.swift in Sources */,
Expand Down Expand Up @@ -1611,8 +1628,8 @@
98686CEC2407120700D67889 /* BVCurationsProductAttribute.swift in Sources */,
98686C7A2407110300D67889 /* BVQuestionQuery.swift in Sources */,
98686CA92407113100D67889 /* BVPhoto.swift in Sources */,
89DB2B4226F1C7F8006E8CAC /* BVFilterReview.swift in Sources */,
89DB2B4026F1C726006E8CAC /* BVTopicFilterQuery.swift in Sources */,
89DB2B4226F1C7F8006E8CAC /* BVFeatures.swift in Sources */,
89DB2B4026F1C726006E8CAC /* BVFeatureQuery.swift in Sources */,
98686C53240710AE00D67889 /* BVAuthorStat.swift in Sources */,
98686D1D240712BB00D67889 /* BVFingerprint.swift in Sources */,
98686C58240710AE00D67889 /* BVCommentInclude.swift in Sources */,
Expand Down Expand Up @@ -1653,7 +1670,7 @@
98686D712407157A00D67889 /* BVRecommendationsQueryTest.swift in Sources */,
98686D9324080D5E00D67889 /* BVProgressiveSubmissionTest.swift in Sources */,
98686D4A240714A000D67889 /* BVCommonTest.swift in Sources */,
899900092706E45F0005275A /* BVReviewFilterQweryTest.swift in Sources */,
899900092706E45F0005275A /* BVFeatureQueryTest.swift in Sources */,
98686D6B2407151600D67889 /* BVReviewSubmissionTest.swift in Sources */,
98686D5A240714DF00D67889 /* BVReviewQueryTest.swift in Sources */,
98686D662407151600D67889 /* BVPhotoSubmissionTest.swift in Sources */,
Expand Down
2 changes: 1 addition & 1 deletion BVSwift/BVCommon/Configuration/BVConstants.swift
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ internal struct BVConstants {
static let appVersionField: String = "_appVersion"
static let buildNumberField: String = "_buildNumber"
static let sdkVersionField: String = "_bvIosSwiftSdkVersion"
static let bvSwiftSDKVersion: String = "1.9.0"
static let bvSwiftSDKVersion: String = "1.10.0"

}

Expand Down
11 changes: 11 additions & 0 deletions BVSwift/BVCommon/Query/BVQueryable.swift
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ public protocol BVQueryFieldable {
public protocol BVQueryFilterable {
associatedtype Filter: BVQueryFilter
associatedtype Operator: BVQueryFilterOperator
func filter(_ apply: [(Filter, Operator)]) -> Self
func filter(_ apply: (Filter, Operator)...) -> Self
}

Expand Down Expand Up @@ -107,6 +108,16 @@ public protocol BVQueryFeatureStatable {
func feature(_ value: String) -> Self
}

/// Protocol definition for the behavior of adding tagstats
public protocol BVQueryTagStatStatable {
func tagStats(_ value: Bool) -> Self
}

/// Protocol definition for the behavior of adding tagstats
public protocol BVQuerySecondaryRatingstatable {
func secondaryRatingstats(_ value: Bool) -> Self
}

/// Protocol definition for the behavior of adding features
public protocol BVQueryLanguageStatable {
func language(_ value: String) -> Self
Expand Down
8 changes: 7 additions & 1 deletion BVSwift/BVConversations/BVConversationsConstants.swift
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,8 @@ internal struct BVConversationsConstants {
static let productId: String = "productId"
static let feature: String = "Feature"
static let language: String = "language"
static let tagStats: String = "tagstats"
static let secondaryRatingStats: String = "secondaryratingstats"
}
}

Expand Down Expand Up @@ -371,14 +373,18 @@ internal struct BVConversationsConstants {
static let totalPositiveFeedbackCount: String =
"TotalPositiveFeedbackCount"
static let userLocation: String = "UserLocation"
static let contextDataValue: String = "ContextDataValue"
static let secondaryRating: String = "SecondaryRating"
static let additionalField: String = "AdditionalField"
static let tagDimension: String = "tag"
}
}

internal struct BVFilterReviews{

static let singularKey: String = "feature"
static let pluralKey: String = "features"
static let getResource: String = "data/features.json"
static let getResource: String = "features.json"

}

Expand Down
6 changes: 3 additions & 3 deletions BVSwift/BVConversations/BVManagerConversationsQuery.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public protocol BVConversationsQueryGenerator {
// Generator for BVAuthorQuery
/// - Parameters:
/// - authorId: Author id to query against
func query(productId: String) -> BVTopicFilterQuery?
func query(productId: String) -> BVFeatureQuery?

/// Generator for BVAuthorQuery
/// - Parameters:
Expand Down Expand Up @@ -118,13 +118,13 @@ public protocol BVConversationsQueryGenerator {
/// instead of having to manually configure each type.
extension BVManager: BVConversationsQueryGenerator {

public func query(productId: String) -> BVTopicFilterQuery? {
public func query(productId: String) -> BVFeatureQuery? {
guard let config = BVManager.conversationsConfiguration else {
return nil
}

return
BVTopicFilterQuery(productId: productId)
BVFeatureQuery(productId: productId)
.configure(config)
}

Expand Down
24 changes: 24 additions & 0 deletions BVSwift/BVConversations/Display/Fields/Types/BVReviewFilter.swift
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,10 @@ public enum BVReviewFilter: BVQueryFilter {
case totalNegativeFeedbackCount(Int)
case totalPositiveFeedbackCount(Int)
case userLocation(String)
case contextDataValue(id: String, value: String)
case secondaryRating(id: String, value: String)
case additionalField(id: String, value: String)
case tagDimension(id: String, value: String)

public static var filterPrefix: String {
return BVConversationsConstants.BVQueryFilter.defaultField
Expand Down Expand Up @@ -111,6 +115,14 @@ public enum BVReviewFilter: BVQueryFilter {
return filter
case let .userLocation(filter):
return filter
case let .contextDataValue(_, filter):
return filter
case let .secondaryRating(_, filter):
return filter
case let .additionalField(_, filter):
return filter
case let .tagDimension(_, filter):
return filter
}
}
}
Expand Down Expand Up @@ -172,6 +184,18 @@ extension BVReviewFilter: BVConversationsQueryValue {
.totalPositiveFeedbackCount
case .userLocation:
return BVConversationsConstants.BVReviews.Keys.userLocation
case let .contextDataValue(field, _):
return BVConversationsConstants
.BVReviews.Keys.contextDataValue + "_" + field
case let .secondaryRating(field, _):
return BVConversationsConstants
.BVReviews.Keys.secondaryRating + "_" + field
case let .additionalField(field, _):
return BVConversationsConstants
.BVReviews.Keys.additionalField + "_" + field
case let .tagDimension(field, _):
return BVConversationsConstants
.BVReviews.Keys.tagDimension + "_" + field
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
//
//
// BVSecondaryRatingStat.swift
// BVSwift
//
// Copyright © 2022 Bazaarvoice. All rights reserved.
//

import Foundation

internal struct BVSecondaryRatingStat: BVQueryField {

private let value: CustomStringConvertible

var internalDescription: String {
return BVConversationsConstants.BVQueryType.Keys.secondaryRatingStats
}

var representedValue: CustomStringConvertible {
return value
}

var description: String {
return internalDescription
}

init(_ _value: Bool) {
value = "\(_value)"
}
}
30 changes: 30 additions & 0 deletions BVSwift/BVConversations/Display/Fields/Types/BVTagStats.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
//
//
// BVTagStats.swift
// BVSwift
//
// Copyright © 2022 Bazaarvoice. All rights reserved.
//

import Foundation

internal struct BVTagStats: BVQueryField {

private let value: CustomStringConvertible

var internalDescription: String {
return BVConversationsConstants.BVQueryType.Keys.tagStats
}

var representedValue: CustomStringConvertible {
return value
}

var description: String {
return internalDescription
}

init(_ _value: Bool) {
value = "\(_value)"
}
}
6 changes: 5 additions & 1 deletion BVSwift/BVConversations/Display/Types/BVCommentQuery.swift
Original file line number Diff line number Diff line change
Expand Up @@ -87,14 +87,18 @@ extension BVCommentQuery: BVQueryFilterable {
/// If more than one tuple is provided then it is assumed that the proper
/// coalescing is to apply a logical OR to the supplied filter tuples.
@discardableResult
public func filter(_ apply: (Filter, Operator)...) -> Self {
public func filter(_ apply: [(Filter, Operator)]) -> Self {
type(of: self).groupFilters(apply).forEach { group in
let expr: BVQueryFilterExpression<Filter, Operator> =
1 < group.count ? .or(group) : .and(group)
flatten(expr).forEach { add($0) }
}
return self
}

public func filter(_ apply: (Filter, Operator)...) -> Self {
self.filter(apply)
}
}

// MARK: - BVCommentQuery: BVQueryIncludeable
Expand Down
Loading

0 comments on commit adf30bc

Please sign in to comment.