;;; sb-ffii.el --- shimbun backend for ;; Copyright (C) 2004, 2005 ;; Felix E. Klee ;; Andreas Seltenreich ;; Authors: ;; * Felix E. Klee ;; * Andreas Seltenreich (author of sb-n24-de.el ;; which was used as a base for this module) ;; Keywords: news ;; Created: Feb 09, 2005 ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with this program; see the file COPYING. If not, write to ;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Code: (require 'shimbun) (require 'sb-rss) (luna-define-class shimbun-ffii (shimbun-rss) ()) (defvar shimbun-ffii-group-alist '(("en.software-patents" . "SwpatcninoEn") ("en.software-patents.ffii" . "SwpatcninoEn-ffii") ("en.information-infrastructure" . "FfiinewsEn") ("en.project" . "FfiiprojNewsEn") ("de.software-patente" . "SwpatcninoDe") ("de.software-patente.ffii" . "SwpatcninoDe-ffii") ("de.informations-infrastruktur" . "FfiinewsDe") ("fr.brevets-logiciels" . "SwpatcninoFr") ("fr.brevets-logiciels.ffii" . "SwpatcninoFr-ffii") ("nl.softwarepatenten" . "SwpatcninoNl") ("nl.softwarepatenten.ffii" . "SwpatcninoNl-ffii"))) (defvar shimbun-ffii-server-name "FFII") (defvar shimbun-ffii-from-address "info@ffii.org") (luna-define-method shimbun-groups ((shimbun shimbun-ffii)) (mapcar 'car shimbun-ffii-group-alist)) ;; Returns a Message-ID created from the URL url and the date date. (luna-define-method shimbun-rss-build-message-id ((shimbun shimbun-ffii) url date) (let (page host datedesc) ; Sometimes URLs are broken (e.g. I've seen something like http:http://x/). ; The following expression tries to deal with cases like this. (unless (string-match "[^:]*:\\/\\/\\([^\/]+\\)\\([^@<>]*\\)" url) (error "Cannot parse URL for message-id base")) (setq host (match-string-no-properties 1 url) page (match-string-no-properties 2 url)) ; Sometimes dates are broken, therefore the following expression is very ; fault tolerant. (unless (string-match "\\([^@<>]*\\)" date) (error "Cannot parse date for message-id base")) (setq datedesc (concat (match-string-no-properties 1 date) (match-string-no-properties 2 date) (match-string-no-properties 3 date) (match-string-no-properties 4 date) (match-string-no-properties 5 date))) (format "<%s%%%s@%s>" datedesc page host))) (luna-define-method shimbun-index-url ((shimbun shimbun-ffii)) (concat "http://www.ffii.org/news/rss/" (cdr (assoc (shimbun-current-group-internal shimbun) shimbun-ffii-group-alist)) ".rss")) ;; Provides a dummy date string if date information is lacking. (luna-define-method shimbun-rss-process-date :around ((shimbun shimbun-ffii) date) (if (stringp date) (luna-call-next-method) (let ((time (decode-time))) (shimbun-make-date-string (nth 5 time) (nth 1 time) (nth 3 time))))) (provide 'sb-ffii) ;;; sb-ffii.el ends here