aboutsummaryrefslogtreecommitdiff
path: root/Src/playlist/util.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Src/playlist/util.cpp')
-rw-r--r--Src/playlist/util.cpp77
1 files changed, 77 insertions, 0 deletions
diff --git a/Src/playlist/util.cpp b/Src/playlist/util.cpp
new file mode 100644
index 00000000..debd3be0
--- /dev/null
+++ b/Src/playlist/util.cpp
@@ -0,0 +1,77 @@
+#include <shlobj.h>
+#include <strsafe.h>
+
+#include "main.h"
+#include "api__playlist.h"
+#include "../nu/ns_wc.h"
+
+HRESULT ResolveShortCut(HWND hwnd, LPCWSTR pszShortcutFile, LPWSTR pszPath)
+{
+ IShellLinkW *psl = 0;
+ WIN32_FIND_DATAW wfd = {0};
+
+ *pszPath = 0; // assume failure
+
+ HRESULT hres = CoCreateInstance( CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLinkW, (void **)&psl );
+ if ( SUCCEEDED( hres ) )
+ {
+ IPersistFile *ppf = 0;
+ hres = psl->QueryInterface( &ppf ); // OLE 2! Yay! --YO
+ if ( SUCCEEDED( hres ) )
+ {
+ hres = ppf->Load( pszShortcutFile, STGM_READ );
+ if ( SUCCEEDED( hres ) )
+ {
+ hres = psl->Resolve( hwnd, SLR_ANY_MATCH );
+ if ( SUCCEEDED( hres ) )
+ {
+ wchar_t szGotPath[ MAX_PATH ] = { 0 };
+ StringCchCopyW( szGotPath, MAX_PATH, pszShortcutFile );
+ hres = psl->GetPath( szGotPath, MAX_PATH, &wfd, SLGP_SHORTPATH );
+ StringCchCopyW( pszPath, MAX_PATH, szGotPath );
+ }
+ }
+
+ ppf->Release();
+ }
+
+ psl->Release();
+ }
+
+ return SUCCEEDED(hres);
+}
+
+bool IsUrl(const wchar_t *url)
+{
+ return !!wcsstr(url, L"://");
+}
+
+void SetUserAgent(api_httpreceiver *http)
+{
+ char agent[256] = {0};
+ StringCchPrintfA(agent, 256, "User-Agent: %S/%S", WASABI_API_APP->main_getAppName(), WASABI_API_APP->main_getVersionNumString());
+ http->addheader(agent);
+}
+
+const char *GetProxy()
+{
+ static char proxy[ 256 ] = "";
+ // {C0A565DC-0CFE-405a-A27C-468B0C8A3A5C}
+ const GUID internetConfigGroupGUID =
+ { 0xc0a565dc, 0xcfe, 0x405a, { 0xa2, 0x7c, 0x46, 0x8b, 0xc, 0x8a, 0x3a, 0x5c } };
+ ifc_configgroup *group = AGAVE_API_CONFIG->GetGroup( internetConfigGroupGUID );
+ if ( group )
+ {
+ ifc_configitem *item = group->GetItem( L"Proxy" );
+ if ( item )
+ {
+ const wchar_t *wideProxy = item->GetString();
+ if ( wideProxy )
+ {
+ WideCharToMultiByteSZ( CP_ACP, 0, wideProxy, -1, proxy, 256, 0, 0 );
+ }
+ }
+ }
+
+ return proxy;
+} \ No newline at end of file