Revision: 11504
          http://bibdesk.svn.sourceforge.net/bibdesk/?rev=11504&view=rev
Author:   amaxwell
Date:     2007-11-09 09:34:57 -0800 (Fri, 09 Nov 2007)

Log Message:
-----------
Use NSURLConnection to download from Google Scholar, and read the encoding name 
from the response so we know exactly what's going on.

Modified Paths:
--------------
    trunk/bibdesk/BDSKGoogleScholarParser.m

Modified: trunk/bibdesk/BDSKGoogleScholarParser.m
===================================================================
--- trunk/bibdesk/BDSKGoogleScholarParser.m     2007-11-09 17:07:51 UTC (rev 
11503)
+++ trunk/bibdesk/BDSKGoogleScholarParser.m     2007-11-09 17:34:57 UTC (rev 
11504)
@@ -74,6 +74,8 @@
 
     NSArray *BibTeXLinkNodes = [[xmlDocument rootElement] 
nodesForXPath:BibTexLinkNodePath
                                                     error:&error];
+    
+    
         
     unsigned int i;
     for(i=0; i < [BibTeXLinkNodes count]; i++){
@@ -85,9 +87,32 @@
         
         NSURL *btURL = [NSURL URLWithString:[NSString 
stringWithFormat:@"http://[EMAIL PROTECTED]@", [url host], hrefValue]];
         
-        NSString *bibTeXString = [NSString stringWithContentsOfURL:btURL 
-                                                          
encoding:NSUTF8StringEncoding
-                                                             error:&error];
+        NSURLRequest *request = [NSURLRequest requestWithURL:btURL];
+        NSURLResponse *response;
+        
+        NSData *theData = [NSURLConnection sendSynchronousRequest:request 
returningResponse:&response error:&error];   
+        NSString *bibTeXString = nil;
+        
+        // google actually provides this information; on my system it returns 
"macintosh" which gets converted to NSMacOSRomanStringEncoding
+        if (nil != theData) {
+            
+            NSString *encodingName = [response textEncodingName];
+            NSStringEncoding encoding = kCFStringEncodingInvalidId;
+            
+            if (nil != encodingName)
+                encoding = 
CFStringConvertEncodingToNSStringEncoding(CFStringConvertIANACharSetNameToEncoding((CFStringRef)encodingName));
+
+            if (encoding != kCFStringEncodingInvalidId)
+                bibTeXString = [[NSString alloc] initWithData:theData 
encoding:encoding];
+            else
+                bibTeXString = [[NSString alloc] initWithData:theData 
encoding:NSUTF8StringEncoding];
+            
+            if (nil == bibTeXString)
+                bibTeXString = [[NSString alloc] initWithData:theData 
encoding:NSISOLatin1StringEncoding];
+            
+            [bibTeXString autorelease];
+        }
+
         BOOL isPartialData = NO;
         NSArray* bibtexItems = nil;
         


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit

Reply via email to