#include "atom/browser/native_window.h"
#include "atom/browser/window_list.h"
#include "atom/common/native_mate_converters/callback.h"
+#include "atom/common/native_mate_converters/string_map_converter.h"
#include "atom/common/node_includes.h"
#include "native_mate/dictionary.h"
#include "native_mate/object_template_builder.h"
void AutoUpdater::BuildPrototype(
v8::Isolate* isolate, v8::Local<v8::ObjectTemplate> prototype) {
mate::ObjectTemplateBuilder(isolate, prototype)
- .SetMethod("setFeedURL", &auto_updater::AutoUpdater::SetFeedURL)
+ .SetMethod("_setFeedURL", &auto_updater::AutoUpdater::SetFeedURL)
.SetMethod("checkForUpdates", &auto_updater::AutoUpdater::CheckForUpdates)
.SetMethod("quitAndInstall", &AutoUpdater::QuitAndInstall);
}
}
#if !defined(OS_MACOSX) || defined(MAS_BUILD)
-void AutoUpdater::SetFeedURL(const std::string& url) {
+void AutoUpdater::SetFeedURL(const std::string& url,
+ const HeaderMap& requestHeaders) {
}
void AutoUpdater::CheckForUpdates() {
#ifndef ATOM_BROWSER_AUTO_UPDATER_H_
#define ATOM_BROWSER_AUTO_UPDATER_H_
+#include <map>
#include <string>
#include "base/macros.h"
class AutoUpdater {
public:
+ typedef std::map<std::string, std::string> HeaderMap;
+
// Gets/Sets the delegate.
static Delegate* GetDelegate();
static void SetDelegate(Delegate* delegate);
- static void SetFeedURL(const std::string& url);
+ static void SetFeedURL(const std::string& url,
+ const HeaderMap& requestHeaders);
static void CheckForUpdates();
static void QuitAndInstall();
}
// static
-void AutoUpdater::SetFeedURL(const std::string& feed) {
- if (g_updater == nil) {
- Delegate* delegate = GetDelegate();
- if (!delegate)
- return;
+void AutoUpdater::SetFeedURL(const std::string& feed,
+ const HeaderMap& requestHeaders) {
+ Delegate* delegate = GetDelegate();
+ if (!delegate)
+ return;
- // Initialize the SQRLUpdater.
- NSURL* url = [NSURL URLWithString:base::SysUTF8ToNSString(feed)];
- NSURLRequest* urlRequest = [NSURLRequest requestWithURL:url];
+ NSURL* url = [NSURL URLWithString:base::SysUTF8ToNSString(feed)];
+ NSMutableURLRequest* urlRequest = [NSMutableURLRequest requestWithURL:url];
+ for (auto&& it : requestHeaders) {
+ [urlRequest setValue:base::SysUTF8ToNSString(it.second)
+ forHTTPHeaderField:base::SysUTF8ToNSString(it.first)];
+ }
+
+ if (g_updater == nil) {
+ // Initialize the SQRLUpdater.
@try {
g_updater = [[SQRLUpdater alloc] initWithUpdateRequest:urlRequest];
} @catch (NSException* error) {
delegate->OnUpdateAvailable();
});
}];
+ } else {
+ g_updater.updateRequest = urlRequest;
}
}
#include <string>
#include "atom/common/crash_reporter/crash_reporter.h"
+#include "atom/common/native_mate_converters/string_map_converter.h"
#include "base/bind.h"
#include "native_mate/dictionary.h"
namespace mate {
-template<>
-struct Converter<std::map<std::string, std::string> > {
- static bool FromV8(v8::Isolate* isolate,
- v8::Local<v8::Value> val,
- std::map<std::string, std::string>* out) {
- if (!val->IsObject())
- return false;
-
- v8::Local<v8::Object> dict = val->ToObject();
- v8::Local<v8::Array> keys = dict->GetOwnPropertyNames();
- for (uint32_t i = 0; i < keys->Length(); ++i) {
- v8::Local<v8::Value> key = keys->Get(i);
- (*out)[V8ToString(key)] = V8ToString(dict->Get(key));
- }
- return true;
- }
-};
-
template<>
struct Converter<CrashReporter::UploadReportResult> {
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,
--- /dev/null
+// Copyright (c) 2016 GitHub, Inc.
+// Use of this source code is governed by the MIT license that can be
+// found in the LICENSE file.
+
+#ifndef ATOM_COMMON_NATIVE_MATE_CONVERTERS_STRING_MAP_CONVERTER_H_
+#define ATOM_COMMON_NATIVE_MATE_CONVERTERS_STRING_MAP_CONVERTER_H_
+
+#include <map>
+#include <string>
+
+#include "native_mate/converter.h"
+
+namespace mate {
+
+template<>
+struct Converter<std::map<std::string, std::string> > {
+ static bool FromV8(v8::Isolate* isolate,
+ v8::Local<v8::Value> val,
+ std::map<std::string, std::string>* out) {
+ if (!val->IsObject())
+ return false;
+
+ v8::Local<v8::Object> dict = val->ToObject();
+ v8::Local<v8::Array> keys = dict->GetOwnPropertyNames();
+ for (uint32_t i = 0; i < keys->Length(); ++i) {
+ v8::Local<v8::Value> key = keys->Get(i);
+ (*out)[V8ToString(key)] = V8ToString(dict->Get(key));
+ }
+ return true;
+ }
+};
+
+} // namespace mate
+
+#endif // ATOM_COMMON_NATIVE_MATE_CONVERTERS_STRING_MAP_CONVERTER_H_
The `autoUpdater` object has the following methods:
-### `autoUpdater.setFeedURL(url)`
+### `autoUpdater.setFeedURL(url[, requestHeaders])`
* `url` String
+* `requestHeaders` Object - HTTP request headers (_OS X_)
-Sets the `url` and initialize the auto updater. The `url` cannot be changed
-once it is set.
+Sets the `url` and initialize the auto updater.
### `autoUpdater.checkForUpdates()`
'atom/common/native_mate_converters/net_converter.cc',
'atom/common/native_mate_converters/net_converter.h',
'atom/common/native_mate_converters/string16_converter.h',
+ 'atom/common/native_mate_converters/string_map_converter.h',
'atom/common/native_mate_converters/ui_base_types_converter.h',
'atom/common/native_mate_converters/v8_value_converter.cc',
'atom/common/native_mate_converters/v8_value_converter.h',
Object.setPrototypeOf(autoUpdater, EventEmitter.prototype)
+autoUpdater.setFeedURL = function (url, headers) {
+ return autoUpdater._setFeedURL(url, headers || {})
+}
+
module.exports = autoUpdater
return app.quit()
}
-AutoUpdater.prototype.setFeedURL = function (updateURL) {
+AutoUpdater.prototype.setFeedURL = function (updateURL, headers) {
this.updateURL = updateURL
}