diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml
index 0fba5896..09d1a91e 100644
--- a/.buildkite/pipeline.yml
+++ b/.buildkite/pipeline.yml
@@ -31,29 +31,11 @@ steps:
# Linters
#################
- label: ":swift: SwiftLint"
- command: run_swiftlint --strict
- plugins: *common_plugins
+ command: swiftlint
+ env:
+ SWIFTLINT_OPTION_STRICT: true
notify:
- github_commit_status:
- context: "SwiftLint"
+ context: SwiftLint
agents:
- queue: "default"
-
- - label: "🧹 Lint"
- key: "lint"
- command: |
- lint_pod
- plugins: *common_plugins
-
- #################
- # Publish the Podspec (if we're building a tag)
- #################
- - label: "⬆️ Publish Podspec"
- key: "publish"
- command: .buildkite/publish-pod.sh
- plugins: *common_plugins
- depends_on:
- - "test"
- - "validate"
- - "lint"
- if: build.tag != null
+ queue: linter
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e2a6cb28..f843a453 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -48,6 +48,17 @@ _None._
_None._
+## 17.3.0
+
+### New Features
+
+- Add `upgradeURL` to `JetpackAssistantFeatureDetails` (#822)
+- Add support for sending magic links to nonexistent accounts (#812)
+
+### Internal Changes
+- Bump rexml from 3.2.6 to 3.3.9
+- [Tooling] SwiftLint: Use `linter` agent instead of `default` agent
+
## 17.2.0
### New Features
diff --git a/Gemfile.lock b/Gemfile.lock
index 296362a9..abac284d 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -5,18 +5,20 @@ GEM
base64
nkf
rexml
- activesupport (7.1.3.2)
+ activesupport (7.2.2)
base64
+ benchmark (>= 0.3)
bigdecimal
- concurrent-ruby (~> 1.0, >= 1.0.2)
+ concurrent-ruby (~> 1.0, >= 1.3.1)
connection_pool (>= 2.2.5)
drb
i18n (>= 1.6, < 2)
+ logger (>= 1.4.2)
minitest (>= 5.1)
- mutex_m
- tzinfo (~> 2.0)
- addressable (2.8.6)
- public_suffix (>= 2.0.2, < 6.0)
+ securerandom (>= 0.3)
+ tzinfo (~> 2.0, >= 2.0.5)
+ addressable (2.8.7)
+ public_suffix (>= 2.0.2, < 7.0)
algoliasearch (1.27.5)
httpclient (~> 2.8, >= 2.8.3)
json (>= 1.5.1)
@@ -41,16 +43,17 @@ GEM
aws-eventstream (~> 1, >= 1.0.2)
babosa (1.0.4)
base64 (0.2.0)
- bigdecimal (3.1.7)
+ benchmark (0.4.0)
+ bigdecimal (3.1.8)
claide (1.1.0)
claide-plugins (0.9.2)
cork
nap
open4 (~> 1.3)
- cocoapods (1.15.2)
+ cocoapods (1.16.2)
addressable (~> 2.8)
claide (>= 1.0.2, < 2.0)
- cocoapods-core (= 1.15.2)
+ cocoapods-core (= 1.16.2)
cocoapods-deintegrate (>= 1.0.3, < 2.0)
cocoapods-downloader (>= 2.1, < 3.0)
cocoapods-plugins (>= 1.0.0, < 2.0)
@@ -64,10 +67,10 @@ GEM
molinillo (~> 0.8.0)
nap (~> 1.0)
ruby-macho (>= 2.3.0, < 3.0)
- xcodeproj (>= 1.23.0, < 2.0)
+ xcodeproj (>= 1.27.0, < 2.0)
cocoapods-check (1.1.0)
cocoapods (~> 1.0)
- cocoapods-core (1.15.2)
+ cocoapods-core (1.16.2)
activesupport (>= 5.0, < 8)
addressable (~> 2.8)
algoliasearch (~> 1.0)
@@ -90,7 +93,7 @@ GEM
colored2 (3.1.2)
commander (4.6.0)
highline (~> 2.0.0)
- concurrent-ruby (1.2.3)
+ concurrent-ruby (1.3.4)
connection_pool (2.4.1)
cork (0.3.0)
colored2 (~> 3.1)
@@ -212,7 +215,7 @@ GEM
xcodeproj (>= 1.13.0, < 2.0.0)
xcpretty (~> 0.3.0)
xcpretty-travis-formatter (>= 0.0.3)
- ffi (1.16.3)
+ ffi (1.17.0)
fourflusher (2.3.1)
fuzzy_match (2.0.4)
gh_inspector (1.1.3)
@@ -261,10 +264,10 @@ GEM
http-cookie (1.0.5)
domain_name (~> 0.5)
httpclient (2.8.3)
- i18n (1.14.4)
+ i18n (1.14.6)
concurrent-ruby (~> 1.0)
jmespath (1.6.2)
- json (2.7.1)
+ json (2.8.2)
jwt (2.8.1)
base64
kramdown (2.4.0)
@@ -272,14 +275,14 @@ GEM
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
language_server-protocol (3.17.0.3)
+ logger (1.6.1)
mini_magick (4.12.0)
mini_mime (1.1.5)
- minitest (5.22.3)
+ minitest (5.25.1)
molinillo (0.8.0)
multi_json (1.15.0)
multipart-post (2.4.0)
- mutex_m (0.2.0)
- nanaimo (0.3.0)
+ nanaimo (0.4.0)
nap (1.1.0)
naturally (2.2.1)
netrc (0.11.0)
@@ -309,7 +312,7 @@ GEM
trailblazer-option (>= 0.1.1, < 0.2.0)
uber (< 0.2.0)
retriable (3.1.2)
- rexml (3.2.6)
+ rexml (3.3.9)
rouge (2.0.7)
rubocop (1.60.2)
json (~> 2.3)
@@ -331,6 +334,7 @@ GEM
sawyer (0.9.2)
addressable (>= 2.3.5)
faraday (>= 0.17.3, < 3)
+ securerandom (0.3.2)
security (0.1.3)
signet (0.19.0)
addressable (~> 2.8)
@@ -356,13 +360,13 @@ GEM
uber (0.1.0)
unicode-display_width (2.5.0)
word_wrap (1.0.0)
- xcodeproj (1.24.0)
+ xcodeproj (1.27.0)
CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3)
claide (>= 1.0.2, < 2.0)
colored2 (~> 3.1)
- nanaimo (~> 0.3.0)
- rexml (~> 3.2.4)
+ nanaimo (~> 0.4.0)
+ rexml (>= 3.3.6, < 4.0)
xcpretty (0.3.0)
rouge (~> 2.0.7)
xcpretty-travis-formatter (1.0.1)
diff --git a/README.md b/README.md
index b2d11daf..2932a982 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,23 @@
# WordPressKit for iOS
+
+> [!CAUTION]
+> This library is no longer fit for external contribution and community usage.
+>
+> [WordPress iOS](https://github.com/wordpress-mobile/WordPress-iOS) is its only consumer.
+> The repo exists standalone rather than as part of the WordPress codebase because it's convenient to fetch this lump of code that rarely changes as a binary XCFramework dependency.
+> See [#816](https://github.com/wordpress-mobile/WordPressKit-iOS/pull/816).
+
+## XCFramework release instructions
+
+- Run `.buildkite/create-xcframeworks.sh` to create binaries
+- Upload `.build/xcframeworks/WordPressKit.zip` to this repo
+- Update binary target in `Package.swift` with a new URL and checksum*
+- Push the new changes to your branch
+- After testing is done, merge changes into `trunk`
+
+*_checksum is echoed at the end of the `create-xcframeworks.sh` script_
+
## About
WordPressKit offers a clean and simple WordPress.com and WordPress.org API.
diff --git a/Sources/WordPressKit/Services/AccountServiceRemoteREST.h b/Sources/WordPressKit/Services/AccountServiceRemoteREST.h
index d110bc95..a4c0223f 100644
--- a/Sources/WordPressKit/Services/AccountServiceRemoteREST.h
+++ b/Sources/WordPressKit/Services/AccountServiceRemoteREST.h
@@ -17,6 +17,21 @@ extern MagicLinkFlow const MagicLinkFlowSignup;
@interface AccountServiceRemoteREST : ServiceRemoteWordPressComREST
+/**
+* @brief Request an authentication link be sent to the email address provided.
+*
+ * @param success The block that will be executed on success. Can be nil.
+ * @param failure The block that will be executed on failure. Can be nil.
+ */
+- (void)requestWPComAuthLinkForEmail:(NSString *)email
+ clientID:(NSString *)clientID
+ clientSecret:(NSString *)clientSecret
+ source:(MagicLinkSource)source
+ wpcomScheme:(NSString *)scheme
+ createAccountIfNotFound:(BOOL)createAccountIfNotFound
+ success:(void (^)(void))success
+ failure:(void (^)(NSError *error))failure;
+
/**
* @brief Request an authentication link be sent to the email address provided.
*
diff --git a/Sources/WordPressKit/Services/AccountServiceRemoteREST.m b/Sources/WordPressKit/Services/AccountServiceRemoteREST.m
index bc339f29..483893f6 100644
--- a/Sources/WordPressKit/Services/AccountServiceRemoteREST.m
+++ b/Sources/WordPressKit/Services/AccountServiceRemoteREST.m
@@ -244,17 +244,19 @@ - (void)requestWPComAuthLinkForEmail:(NSString *)email
clientSecret:(NSString *)clientSecret
source:(MagicLinkSource)source
wpcomScheme:(NSString *)scheme
+ createAccountIfNotFound:(BOOL)createAccountIfNotFound
success:(void (^)(void))success
failure:(void (^)(NSError *error))failure
{
NSString *path = [self pathForEndpoint:@"auth/send-login-email"
withVersion:WordPressComRESTAPIVersion_1_3];
-
+
NSDictionary *extraParams = @{
MagicLinkParameterFlow: MagicLinkFlowLogin,
- MagicLinkParameterSource: source
+ MagicLinkParameterSource: source,
+ @"create_account": createAccountIfNotFound ? @"true" : @"false"
};
-
+
[self requestWPComMagicLinkForEmail:email
path:path
clientID:clientID
@@ -265,6 +267,24 @@ - (void)requestWPComAuthLinkForEmail:(NSString *)email
failure:failure];
}
+- (void)requestWPComAuthLinkForEmail:(NSString *)email
+ clientID:(NSString *)clientID
+ clientSecret:(NSString *)clientSecret
+ source:(MagicLinkSource)source
+ wpcomScheme:(NSString *)scheme
+ success:(void (^)(void))success
+ failure:(void (^)(NSError *error))failure
+{
+ [self requestWPComAuthLinkForEmail:email
+ clientID:clientID
+ clientSecret:clientSecret
+ source:source
+ wpcomScheme:scheme
+ createAccountIfNotFound:NO
+ success:success
+ failure:failure];
+}
+
- (void)requestWPComSignupLinkForEmail:(NSString *)email
clientID:(NSString *)clientID
clientSecret:(NSString *)clientSecret