aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2020-02-23 19:45:20 +0100
committerEven Rouault <even.rouault@spatialys.com>2020-02-24 10:32:24 +0100
commit25f8c03774bd639af9e07f616211caada9d307f0 (patch)
tree84d8bf3644da6398cd0abeed0a5435f9863d727c /src
parent57595327b253f23ba4330fb1cda3d7bb66bbc81d (diff)
downloadPROJ-25f8c03774bd639af9e07f616211caada9d307f0.tar.gz
PROJ-25f8c03774bd639af9e07f616211caada9d307f0.zip
Expose proj_context_is_network_enabled() in C API
Diffstat (limited to 'src')
-rw-r--r--src/4D_api.cpp2
-rw-r--r--src/apps/projinfo.cpp4
-rw-r--r--src/filemanager.cpp5
-rw-r--r--src/iso19111/c_api.cpp10
-rw-r--r--src/networkfilemanager.cpp48
-rw-r--r--src/proj.h2
-rw-r--r--src/proj_internal.h3
7 files changed, 41 insertions, 33 deletions
diff --git a/src/4D_api.cpp b/src/4D_api.cpp
index 91510c35..88a0ed14 100644
--- a/src/4D_api.cpp
+++ b/src/4D_api.cpp
@@ -1152,7 +1152,7 @@ PJ *proj_create_crs_to_crs_from_pj (PJ_CONTEXT *ctx, const PJ *source_crs, cons
ctx, operation_ctx, PROJ_SPATIAL_CRITERION_PARTIAL_INTERSECTION);
proj_operation_factory_context_set_grid_availability_use(
ctx, operation_ctx,
- pj_context_is_network_enabled(ctx) ?
+ proj_context_is_network_enabled(ctx) ?
PROJ_GRID_AVAILABILITY_KNOWN_AVAILABLE:
PROJ_GRID_AVAILABILITY_DISCARD_OPERATION_IF_MISSING_GRID);
diff --git a/src/apps/projinfo.cpp b/src/apps/projinfo.cpp
index 9cd9b2ee..41a95237 100644
--- a/src/apps/projinfo.cpp
+++ b/src/apps/projinfo.cpp
@@ -787,7 +787,7 @@ int main(int argc, char **argv) {
CoordinateOperationContext::SourceTargetCRSExtentUse::SMALLEST;
bool buildBoundCRSToWGS84 = false;
CoordinateOperationContext::GridAvailabilityUse gridAvailabilityUse =
- pj_context_is_network_enabled(nullptr)
+ proj_context_is_network_enabled(nullptr)
? CoordinateOperationContext::GridAvailabilityUse::KNOWN_AVAILABLE
: CoordinateOperationContext::GridAvailabilityUse::USE_FOR_SORTING;
CoordinateOperationContext::IntermediateCRSUse allowUseIntermediateCRS =
@@ -1071,7 +1071,7 @@ int main(int argc, char **argv) {
std::exit(0);
} else if (ci_equal(arg, "--remote-data")) {
#ifdef CURL_ENABLED
- if (pj_context_is_network_enabled(nullptr)) {
+ if (proj_context_is_network_enabled(nullptr)) {
std::cout << "Status: enabled" << std::endl;
std::cout << "URL: " << pj_context_get_url_endpoint(nullptr)
<< std::endl;
diff --git a/src/filemanager.cpp b/src/filemanager.cpp
index 165a5b15..d7c55fba 100644
--- a/src/filemanager.cpp
+++ b/src/filemanager.cpp
@@ -944,7 +944,7 @@ std::unique_ptr<File> FileApiAdapter::open(PJ_CONTEXT *ctx,
std::unique_ptr<File> FileManager::open(PJ_CONTEXT *ctx, const char *filename,
FileAccess access) {
if (starts_with(filename, "http://") || starts_with(filename, "https://")) {
- if (!pj_context_is_network_enabled(ctx)) {
+ if (!proj_context_is_network_enabled(ctx)) {
pj_log(
ctx, PJ_LOG_ERROR,
"Attempt at accessing remote resource not authorized. Either "
@@ -1672,7 +1672,8 @@ NS_PROJ::FileManager::open_resource_file(projCtx ctx, const char *name) {
if (file == nullptr && !is_tilde_slash(name) &&
!is_rel_or_absolute_filename(name) && !starts_with(name, "http://") &&
- !starts_with(name, "https://") && pj_context_is_network_enabled(ctx)) {
+ !starts_with(name, "https://") &&
+ proj_context_is_network_enabled(ctx)) {
std::string remote_file(pj_context_get_url_endpoint(ctx));
if (!remote_file.empty()) {
if (remote_file.back() != '/') {
diff --git a/src/iso19111/c_api.cpp b/src/iso19111/c_api.cpp
index 67050725..bb01889b 100644
--- a/src/iso19111/c_api.cpp
+++ b/src/iso19111/c_api.cpp
@@ -177,7 +177,7 @@ static PJ *pj_obj_create(PJ_CONTEXT *ctx, const IdentifiedObjectNNPtr &objIn) {
auto formatter = PROJStringFormatter::create(
PROJStringFormatter::Convention::PROJ_5, dbContext);
auto projString = coordop->exportToPROJString(formatter.get());
- if (pj_context_is_network_enabled(ctx)) {
+ if (proj_context_is_network_enabled(ctx)) {
ctx->defer_grid_opening = true;
}
auto pj = pj_create_internal(ctx, projString.c_str());
@@ -6619,8 +6619,8 @@ int proj_coordoperation_is_instantiable(PJ_CONTEXT *ctx,
}
auto dbContext = getDBcontextNoException(ctx, __FUNCTION__);
try {
- auto ret = op->isPROJInstantiable(dbContext,
- pj_context_is_network_enabled(ctx))
+ auto ret = op->isPROJInstantiable(
+ dbContext, proj_context_is_network_enabled(ctx) != false)
? 1
: 0;
if (ctx->cpp_context) {
@@ -6934,8 +6934,8 @@ int proj_coordoperation_get_grid_used_count(PJ_CONTEXT *ctx,
try {
if (!coordoperation->gridsNeededAsked) {
coordoperation->gridsNeededAsked = true;
- const auto gridsNeeded =
- co->gridsNeeded(dbContext, pj_context_is_network_enabled(ctx));
+ const auto gridsNeeded = co->gridsNeeded(
+ dbContext, proj_context_is_network_enabled(ctx) != false);
for (const auto &gridDesc : gridsNeeded) {
coordoperation->gridsNeeded.emplace_back(gridDesc);
}
diff --git a/src/networkfilemanager.cpp b/src/networkfilemanager.cpp
index d252fd84..28d8baa2 100644
--- a/src/networkfilemanager.cpp
+++ b/src/networkfilemanager.cpp
@@ -2023,6 +2023,32 @@ int proj_context_set_enable_network(PJ_CONTEXT *ctx, int enable) {
#endif
}
+// ---------------------------------------------------------------------------
+
+/** Return if network access is enabled.
+*
+* @param ctx PROJ context, or NULL
+* @return TRUE if network access has been enabled
+* @since 7.0
+*/
+int proj_context_is_network_enabled(PJ_CONTEXT *ctx) {
+ if (ctx == nullptr) {
+ ctx = pj_get_default_ctx();
+ }
+ if (ctx->networking.enabled_env_variable_checked) {
+ return ctx->networking.enabled;
+ }
+ const char *enabled = getenv("PROJ_NETWORK");
+ if (enabled && enabled[0] != '\0') {
+ ctx->networking.enabled = ci_equal(enabled, "ON") ||
+ ci_equal(enabled, "YES") ||
+ ci_equal(enabled, "TRUE");
+ }
+ pj_load_ini(ctx);
+ ctx->networking.enabled_env_variable_checked = true;
+ return ctx->networking.enabled;
+}
+
//! @endcond
// ---------------------------------------------------------------------------
@@ -2177,7 +2203,7 @@ int proj_is_download_needed(PJ_CONTEXT *ctx, const char *url_or_filename,
if (ctx == nullptr) {
ctx = pj_get_default_ctx();
}
- if (!pj_context_is_network_enabled(ctx)) {
+ if (!proj_context_is_network_enabled(ctx)) {
pj_log(ctx, PJ_LOG_ERROR, "Networking capabilities are not enabled");
return false;
}
@@ -2313,7 +2339,7 @@ int proj_download_file(PJ_CONTEXT *ctx, const char *url_or_filename,
if (ctx == nullptr) {
ctx = pj_get_default_ctx();
}
- if (!pj_context_is_network_enabled(ctx)) {
+ if (!proj_context_is_network_enabled(ctx)) {
pj_log(ctx, PJ_LOG_ERROR, "Networking capabilities are not enabled");
return false;
}
@@ -2503,24 +2529,6 @@ int proj_download_file(PJ_CONTEXT *ctx, const char *url_or_filename,
//! @cond Doxygen_Suppress
-bool pj_context_is_network_enabled(PJ_CONTEXT *ctx) {
- if (ctx == nullptr) {
- ctx = pj_get_default_ctx();
- }
- if (ctx->networking.enabled_env_variable_checked) {
- return ctx->networking.enabled;
- }
- const char *enabled = getenv("PROJ_NETWORK");
- if (enabled && enabled[0] != '\0') {
- ctx->networking.enabled = ci_equal(enabled, "ON") ||
- ci_equal(enabled, "YES") ||
- ci_equal(enabled, "TRUE");
- }
- pj_load_ini(ctx);
- ctx->networking.enabled_env_variable_checked = true;
- return ctx->networking.enabled;
-}
-
// ---------------------------------------------------------------------------
std::string pj_context_get_grid_cache_filename(PJ_CONTEXT *ctx) {
diff --git a/src/proj.h b/src/proj.h
index fbed71b0..74a42034 100644
--- a/src/proj.h
+++ b/src/proj.h
@@ -490,6 +490,8 @@ int PROJ_DLL proj_context_set_network_callbacks(
int PROJ_DLL proj_context_set_enable_network(PJ_CONTEXT* ctx,
int enabled);
+int PROJ_DLL proj_context_is_network_enabled(PJ_CONTEXT* ctx);
+
void PROJ_DLL proj_context_set_url_endpoint(PJ_CONTEXT* ctx, const char* url);
void PROJ_DLL proj_grid_cache_set_enable(PJ_CONTEXT* ctx, int enabled);
diff --git a/src/proj_internal.h b/src/proj_internal.h
index 0cffb475..3f0f0e5f 100644
--- a/src/proj_internal.h
+++ b/src/proj_internal.h
@@ -861,9 +861,6 @@ PJ *pj_create_internal (PJ_CONTEXT *ctx, const char *definition);
PJ *pj_create_argv_internal (PJ_CONTEXT *ctx, int argc, char **argv);
// For use by projinfo
-bool PROJ_DLL pj_context_is_network_enabled(PJ_CONTEXT* ctx);
-
-// For use by projinfo
std::string PROJ_DLL pj_context_get_url_endpoint(PJ_CONTEXT* ctx);
void pj_load_ini(PJ_CONTEXT* ctx);