freshmeat 1.1.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.0
1
+ 1.1.1
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{freshmeat}
8
- s.version = "1.1.0"
8
+ s.version = "1.1.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Matthew Stump"]
12
- s.date = %q{2011-05-04}
12
+ s.date = %q{2011-07-11}
13
13
  s.description = %q{A simple wrapper around the Freshmeat.net API}
14
14
  s.email = %q{mstump@matthewstump.com}
15
15
  s.extra_rdoc_files = [
@@ -29,6 +29,7 @@ Gem::Specification.new do |s|
29
29
  "spec/fixtures/comments.json",
30
30
  "spec/fixtures/dependencies.json",
31
31
  "spec/fixtures/localhost.json",
32
+ "spec/fixtures/overlimit.json",
32
33
  "spec/fixtures/recently_released.json",
33
34
  "spec/fixtures/releases.json",
34
35
  "spec/fixtures/samba.json",
@@ -18,10 +18,13 @@
18
18
  =end
19
19
 
20
20
  require 'rubygems'
21
+ require 'net/http'
21
22
  require 'httparty'
22
23
  require 'time'
23
24
  require File.dirname(__FILE__) + '/freshmeat/data'
24
25
 
26
+ class FreshmeatAPICreditsExceeded < RuntimeError; end
27
+
25
28
  # Simple wrapper around the Freshmeat.net data and frontpage API. For
26
29
  # detailed information about the attributes of each datatype please
27
30
  # see the Freshmeat.net API documentation.
@@ -102,7 +105,19 @@ class Freshmeat
102
105
  private
103
106
 
104
107
  def get(url, args={})
105
- self.class.get(url, :query => args.merge({:auth_code => @auth_code}), :format => :json)
108
+ response = self.class.get(url, :query => args.merge({:auth_code => @auth_code}), :format => :json)
109
+ case response.code
110
+ when 200
111
+ return response
112
+ when 503
113
+ if response["status"]
114
+ raise FreshmeatAPICreditsExceeded.new(response["status"])
115
+ else
116
+ response.error!
117
+ end
118
+ else
119
+ response.error!
120
+ end
106
121
  end
107
122
 
108
123
  end
@@ -0,0 +1 @@
1
+ {"status":"Your API credits have been exceeded. Please try again later."}
@@ -1 +1,87 @@
1
- {"project":{"programming_language_list":[],"permalink":"samba","name":"Samba","popularity":1882.72,"created_at":"1998-01-11T21:00:52Z","user":{"url":"","id":474638,"display_name":null,"login":"kseeger"},"translation_list":[],"updated_at":"2011-03-07T09:02:22Z","recent_releases":[{"changelog":"A Winbind crash bug when no DC is available was fixed. Finding users on domain members was fixed. Memory leaks in Winbind were fixed. Printing with Windows 7 clients was fixed.","id":329114,"tag_list":["v3-5-x","Bugfixes"],"version":"3.5.8","approved_at":"2011-03-07T09:02:22Z"},{"changelog":"This is a security release in order to address CVE-2011-0719, which is a denial of service involving memory corruption.","id":328864,"tag_list":["v3-5-x","Security Release"],"version":"3.5.7","approved_at":"2011-02-28T14:21:03Z"},{"changelog":"This is a security release in order to address CVE-2011-0719, which is a denial of service involving memory corruption.","id":328863,"tag_list":["v3-4-x","Security Release"],"version":"3.4.12","approved_at":"2011-02-28T14:21:03Z"},{"changelog":"This is a security release in order to address CVE-2011-0719, which is a denial of service involving memory corruption.","id":328860,"tag_list":["v3-3-x","Security Release"],"version":"3.3.15","approved_at":"2011-02-28T14:21:03Z"},{"changelog":"This release fixes connecting to port-139-only servers (bug 7881).","id":327381,"tag_list":["Bugfixes","v3-4-x"],"version":"3.4.11","approved_at":"2011-01-24T00:54:11Z"}],"vitality":247.49,"oneliner":"Tools to access to a server's filespace and printers via SMB.","id":9228,"approved_urls":[{"permalink":"6f74f3833019b61f84d077b8196424ab","label":"Download Samba 3","host":"download.samba.org","id":33240,"redirector":"http://freshmeat.net/urls/6f74f3833019b61f84d077b8196424ab"},{"permalink":"ea069a852b78f9ce70d97ae3f0b1d9e5","label":"Download Samba 4","host":"download.samba.org","id":35181,"redirector":"http://freshmeat.net/urls/ea069a852b78f9ce70d97ae3f0b1d9e5"},{"permalink":"cccf52ab1c352d275d4083722655de06","label":"Bug Tracker","host":"bugzilla.samba.org","id":59090,"redirector":"http://freshmeat.net/urls/cccf52ab1c352d275d4083722655de06"},{"permalink":"990b4650a5a0daf3905ae2c00b691d48","label":"Website","host":"samba.org","id":94324,"redirector":"http://freshmeat.net/urls/990b4650a5a0daf3905ae2c00b691d48"},{"permalink":"e6ea6525ede0121c435528981a53f443","label":"GIT repository","host":"git.samba.org","id":125798,"redirector":"http://freshmeat.net/urls/e6ea6525ede0121c435528981a53f443"},{"permalink":"71993d553bc8976f37ab23668698f5d5","label":"Wiki","host":"wiki.samba.org","id":134652,"redirector":"http://freshmeat.net/urls/71993d553bc8976f37ab23668698f5d5"}],"direct_download":{"permalink":"6f74f3833019b61f84d077b8196424ab","label":"Download Samba 3","host":"download.samba.org","id":33240,"redirector":"http://freshmeat.net/urls/6f74f3833019b61f84d077b8196424ab"},"project_filters_count":177,"tag_list":["Communications","File Sharing"],"approved_screenshots":[],"subscriptions_count":759,"license_list":["GPLv3"],"description":"Samba is a software suite that provides seamless file and print services to SMB/CIFS clients. It is freely available, unlike other SMB/CIFS implementations, and allows for interoperability between Linux/Unix servers and Windows-based clients.","vote_score":63,"operating_system_list":[]}}
1
+ {"project":
2
+ {"programming_language_list":[],
3
+ "permalink":"samba",
4
+ "name":"Samba",
5
+ "popularity":1882.72,
6
+ "created_at":"1998-01-11T21:00:52Z",
7
+ "user":
8
+ {"url":"",
9
+ "id":474638,
10
+ "display_name":null,
11
+ "login":"kseeger"},
12
+ "translation_list":[],
13
+ "updated_at":"2011-03-07T09:02:22Z",
14
+ "recent_releases":[
15
+ {"changelog":"A Winbind crash bug when no DC is available was fixed. Finding users on domain members was fixed. Memory leaks in Winbind were fixed. Printing with Windows 7 clients was fixed.",
16
+ "id":329114,
17
+ "tag_list":["v3-5-x","Bugfixes"],
18
+ "version":"3.5.8",
19
+ "approved_at":"2011-03-07T09:02:22Z"},
20
+ {"changelog":"This is a security release in order to address CVE-2011-0719, which is a denial of service involving memory corruption.",
21
+ "id":328864,
22
+ "tag_list":["v3-5-x","Security Release"],
23
+ "version":"3.5.7",
24
+ "approved_at":"2011-02-28T14:21:03Z"},
25
+ {"changelog":"This is a security release in order to address CVE-2011-0719, which is a denial of service involving memory corruption.",
26
+ "id":328863,
27
+ "tag_list":["v3-4-x","Security Release"],
28
+ "version":"3.4.12",
29
+ "approved_at":"2011-02-28T14:21:03Z"},
30
+ {"changelog":"This is a security release in order to address CVE-2011-0719, which is a denial of service involving memory corruption.",
31
+ "id":328860,
32
+ "tag_list":["v3-3-x","Security Release"],
33
+ "version":"3.3.15",
34
+ "approved_at":"2011-02-28T14:21:03Z"},
35
+ {"changelog":"This release fixes connecting to port-139-only servers (bug 7881).",
36
+ "id":327381,
37
+ "tag_list":["Bugfixes","v3-4-x"],
38
+ "version":"3.4.11",
39
+ "approved_at":"2011-01-24T00:54:11Z"}],
40
+ "vitality":247.49,
41
+ "oneliner":"Tools to access to a server's filespace and printers via SMB.",
42
+ "id":9228,
43
+ "approved_urls":[
44
+ {"permalink":"6f74f3833019b61f84d077b8196424ab",
45
+ "label":"Download Samba 3",
46
+ "host":"download.samba.org",
47
+ "id":33240,
48
+ "redirector":"http://freshmeat.net/urls/6f74f3833019b61f84d077b8196424ab"},
49
+ {"permalink":"ea069a852b78f9ce70d97ae3f0b1d9e5",
50
+ "label":"Download Samba 4",
51
+ "host":"download.samba.org",
52
+ "id":35181,
53
+ "redirector":"http://freshmeat.net/urls/ea069a852b78f9ce70d97ae3f0b1d9e5"},
54
+ {"permalink":"cccf52ab1c352d275d4083722655de06",
55
+ "label":"Bug Tracker",
56
+ "host":"bugzilla.samba.org",
57
+ "id":59090,
58
+ "redirector":"http://freshmeat.net/urls/cccf52ab1c352d275d4083722655de06"},
59
+ {"permalink":"990b4650a5a0daf3905ae2c00b691d48",
60
+ "label":"Website",
61
+ "host":"samba.org",
62
+ "id":94324,
63
+ "redirector":"http://freshmeat.net/urls/990b4650a5a0daf3905ae2c00b691d48"},
64
+ {"permalink":"e6ea6525ede0121c435528981a53f443",
65
+ "label":"GIT repository",
66
+ "host":"git.samba.org",
67
+ "id":125798,
68
+ "redirector":"http://freshmeat.net/urls/e6ea6525ede0121c435528981a53f443"},
69
+ {"permalink":"71993d553bc8976f37ab23668698f5d5",
70
+ "label":"Wiki",
71
+ "host":"wiki.samba.org",
72
+ "id":134652,
73
+ "redirector":"http://freshmeat.net/urls/71993d553bc8976f37ab23668698f5d5"}],
74
+ "direct_download":
75
+ {"permalink":"6f74f3833019b61f84d077b8196424ab",
76
+ "label":"Download Samba 3",
77
+ "host":"download.samba.org",
78
+ "id":33240,
79
+ "redirector":"http://freshmeat.net/urls/6f74f3833019b61f84d077b8196424ab"},
80
+ "project_filters_count":177,
81
+ "tag_list":["Communications","File Sharing"],
82
+ "approved_screenshots":[],
83
+ "subscriptions_count":759,
84
+ "license_list":["GPLv3"],
85
+ "description":"Samba is a software suite that provides seamless file and print services to SMB/CIFS clients. It is freely available, unlike other SMB/CIFS implementations, and allows for interoperability between Linux/Unix servers and Windows-based clients.",
86
+ "vote_score":63,
87
+ "operating_system_list":[]}}
@@ -1 +1,603 @@
1
- {"projects":[{"project":{"programming_language_list":[],"permalink":"footools","name":"foo-tools","popularity":17.66,"created_at":"2003-01-22T07:17:04Z","user":{"url":null,"id":26089,"display_name":"flower","login":"flower"},"translation_list":[],"updated_at":"2003-01-22T17:55:05Z","recent_releases":[{"changelog":"","id":110379,"tag_list":["Initial freshmeat announcement"],"version":"2003-01-22","approved_at":"2003-01-22T17:55:05Z"}],"vitality":1.0,"oneliner":"A collection of useful tools for users of glftpd.","id":34385,"approved_urls":[{"permalink":"38c129e463d80e61a7dbfd69780becb2","label":"Website","host":"tanesha.net","id":98286,"redirector":"http://freshmeat.net/urls/38c129e463d80e61a7dbfd69780becb2"}],"project_filters_count":56,"tag_list":["Internet","FTP"],"approved_screenshots":[],"subscriptions_count":1,"license_list":["GPL"],"description":"foo-tools is a collection of useful tools for\r\nusers of glftpd. It contains, among other things,\r\nan entry bouncer, alternative gl_spy\r\nimplemetations, and tools for post-processing\r\nuploads. ","vote_score":0,"operating_system_list":[]}},{"project":{"programming_language_list":["C"],"permalink":"maildirpop3d","name":"maildirpop3d","popularity":14.18,"created_at":"2002-07-03T20:51:48Z","user":{"url":null,"id":134786,"display_name":"Tom Clegg","login":"tomclegg"},"translation_list":[],"updated_at":"2004-06-19T04:00:25Z","recent_releases":[{"changelog":"The path is now searched for the qmail-pop3d program if the full path is not supplied.","id":164384,"tag_list":["Minor bugfixes"],"version":"0.2","approved_at":"2004-06-19T04:00:25Z"},{"changelog":"","id":89734,"tag_list":["Initial freshmeat announcement"],"version":"0.1","approved_at":"2002-07-04T02:08:52Z"}],"vitality":1.61,"oneliner":"A Qmail extension supporting multiple POP mailboxes for a single shell account.","id":29385,"approved_urls":[{"permalink":"215f6ae5fd02351b04bee21ccd47c02f","label":"Tar/GZ","host":"tomclegg.net","id":16412,"redirector":"http://freshmeat.net/urls/215f6ae5fd02351b04bee21ccd47c02f"},{"permalink":"215144247bd4c9c621cb07b2ba7d6fed","label":"Website","host":"tomclegg.net","id":95755,"redirector":"http://freshmeat.net/urls/215144247bd4c9c621cb07b2ba7d6fed"}],"direct_download":{"permalink":"215f6ae5fd02351b04bee21ccd47c02f","label":"Tar/GZ","host":"tomclegg.net","id":16412,"redirector":"http://freshmeat.net/urls/215f6ae5fd02351b04bee21ccd47c02f"},"project_filters_count":99,"tag_list":["Communications","Email","Post-Office","POP3"],"approved_screenshots":[],"subscriptions_count":2,"license_list":["GPL"],"description":"maildirpop3d offers multiple POP mailboxes (with\r\ndistinct passwords) controlled by a single shell\r\naccount. It is a checkpassword replacement, and\r\nsits between qmail-popup and qmail-pop3d. If it\r\nsees a username like \"joe-foo\", and \r\n~joe/Maildir-foo is a directory, it invokes\r\nqmail-pop3d (as joe) on ~joe/Maildir-foo.\r\nmaildirpasswd (included) is then invoked by joe to\r\nset the password for the joe-foo mailbox. The\r\npassword is then encrypted and stored. ","vote_score":0,"operating_system_list":["Unix"]}},{"project":{"programming_language_list":["Perl"],"permalink":"module-format","name":"Module-Format","popularity":24.86,"created_at":"2010-11-28T17:02:42Z","user":{"url":"http://www.shlomifish.org/","id":46596,"display_name":"Shlomi Fish","login":"shlomif"},"translation_list":[],"updated_at":"2010-12-03T06:43:58Z","recent_releases":[{"changelog":"A bug was fixed with guessing the \"unix\" format (e.g: \"Foo/Bar/Baz.pm\"). Keywords and resources were added to the META.yml.","id":325302,"tag_list":["Beta","CPAN"],"version":"0.0.3","approved_at":"2010-12-03T06:43:58Z"},{"changelog":"Initial freshmeat and CPAN release.","id":325104,"tag_list":["Beta"],"version":"0.0.1","approved_at":"2010-11-28T19:42:34Z"}],"vitality":1.44,"oneliner":"Convert and manipulate strings representing Perl modules and CPAN distributions.","id":79616,"approved_urls":[{"permalink":"d2c4b3939d2b47c76a90aba9a76a8b79","label":"Homepage","host":"shlomifish.org","id":149120,"redirector":"http://freshmeat.net/urls/d2c4b3939d2b47c76a90aba9a76a8b79"},{"permalink":"2c07e59c0114ac74c84a990149d96d6a","label":"Download","host":"search.cpan.org","id":149121,"redirector":"http://freshmeat.net/urls/2c07e59c0114ac74c84a990149d96d6a"},{"permalink":"30677112d83d5689fdc4704a619c5bed","label":"Version Control","host":"bitbucket.org","id":149122,"redirector":"http://freshmeat.net/urls/30677112d83d5689fdc4704a619c5bed"}],"direct_download":{"permalink":"2c07e59c0114ac74c84a990149d96d6a","label":"Download","host":"search.cpan.org","id":149121,"redirector":"http://freshmeat.net/urls/2c07e59c0114ac74c84a990149d96d6a"},"project_filters_count":29,"tag_list":["Utility","Perl","Module","CPAN"],"approved_screenshots":[],"subscriptions_count":0,"license_list":["MIT/X"],"description":"Perl modules are notated in many different formats: \"Foo/Bar/Baz.pm\", \"Foo::Bar\", \"Foo-Bar\", etc. Module-Format allows one to take a list of modules in any format (including mixed ones) and output it in a consistent format that can be input to an installation program or an information querier.","vote_score":0,"operating_system_list":["POSIX","Linux","Mac OS X","Windows (32 and 64bit)","Windows"]}},{"project":{"programming_language_list":["Python"],"permalink":"portell","name":"portell","popularity":23.66,"created_at":"2002-12-31T05:41:56Z","user":{"url":"http://rkulla.com","id":98532,"display_name":"gt3","login":"gt3"},"translation_list":[],"updated_at":"2004-10-30T08:38:44Z","recent_releases":[{"changelog":"This release runs under BSD systems other than FreeBSD and autocreates\r\nthe database.\r\n","id":177365,"tag_list":["Major feature enhancements"],"version":"0.2","approved_at":"2004-10-30T08:38:44Z"},{"changelog":"","id":108004,"tag_list":["Initial freshmeat announcement"],"version":"0.1","approved_at":"2002-12-31T10:35:41Z"}],"vitality":1.6,"oneliner":"A BSD package description finder/viewer.","id":33815,"approved_urls":[{"permalink":"094867b3c0cbd80ec28e2b2423c25f19","label":"Zip","host":"prdownloads.sourceforge.net","id":53609,"redirector":"http://freshmeat.net/urls/094867b3c0cbd80ec28e2b2423c25f19"},{"permalink":"ef008e8027f9c47ea0d4d09a08c9d9c4","label":"Website","host":"portell.sf.net","id":97977,"redirector":"http://freshmeat.net/urls/ef008e8027f9c47ea0d4d09a08c9d9c4"}],"direct_download":{"permalink":"094867b3c0cbd80ec28e2b2423c25f19","label":"Zip","host":"prdownloads.sourceforge.net","id":53609,"redirector":"http://freshmeat.net/urls/094867b3c0cbd80ec28e2b2423c25f19"},"project_filters_count":106,"tag_list":[],"approved_screenshots":[],"subscriptions_count":4,"license_list":["BSD Original"],"description":"portell is a program that allows BSD users to\r\nview the description as given in its pkg-descr or pkg/DESCR file for a specific package. If you want to know what the program \"foo\" is, then you can type \"portell foo\" from any directory, and portell will instantly dump its description file to your display.","vote_score":0,"operating_system_list":["POSIX","BSD","FreeBSD"]}},{"project":{"programming_language_list":["Unix Shell"],"permalink":"pwdrc","name":"Pwdrc","popularity":15.87,"created_at":"2005-12-21T11:05:34Z","user":{"url":null,"id":242323,"display_name":"Alpt","login":"Alpt"},"translation_list":[],"updated_at":"2006-05-27T23:32:38Z","recent_releases":[{"changelog":"recurse_pwdrc() has been added in the set of\r\ndefinable functions, and it is called each time\r\nthe user walks into a sub-directory. The\r\n\"todo_remider\" cookbook has been improved. It\r\ndoesn't conflict anymore if used in multiple\r\ndirectories, and it supports the shuffling of the\r\noutput to increase the user's attention.\r\n","id":228209,"tag_list":["Major feature enhancements"],"version":"0.0.3","approved_at":"2006-05-27T23:32:38Z"},{"changelog":"New cookbooks has been added. \"automount\" automounts a /mnt directory\r\nwithout autofs. \"cvsroot\" sets your CVS environment variables.\r\n\"gqview_imgdir\" opens gqview when you enter an image directory.\r\n\"todo_reminder\" prints a TODO file. \"newmail_mutt_Z\" opens mutt if new\r\nmessages have arrived.\r\n","id":215319,"tag_list":["Major feature enhancements"],"version":"0.0.2","approved_at":"2005-12-23T09:51:58Z"}],"vitality":1.48,"oneliner":"Executes a set of commands when you walk in a directory with \"cd\".","id":57882,"approved_urls":[{"permalink":"c2cc9c82e47c749843b38b4c53a5cfd0","label":"Changelog","host":"freaknet.org","id":49216,"redirector":"http://freshmeat.net/urls/c2cc9c82e47c749843b38b4c53a5cfd0"},{"permalink":"47ac9feaae8b2f31f2f0da28690a7a08","label":"Tar/BZ2","host":"freaknet.org","id":77444,"redirector":"http://freshmeat.net/urls/47ac9feaae8b2f31f2f0da28690a7a08"},{"permalink":"e24b35862584add7bd2793e14042c1bb","label":"Website","host":"freaknet.org","id":112687,"redirector":"http://freshmeat.net/urls/e24b35862584add7bd2793e14042c1bb"},{"permalink":"3a810a76389fa0610346158629c77105","label":"CVS tree","host":"dev.hinezumi.org","id":129314,"redirector":"http://freshmeat.net/urls/3a810a76389fa0610346158629c77105"}],"direct_download":{"permalink":"47ac9feaae8b2f31f2f0da28690a7a08","label":"Tar/BZ2","host":"freaknet.org","id":77444,"redirector":"http://freshmeat.net/urls/47ac9feaae8b2f31f2f0da28690a7a08"},"project_filters_count":73,"tag_list":["Utilities"],"approved_screenshots":[],"subscriptions_count":3,"license_list":["GPL"],"description":"Pwdrc executes a set of commands each time you\r\nwalk in a directory with \"cd\". You can associate a\r\ndifferent set of commands to each directory. Each\r\ntime you walk in a directory the file\r\n.`whoami`_pwdrc is read and executed (if it\r\nexists), thus if your user name is \"foo\", your\r\npwdrc file is \".foo_pwdrc\". ","vote_score":0,"operating_system_list":["POSIX"]}},{"project":{"programming_language_list":["C"],"permalink":"petopt","name":"petopt","popularity":12.45,"created_at":"1999-02-01T17:09:34Z","user":{"url":null,"id":26471,"display_name":"Peter Eriksson","login":"pen"},"translation_list":[],"updated_at":"2001-01-30T06:13:36Z","recent_releases":[{"changelog":"This release adds boolean variables (--with(out)-X and --(dis)enable-X).","id":25454,"tag_list":[],"version":"0.7","approved_at":"2001-01-30T06:13:36Z"}],"vitality":1.06,"oneliner":"C command line argument parsing library","id":7814,"approved_urls":[{"permalink":"6892c6d92378f2d190e0f615586976c9","label":"Tar/GZ","host":"ftp.lysator.liu.se","id":4752,"redirector":"http://freshmeat.net/urls/6892c6d92378f2d190e0f615586976c9"},{"permalink":"2c77031833510963175409a48ef97a60","label":"Website","host":"lysator.liu.se","id":87266,"redirector":"http://freshmeat.net/urls/2c77031833510963175409a48ef97a60"}],"direct_download":{"permalink":"6892c6d92378f2d190e0f615586976c9","label":"Tar/GZ","host":"ftp.lysator.liu.se","id":4752,"redirector":"http://freshmeat.net/urls/6892c6d92378f2d190e0f615586976c9"},"project_filters_count":1,"tag_list":["Software Development","Libraries"],"approved_screenshots":[],"subscriptions_count":0,"license_list":["Freeware"],"description":"Petopt is a free command line argument parsing library that handles short (-v) and long (--foo-bar) options. It supports abbreviated long options and should be pretty easy to use.","vote_score":0,"operating_system_list":["OS Independent"]}},{"project":{"programming_language_list":[],"permalink":"dup-label","name":"dup-label","popularity":7.07,"created_at":"2005-04-07T22:04:30Z","user":{"url":null,"id":35047,"display_name":"Dan Stromberg","login":"strombrg"},"translation_list":[],"updated_at":"2006-08-18T17:27:28Z","recent_releases":[],"vitality":46.57,"oneliner":"A tool that duplicates a Sun Solaris disk label.","id":53531,"approved_urls":[{"permalink":"962e48c625f26af9f8713af356fdaa47","label":"Website","host":"stromberg.dnsalias.org","id":109378,"redirector":"http://freshmeat.net/urls/962e48c625f26af9f8713af356fdaa47"}],"project_filters_count":9,"tag_list":[],"approved_screenshots":[],"subscriptions_count":1,"license_list":[],"description":"dup-label copies a label from one disk on a Solaris system to \r\nanother, but if the source disk's ASCII label was \"foo\" and \r\nthe destination disk's ASCII label was \"bar\", then dup-label \r\nwill duplicate partitioning, but also produce an ASCII label of \r\n\"foo, was: bar\". This may prove less puzzling than current \r\nother offerings to future \r\nadmins, when they otherwise would find that a disk that has \r\nSeagate written on the outside, says Maxtor in sun format. ","vote_score":0,"operating_system_list":[]}},{"project":{"programming_language_list":[],"permalink":"libfssearch","name":"libfssearch","popularity":6.71,"created_at":"2001-05-31T18:53:17Z","user":{"url":null,"id":61030,"display_name":"e.sammer","login":"esammer"},"translation_list":[],"updated_at":"2001-06-01T10:24:57Z","recent_releases":[{"changelog":"New methods were added, overall speed was improved, minor bugs were fixed, the\r\ndocumentation was updated, and other improvements were made.\r\n","id":49395,"tag_list":["Stable","Major feature enhancements"],"version":"0.03","approved_at":"2001-06-01T10:24:57Z"}],"vitality":1.0,"oneliner":"A file system traversal library with callback functionality.","id":15058,"approved_urls":[{"permalink":"fc7d7111da45e08f891dcb9e3fc8ef58","label":"Tar/GZ","host":"sourceforge.net","id":7942,"redirector":"http://freshmeat.net/urls/fc7d7111da45e08f891dcb9e3fc8ef58"},{"permalink":"c76116e6bf0e1498ab4d32c74cf54054","label":"Website","host":"libfssearch.sourceforge.net","id":90916,"redirector":"http://freshmeat.net/urls/c76116e6bf0e1498ab4d32c74cf54054"}],"direct_download":{"permalink":"fc7d7111da45e08f891dcb9e3fc8ef58","label":"Tar/GZ","host":"sourceforge.net","id":7942,"redirector":"http://freshmeat.net/urls/fc7d7111da45e08f891dcb9e3fc8ef58"},"project_filters_count":2,"tag_list":[],"approved_screenshots":[],"subscriptions_count":0,"license_list":["GPL"],"description":"libfssearch is a C++ library that provides file and directory traversal\r\nfunctionality. Given a base directory, it will traverse the tree rooted at that\r\ndirectory in depth-first order, invoking a callback function for each file or\r\ndirectory found. It is basically a C++ version of the Unix command, \"find -exec\r\nfoo\". It has been tested on Solaris and Linux.\r\n","vote_score":0,"operating_system_list":[]}},{"project":{"programming_language_list":["Ruby"],"permalink":"glark","name":"glark","popularity":95.97,"created_at":"2002-04-09T09:29:40Z","user":{"url":null,"id":96613,"display_name":"Jeff Pace","login":"JEugenePace"},"translation_list":[],"updated_at":"2007-02-10T14:08:46Z","recent_releases":[{"changelog":"Short option names (e.g., --inv instead of\r\n--invert-match) are now supported. A significant\r\namount of code was rewritten for better execution\r\nspeed.\r\n","id":247070,"tag_list":["Minor feature enhancements"],"version":"1.8.0","approved_at":"2007-02-10T14:08:46Z"},{"changelog":"Support was added for --with-fullname,\r\n--without-fullname, --with-basename, and\r\n--without-basename, which limit the files to be\r\nsearched to those with full and base names\r\nmatching the regular expression given. A bug with\r\n--after and --before taking non-percentage\r\narguments was fixed.\r\n","id":235885,"tag_list":["Minor feature enhancements"],"version":"1.7.10","approved_at":"2006-09-08T04:48:16Z"},{"changelog":"A bug was fixed with the --and option, which was\r\npreviously getting the closest paired match, not\r\nthe farthest one within the maximum distance.\r\nTests were added, and significant refactoring was\r\ndone.\r\n","id":225799,"tag_list":["Minor bugfixes"],"version":"1.7.9","approved_at":"2006-04-25T08:51:11Z"},{"changelog":"A bug in the --invert-match (-v) option was fixed.\r\nA check for recursive cycles caused by links was\r\nadded.\r\n","id":223150,"tag_list":["Minor bugfixes"],"version":"1.7.8","approved_at":"2006-03-23T07:39:48Z"},{"changelog":"The --label option has been fixed to take any string, instead of just one word. Warning output for unknown options has been fixed.","id":221345,"tag_list":["Minor bugfixes"],"version":"1.7.7","approved_at":"2006-03-03T11:02:30Z"}],"vitality":7.53,"oneliner":"A grep-like tool for searching text files.","id":27104,"approved_urls":[{"permalink":"cfd52ab0ddae91911aebb6d70c76ef8f","label":"Tar/GZ","host":"incava.org","id":15368,"redirector":"http://freshmeat.net/urls/cfd52ab0ddae91911aebb6d70c76ef8f"},{"permalink":"98b299b3c1629e10c4b8b02293903649","label":"RPM Package","host":"incava.org","id":64708,"redirector":"http://freshmeat.net/urls/98b299b3c1629e10c4b8b02293903649"},{"permalink":"2e9253a3b1b1fc8177957b32b1013dc8","label":"Website","host":"incava.org","id":94635,"redirector":"http://freshmeat.net/urls/2e9253a3b1b1fc8177957b32b1013dc8"}],"direct_download":{"permalink":"cfd52ab0ddae91911aebb6d70c76ef8f","label":"Tar/GZ","host":"incava.org","id":15368,"redirector":"http://freshmeat.net/urls/cfd52ab0ddae91911aebb6d70c76ef8f"},"project_filters_count":224,"tag_list":["Text Processing","Filters","Utilities","General"],"approved_screenshots":[{"created_at":"2009-03-14T16:55:08Z","title":null,"id":7423,"absolute_url":"http://freshmeat.net/screenshots/ab/83/ab83ca89494ed8a91d3eada8ce351484_thumb.png?1237049708"}],"subscriptions_count":60,"license_list":["LGPL"],"description":"glark offers grep-like searching of text files, with very powerful, complex regular expressions (e.g., \"/foo\\w+/ and /bar[^\\d]*baz$/ within 4 lines of each other\"). It also highlights the matches, displays context (preceding and succeeding lines), does case-insensitive matches, and automatic exclusion of non-text files. It supports most options from the GNU version of grep. ","vote_score":5,"operating_system_list":["OS Independent"]}},{"project":{"programming_language_list":["Perl"],"permalink":"pcjbot","name":"PCJBot","popularity":28.35,"created_at":"2005-01-27T08:21:41Z","user":{"url":null,"id":44385,"display_name":"Satya","login":"satyap"},"translation_list":[],"updated_at":"2005-03-18T10:38:02Z","recent_releases":[{"changelog":"Everything has been POE-ised, and there are new plugins.","id":190966,"tag_list":["Major feature enhancements"],"version":"0.5","approved_at":"2005-03-18T10:38:02Z"},{"changelog":"The math module now handles decimals. Caching in the weather module was fixed.","id":187373,"tag_list":["Minor bugfixes"],"version":"0.3","approved_at":"2005-02-10T00:13:07Z"},{"changelog":"Better documentation, caching weather, minimum cycle time for cron, cron improvements, and automatically creates the database if required.\r\n","id":186505,"tag_list":["Minor feature enhancements"],"version":"0.2","approved_at":"2005-02-01T14:46:36Z"},{"changelog":"","id":185987,"tag_list":["Initial freshmeat announcement"],"version":"0.1","approved_at":"2005-01-27T12:08:07Z"}],"vitality":2.02,"oneliner":"A Jabber conference bot written in Perl with PCJ.","id":52212,"approved_urls":[{"permalink":"25fdbb53f6f92fe05dc43d859a6b9d04","label":"Tar/GZ","host":"sourceforge.net","id":25494,"redirector":"http://freshmeat.net/urls/25fdbb53f6f92fe05dc43d859a6b9d04"},{"permalink":"74d4ee030068b02bfc660e398198dfd4","label":"Bug Tracker","host":"sourceforge.net","id":60037,"redirector":"http://freshmeat.net/urls/74d4ee030068b02bfc660e398198dfd4"},{"permalink":"eea6452dea326af046078af31d1d06d7","label":"Website","host":"pcjbot.sf.net","id":108418,"redirector":"http://freshmeat.net/urls/eea6452dea326af046078af31d1d06d7"},{"permalink":"f7e43d83bc63c7aae8497abfcc15773c","label":"CVS tree","host":"pcjbot.cvs.sourceforge.net","id":128526,"redirector":"http://freshmeat.net/urls/f7e43d83bc63c7aae8497abfcc15773c"}],"direct_download":{"permalink":"25fdbb53f6f92fe05dc43d859a6b9d04","label":"Tar/GZ","host":"sourceforge.net","id":25494,"redirector":"http://freshmeat.net/urls/25fdbb53f6f92fe05dc43d859a6b9d04"},"project_filters_count":133,"tag_list":["Communications","Chat","Conferencing"],"approved_screenshots":[],"subscriptions_count":5,"license_list":["GPL"],"description":"PCJBot is a Jabber bot written in Perl with PCJ.\r\nIt can do various things on a Jabber chat channel.\r\nIt remembers \"foo is bar\" facts and does other\r\nthings with plugins. Plugins include Bloglines,\r\nCron, DNS, Weather, Math, Spellcheck, Seen, and URL.","vote_score":0,"operating_system_list":["OS Independent"]}}]}
1
+ { "projects" : [ { "project" : { "approved_screenshots" : [ ],
2
+ "approved_urls" : [ { "host" : "tanesha.net",
3
+ "id" : 98286,
4
+ "label" : "Website",
5
+ "permalink" : "38c129e463d80e61a7dbfd69780becb2",
6
+ "redirector" : "http://freshmeat.net/urls/38c129e463d80e61a7dbfd69780becb2"
7
+ } ],
8
+ "created_at" : "2003-01-22T07:17:04Z",
9
+ "description" : "foo-tools is a collection of useful tools for\r\nusers of glftpd. It contains, among other things,\r\nan entry bouncer, alternative gl_spy\r\nimplemetations, and tools for post-processing\r\nuploads. ",
10
+ "id" : 34385,
11
+ "license_list" : [ "GPL" ],
12
+ "name" : "foo-tools",
13
+ "oneliner" : "A collection of useful tools for users of glftpd.",
14
+ "operating_system_list" : [ ],
15
+ "permalink" : "footools",
16
+ "popularity" : 17.66,
17
+ "programming_language_list" : [ ],
18
+ "project_filters_count" : 56,
19
+ "recent_releases" : [ { "approved_at" : "2003-01-22T17:55:05Z",
20
+ "changelog" : "",
21
+ "id" : 110379,
22
+ "tag_list" : [ "Initial freshmeat announcement" ],
23
+ "version" : "2003-01-22"
24
+ } ],
25
+ "subscriptions_count" : 1,
26
+ "tag_list" : [ "Internet",
27
+ "FTP"
28
+ ],
29
+ "translation_list" : [ ],
30
+ "updated_at" : "2003-01-22T17:55:05Z",
31
+ "user" : { "display_name" : "flower",
32
+ "id" : 26089,
33
+ "login" : "flower",
34
+ "url" : null
35
+ },
36
+ "vitality" : 1.0,
37
+ "vote_score" : 0
38
+ } },
39
+ { "project" : { "approved_screenshots" : [ ],
40
+ "approved_urls" : [ { "host" : "tomclegg.net",
41
+ "id" : 16412,
42
+ "label" : "Tar/GZ",
43
+ "permalink" : "215f6ae5fd02351b04bee21ccd47c02f",
44
+ "redirector" : "http://freshmeat.net/urls/215f6ae5fd02351b04bee21ccd47c02f"
45
+ },
46
+ { "host" : "tomclegg.net",
47
+ "id" : 95755,
48
+ "label" : "Website",
49
+ "permalink" : "215144247bd4c9c621cb07b2ba7d6fed",
50
+ "redirector" : "http://freshmeat.net/urls/215144247bd4c9c621cb07b2ba7d6fed"
51
+ }
52
+ ],
53
+ "created_at" : "2002-07-03T20:51:48Z",
54
+ "description" : "maildirpop3d offers multiple POP mailboxes (with\r\ndistinct passwords) controlled by a single shell\r\naccount. It is a checkpassword replacement, and\r\nsits between qmail-popup and qmail-pop3d. If it\r\nsees a username like \"joe-foo\", and \r\n~joe/Maildir-foo is a directory, it invokes\r\nqmail-pop3d (as joe) on ~joe/Maildir-foo.\r\nmaildirpasswd (included) is then invoked by joe to\r\nset the password for the joe-foo mailbox. The\r\npassword is then encrypted and stored. ",
55
+ "direct_download" : { "host" : "tomclegg.net",
56
+ "id" : 16412,
57
+ "label" : "Tar/GZ",
58
+ "permalink" : "215f6ae5fd02351b04bee21ccd47c02f",
59
+ "redirector" : "http://freshmeat.net/urls/215f6ae5fd02351b04bee21ccd47c02f"
60
+ },
61
+ "id" : 29385,
62
+ "license_list" : [ "GPL" ],
63
+ "name" : "maildirpop3d",
64
+ "oneliner" : "A Qmail extension supporting multiple POP mailboxes for a single shell account.",
65
+ "operating_system_list" : [ "Unix" ],
66
+ "permalink" : "maildirpop3d",
67
+ "popularity" : 14.18,
68
+ "programming_language_list" : [ "C" ],
69
+ "project_filters_count" : 99,
70
+ "recent_releases" : [ { "approved_at" : "2004-06-19T04:00:25Z",
71
+ "changelog" : "The path is now searched for the qmail-pop3d program if the full path is not supplied.",
72
+ "id" : 164384,
73
+ "tag_list" : [ "Minor bugfixes" ],
74
+ "version" : "0.2"
75
+ },
76
+ { "approved_at" : "2002-07-04T02:08:52Z",
77
+ "changelog" : "",
78
+ "id" : 89734,
79
+ "tag_list" : [ "Initial freshmeat announcement" ],
80
+ "version" : "0.1"
81
+ }
82
+ ],
83
+ "subscriptions_count" : 2,
84
+ "tag_list" : [ "Communications",
85
+ "Email",
86
+ "Post-Office",
87
+ "POP3"
88
+ ],
89
+ "translation_list" : [ ],
90
+ "updated_at" : "2004-06-19T04:00:25Z",
91
+ "user" : { "display_name" : "Tom Clegg",
92
+ "id" : 134786,
93
+ "login" : "tomclegg",
94
+ "url" : null
95
+ },
96
+ "vitality" : 1.6100000000000001,
97
+ "vote_score" : 0
98
+ } },
99
+ { "project" : { "approved_screenshots" : [ ],
100
+ "approved_urls" : [ { "host" : "shlomifish.org",
101
+ "id" : 149120,
102
+ "label" : "Homepage",
103
+ "permalink" : "d2c4b3939d2b47c76a90aba9a76a8b79",
104
+ "redirector" : "http://freshmeat.net/urls/d2c4b3939d2b47c76a90aba9a76a8b79"
105
+ },
106
+ { "host" : "search.cpan.org",
107
+ "id" : 149121,
108
+ "label" : "Download",
109
+ "permalink" : "2c07e59c0114ac74c84a990149d96d6a",
110
+ "redirector" : "http://freshmeat.net/urls/2c07e59c0114ac74c84a990149d96d6a"
111
+ },
112
+ { "host" : "bitbucket.org",
113
+ "id" : 149122,
114
+ "label" : "Version Control",
115
+ "permalink" : "30677112d83d5689fdc4704a619c5bed",
116
+ "redirector" : "http://freshmeat.net/urls/30677112d83d5689fdc4704a619c5bed"
117
+ }
118
+ ],
119
+ "created_at" : "2010-11-28T17:02:42Z",
120
+ "description" : "Perl modules are notated in many different formats: \"Foo/Bar/Baz.pm\", \"Foo::Bar\", \"Foo-Bar\", etc. Module-Format allows one to take a list of modules in any format (including mixed ones) and output it in a consistent format that can be input to an installation program or an information querier.",
121
+ "direct_download" : { "host" : "search.cpan.org",
122
+ "id" : 149121,
123
+ "label" : "Download",
124
+ "permalink" : "2c07e59c0114ac74c84a990149d96d6a",
125
+ "redirector" : "http://freshmeat.net/urls/2c07e59c0114ac74c84a990149d96d6a"
126
+ },
127
+ "id" : 79616,
128
+ "license_list" : [ "MIT/X" ],
129
+ "name" : "Module-Format",
130
+ "oneliner" : "Convert and manipulate strings representing Perl modules and CPAN distributions.",
131
+ "operating_system_list" : [ "POSIX",
132
+ "Linux",
133
+ "Mac OS X",
134
+ "Windows (32 and 64bit)",
135
+ "Windows"
136
+ ],
137
+ "permalink" : "module-format",
138
+ "popularity" : 24.859999999999999,
139
+ "programming_language_list" : [ "Perl" ],
140
+ "project_filters_count" : 29,
141
+ "recent_releases" : [ { "approved_at" : "2010-12-03T06:43:58Z",
142
+ "changelog" : "A bug was fixed with guessing the \"unix\" format (e.g: \"Foo/Bar/Baz.pm\"). Keywords and resources were added to the META.yml.",
143
+ "id" : 325302,
144
+ "tag_list" : [ "Beta",
145
+ "CPAN"
146
+ ],
147
+ "version" : "0.0.3"
148
+ },
149
+ { "approved_at" : "2010-11-28T19:42:34Z",
150
+ "changelog" : "Initial freshmeat and CPAN release.",
151
+ "id" : 325104,
152
+ "tag_list" : [ "Beta" ],
153
+ "version" : "0.0.1"
154
+ }
155
+ ],
156
+ "subscriptions_count" : 0,
157
+ "tag_list" : [ "Utility",
158
+ "Perl",
159
+ "Module",
160
+ "CPAN"
161
+ ],
162
+ "translation_list" : [ ],
163
+ "updated_at" : "2010-12-03T06:43:58Z",
164
+ "user" : { "display_name" : "Shlomi Fish",
165
+ "id" : 46596,
166
+ "login" : "shlomif",
167
+ "url" : "http://www.shlomifish.org/"
168
+ },
169
+ "vitality" : 1.4399999999999999,
170
+ "vote_score" : 0
171
+ } },
172
+ { "project" : { "approved_screenshots" : [ ],
173
+ "approved_urls" : [ { "host" : "prdownloads.sourceforge.net",
174
+ "id" : 53609,
175
+ "label" : "Zip",
176
+ "permalink" : "094867b3c0cbd80ec28e2b2423c25f19",
177
+ "redirector" : "http://freshmeat.net/urls/094867b3c0cbd80ec28e2b2423c25f19"
178
+ },
179
+ { "host" : "portell.sf.net",
180
+ "id" : 97977,
181
+ "label" : "Website",
182
+ "permalink" : "ef008e8027f9c47ea0d4d09a08c9d9c4",
183
+ "redirector" : "http://freshmeat.net/urls/ef008e8027f9c47ea0d4d09a08c9d9c4"
184
+ }
185
+ ],
186
+ "created_at" : "2002-12-31T05:41:56Z",
187
+ "description" : "portell is a program that allows BSD users to\r\nview the description as given in its pkg-descr or pkg/DESCR file for a specific package. If you want to know what the program \"foo\" is, then you can type \"portell foo\" from any directory, and portell will instantly dump its description file to your display.",
188
+ "direct_download" : { "host" : "prdownloads.sourceforge.net",
189
+ "id" : 53609,
190
+ "label" : "Zip",
191
+ "permalink" : "094867b3c0cbd80ec28e2b2423c25f19",
192
+ "redirector" : "http://freshmeat.net/urls/094867b3c0cbd80ec28e2b2423c25f19"
193
+ },
194
+ "id" : 33815,
195
+ "license_list" : [ "BSD Original" ],
196
+ "name" : "portell",
197
+ "oneliner" : "A BSD package description finder/viewer.",
198
+ "operating_system_list" : [ "POSIX",
199
+ "BSD",
200
+ "FreeBSD"
201
+ ],
202
+ "permalink" : "portell",
203
+ "popularity" : 23.66,
204
+ "programming_language_list" : [ "Python" ],
205
+ "project_filters_count" : 106,
206
+ "recent_releases" : [ { "approved_at" : "2004-10-30T08:38:44Z",
207
+ "changelog" : "This release runs under BSD systems other than FreeBSD and autocreates\r\nthe database.\r\n",
208
+ "id" : 177365,
209
+ "tag_list" : [ "Major feature enhancements" ],
210
+ "version" : "0.2"
211
+ },
212
+ { "approved_at" : "2002-12-31T10:35:41Z",
213
+ "changelog" : "",
214
+ "id" : 108004,
215
+ "tag_list" : [ "Initial freshmeat announcement" ],
216
+ "version" : "0.1"
217
+ }
218
+ ],
219
+ "subscriptions_count" : 4,
220
+ "tag_list" : [ ],
221
+ "translation_list" : [ ],
222
+ "updated_at" : "2004-10-30T08:38:44Z",
223
+ "user" : { "display_name" : "gt3",
224
+ "id" : 98532,
225
+ "login" : "gt3",
226
+ "url" : "http://rkulla.com"
227
+ },
228
+ "vitality" : 1.6000000000000001,
229
+ "vote_score" : 0
230
+ } },
231
+ { "project" : { "approved_screenshots" : [ ],
232
+ "approved_urls" : [ { "host" : "freaknet.org",
233
+ "id" : 49216,
234
+ "label" : "Changelog",
235
+ "permalink" : "c2cc9c82e47c749843b38b4c53a5cfd0",
236
+ "redirector" : "http://freshmeat.net/urls/c2cc9c82e47c749843b38b4c53a5cfd0"
237
+ },
238
+ { "host" : "freaknet.org",
239
+ "id" : 77444,
240
+ "label" : "Tar/BZ2",
241
+ "permalink" : "47ac9feaae8b2f31f2f0da28690a7a08",
242
+ "redirector" : "http://freshmeat.net/urls/47ac9feaae8b2f31f2f0da28690a7a08"
243
+ },
244
+ { "host" : "freaknet.org",
245
+ "id" : 112687,
246
+ "label" : "Website",
247
+ "permalink" : "e24b35862584add7bd2793e14042c1bb",
248
+ "redirector" : "http://freshmeat.net/urls/e24b35862584add7bd2793e14042c1bb"
249
+ },
250
+ { "host" : "dev.hinezumi.org",
251
+ "id" : 129314,
252
+ "label" : "CVS tree",
253
+ "permalink" : "3a810a76389fa0610346158629c77105",
254
+ "redirector" : "http://freshmeat.net/urls/3a810a76389fa0610346158629c77105"
255
+ }
256
+ ],
257
+ "created_at" : "2005-12-21T11:05:34Z",
258
+ "description" : "Pwdrc executes a set of commands each time you\r\nwalk in a directory with \"cd\". You can associate a\r\ndifferent set of commands to each directory. Each\r\ntime you walk in a directory the file\r\n.`whoami`_pwdrc is read and executed (if it\r\nexists), thus if your user name is \"foo\", your\r\npwdrc file is \".foo_pwdrc\". ",
259
+ "direct_download" : { "host" : "freaknet.org",
260
+ "id" : 77444,
261
+ "label" : "Tar/BZ2",
262
+ "permalink" : "47ac9feaae8b2f31f2f0da28690a7a08",
263
+ "redirector" : "http://freshmeat.net/urls/47ac9feaae8b2f31f2f0da28690a7a08"
264
+ },
265
+ "id" : 57882,
266
+ "license_list" : [ "GPL" ],
267
+ "name" : "Pwdrc",
268
+ "oneliner" : "Executes a set of commands when you walk in a directory with \"cd\".",
269
+ "operating_system_list" : [ "POSIX" ],
270
+ "permalink" : "pwdrc",
271
+ "popularity" : 15.869999999999999,
272
+ "programming_language_list" : [ "Unix Shell" ],
273
+ "project_filters_count" : 73,
274
+ "recent_releases" : [ { "approved_at" : "2006-05-27T23:32:38Z",
275
+ "changelog" : "recurse_pwdrc() has been added in the set of\r\ndefinable functions, and it is called each time\r\nthe user walks into a sub-directory. The\r\n\"todo_remider\" cookbook has been improved. It\r\ndoesn't conflict anymore if used in multiple\r\ndirectories, and it supports the shuffling of the\r\noutput to increase the user's attention.\r\n",
276
+ "id" : 228209,
277
+ "tag_list" : [ "Major feature enhancements" ],
278
+ "version" : "0.0.3"
279
+ },
280
+ { "approved_at" : "2005-12-23T09:51:58Z",
281
+ "changelog" : "New cookbooks has been added. \"automount\" automounts a /mnt directory\r\nwithout autofs. \"cvsroot\" sets your CVS environment variables.\r\n\"gqview_imgdir\" opens gqview when you enter an image directory.\r\n\"todo_reminder\" prints a TODO file. \"newmail_mutt_Z\" opens mutt if new\r\nmessages have arrived.\r\n",
282
+ "id" : 215319,
283
+ "tag_list" : [ "Major feature enhancements" ],
284
+ "version" : "0.0.2"
285
+ }
286
+ ],
287
+ "subscriptions_count" : 3,
288
+ "tag_list" : [ "Utilities" ],
289
+ "translation_list" : [ ],
290
+ "updated_at" : "2006-05-27T23:32:38Z",
291
+ "user" : { "display_name" : "Alpt",
292
+ "id" : 242323,
293
+ "login" : "Alpt",
294
+ "url" : null
295
+ },
296
+ "vitality" : 1.48,
297
+ "vote_score" : 0
298
+ } },
299
+ { "project" : { "approved_screenshots" : [ ],
300
+ "approved_urls" : [ { "host" : "ftp.lysator.liu.se",
301
+ "id" : 4752,
302
+ "label" : "Tar/GZ",
303
+ "permalink" : "6892c6d92378f2d190e0f615586976c9",
304
+ "redirector" : "http://freshmeat.net/urls/6892c6d92378f2d190e0f615586976c9"
305
+ },
306
+ { "host" : "lysator.liu.se",
307
+ "id" : 87266,
308
+ "label" : "Website",
309
+ "permalink" : "2c77031833510963175409a48ef97a60",
310
+ "redirector" : "http://freshmeat.net/urls/2c77031833510963175409a48ef97a60"
311
+ }
312
+ ],
313
+ "created_at" : "1999-02-01T17:09:34Z",
314
+ "description" : "Petopt is a free command line argument parsing library that handles short (-v) and long (--foo-bar) options. It supports abbreviated long options and should be pretty easy to use.",
315
+ "direct_download" : { "host" : "ftp.lysator.liu.se",
316
+ "id" : 4752,
317
+ "label" : "Tar/GZ",
318
+ "permalink" : "6892c6d92378f2d190e0f615586976c9",
319
+ "redirector" : "http://freshmeat.net/urls/6892c6d92378f2d190e0f615586976c9"
320
+ },
321
+ "id" : 7814,
322
+ "license_list" : [ "Freeware" ],
323
+ "name" : "petopt",
324
+ "oneliner" : "C command line argument parsing library",
325
+ "operating_system_list" : [ "OS Independent" ],
326
+ "permalink" : "petopt",
327
+ "popularity" : 12.449999999999999,
328
+ "programming_language_list" : [ "C" ],
329
+ "project_filters_count" : 1,
330
+ "recent_releases" : [ { "approved_at" : "2001-01-30T06:13:36Z",
331
+ "changelog" : "This release adds boolean variables (--with(out)-X and --(dis)enable-X).",
332
+ "id" : 25454,
333
+ "tag_list" : [ ],
334
+ "version" : "0.7"
335
+ } ],
336
+ "subscriptions_count" : 0,
337
+ "tag_list" : [ "Software Development",
338
+ "Libraries"
339
+ ],
340
+ "translation_list" : [ ],
341
+ "updated_at" : "2001-01-30T06:13:36Z",
342
+ "user" : { "display_name" : "Peter Eriksson",
343
+ "id" : 26471,
344
+ "login" : "pen",
345
+ "url" : null
346
+ },
347
+ "vitality" : 1.0600000000000001,
348
+ "vote_score" : 0
349
+ } },
350
+ { "project" : { "approved_screenshots" : [ ],
351
+ "approved_urls" : [ { "host" : "stromberg.dnsalias.org",
352
+ "id" : 109378,
353
+ "label" : "Website",
354
+ "permalink" : "962e48c625f26af9f8713af356fdaa47",
355
+ "redirector" : "http://freshmeat.net/urls/962e48c625f26af9f8713af356fdaa47"
356
+ } ],
357
+ "created_at" : "2005-04-07T22:04:30Z",
358
+ "description" : "dup-label copies a label from one disk on a Solaris system to \r\nanother, but if the source disk's ASCII label was \"foo\" and \r\nthe destination disk's ASCII label was \"bar\", then dup-label \r\nwill duplicate partitioning, but also produce an ASCII label of \r\n\"foo, was: bar\". This may prove less puzzling than current \r\nother offerings to future \r\nadmins, when they otherwise would find that a disk that has \r\nSeagate written on the outside, says Maxtor in sun format. ",
359
+ "id" : 53531,
360
+ "license_list" : [ ],
361
+ "name" : "dup-label",
362
+ "oneliner" : "A tool that duplicates a Sun Solaris disk label.",
363
+ "operating_system_list" : [ ],
364
+ "permalink" : "dup-label",
365
+ "popularity" : 7.0700000000000003,
366
+ "programming_language_list" : [ ],
367
+ "project_filters_count" : 9,
368
+ "recent_releases" : [ ],
369
+ "subscriptions_count" : 1,
370
+ "tag_list" : [ ],
371
+ "translation_list" : [ ],
372
+ "updated_at" : "2006-08-18T17:27:28Z",
373
+ "user" : { "display_name" : "Dan Stromberg",
374
+ "id" : 35047,
375
+ "login" : "strombrg",
376
+ "url" : null
377
+ },
378
+ "vitality" : 46.57,
379
+ "vote_score" : 0
380
+ } },
381
+ { "project" : { "approved_screenshots" : [ ],
382
+ "approved_urls" : [ { "host" : "sourceforge.net",
383
+ "id" : 7942,
384
+ "label" : "Tar/GZ",
385
+ "permalink" : "fc7d7111da45e08f891dcb9e3fc8ef58",
386
+ "redirector" : "http://freshmeat.net/urls/fc7d7111da45e08f891dcb9e3fc8ef58"
387
+ },
388
+ { "host" : "libfssearch.sourceforge.net",
389
+ "id" : 90916,
390
+ "label" : "Website",
391
+ "permalink" : "c76116e6bf0e1498ab4d32c74cf54054",
392
+ "redirector" : "http://freshmeat.net/urls/c76116e6bf0e1498ab4d32c74cf54054"
393
+ }
394
+ ],
395
+ "created_at" : "2001-05-31T18:53:17Z",
396
+ "description" : "libfssearch is a C++ library that provides file and directory traversal\r\nfunctionality. Given a base directory, it will traverse the tree rooted at that\r\ndirectory in depth-first order, invoking a callback function for each file or\r\ndirectory found. It is basically a C++ version of the Unix command, \"find -exec\r\nfoo\". It has been tested on Solaris and Linux.\r\n",
397
+ "direct_download" : { "host" : "sourceforge.net",
398
+ "id" : 7942,
399
+ "label" : "Tar/GZ",
400
+ "permalink" : "fc7d7111da45e08f891dcb9e3fc8ef58",
401
+ "redirector" : "http://freshmeat.net/urls/fc7d7111da45e08f891dcb9e3fc8ef58"
402
+ },
403
+ "id" : 15058,
404
+ "license_list" : [ "GPL" ],
405
+ "name" : "libfssearch",
406
+ "oneliner" : "A file system traversal library with callback functionality.",
407
+ "operating_system_list" : [ ],
408
+ "permalink" : "libfssearch",
409
+ "popularity" : 6.71,
410
+ "programming_language_list" : [ ],
411
+ "project_filters_count" : 2,
412
+ "recent_releases" : [ { "approved_at" : "2001-06-01T10:24:57Z",
413
+ "changelog" : "New methods were added, overall speed was improved, minor bugs were fixed, the\r\ndocumentation was updated, and other improvements were made.\r\n",
414
+ "id" : 49395,
415
+ "tag_list" : [ "Stable",
416
+ "Major feature enhancements"
417
+ ],
418
+ "version" : "0.03"
419
+ } ],
420
+ "subscriptions_count" : 0,
421
+ "tag_list" : [ ],
422
+ "translation_list" : [ ],
423
+ "updated_at" : "2001-06-01T10:24:57Z",
424
+ "user" : { "display_name" : "e.sammer",
425
+ "id" : 61030,
426
+ "login" : "esammer",
427
+ "url" : null
428
+ },
429
+ "vitality" : 1.0,
430
+ "vote_score" : 0
431
+ } },
432
+ { "project" : { "approved_screenshots" : [ { "absolute_url" : "http://freshmeat.net/screenshots/ab/83/ab83ca89494ed8a91d3eada8ce351484_thumb.png?1237049708",
433
+ "created_at" : "2009-03-14T16:55:08Z",
434
+ "id" : 7423,
435
+ "title" : null
436
+ } ],
437
+ "approved_urls" : [ { "host" : "incava.org",
438
+ "id" : 15368,
439
+ "label" : "Tar/GZ",
440
+ "permalink" : "cfd52ab0ddae91911aebb6d70c76ef8f",
441
+ "redirector" : "http://freshmeat.net/urls/cfd52ab0ddae91911aebb6d70c76ef8f"
442
+ },
443
+ { "host" : "incava.org",
444
+ "id" : 64708,
445
+ "label" : "RPM Package",
446
+ "permalink" : "98b299b3c1629e10c4b8b02293903649",
447
+ "redirector" : "http://freshmeat.net/urls/98b299b3c1629e10c4b8b02293903649"
448
+ },
449
+ { "host" : "incava.org",
450
+ "id" : 94635,
451
+ "label" : "Website",
452
+ "permalink" : "2e9253a3b1b1fc8177957b32b1013dc8",
453
+ "redirector" : "http://freshmeat.net/urls/2e9253a3b1b1fc8177957b32b1013dc8"
454
+ }
455
+ ],
456
+ "created_at" : "2002-04-09T09:29:40Z",
457
+ "description" : "glark offers grep-like searching of text files, with very powerful, complex regular expressions (e.g., \"/foo\\w+/ and /bar[^\\d]*baz$/ within 4 lines of each other\"). It also highlights the matches, displays context (preceding and succeeding lines), does case-insensitive matches, and automatic exclusion of non-text files. It supports most options from the GNU version of grep. ",
458
+ "direct_download" : { "host" : "incava.org",
459
+ "id" : 15368,
460
+ "label" : "Tar/GZ",
461
+ "permalink" : "cfd52ab0ddae91911aebb6d70c76ef8f",
462
+ "redirector" : "http://freshmeat.net/urls/cfd52ab0ddae91911aebb6d70c76ef8f"
463
+ },
464
+ "id" : 27104,
465
+ "license_list" : [ "LGPL" ],
466
+ "name" : "glark",
467
+ "oneliner" : "A grep-like tool for searching text files.",
468
+ "operating_system_list" : [ "OS Independent" ],
469
+ "permalink" : "glark",
470
+ "popularity" : 95.969999999999999,
471
+ "programming_language_list" : [ "Ruby" ],
472
+ "project_filters_count" : 224,
473
+ "recent_releases" : [ { "approved_at" : "2007-02-10T14:08:46Z",
474
+ "changelog" : "Short option names (e.g., --inv instead of\r\n--invert-match) are now supported. A significant\r\namount of code was rewritten for better execution\r\nspeed.\r\n",
475
+ "id" : 247070,
476
+ "tag_list" : [ "Minor feature enhancements" ],
477
+ "version" : "1.8.0"
478
+ },
479
+ { "approved_at" : "2006-09-08T04:48:16Z",
480
+ "changelog" : "Support was added for --with-fullname,\r\n--without-fullname, --with-basename, and\r\n--without-basename, which limit the files to be\r\nsearched to those with full and base names\r\nmatching the regular expression given. A bug with\r\n--after and --before taking non-percentage\r\narguments was fixed.\r\n",
481
+ "id" : 235885,
482
+ "tag_list" : [ "Minor feature enhancements" ],
483
+ "version" : "1.7.10"
484
+ },
485
+ { "approved_at" : "2006-04-25T08:51:11Z",
486
+ "changelog" : "A bug was fixed with the --and option, which was\r\npreviously getting the closest paired match, not\r\nthe farthest one within the maximum distance.\r\nTests were added, and significant refactoring was\r\ndone.\r\n",
487
+ "id" : 225799,
488
+ "tag_list" : [ "Minor bugfixes" ],
489
+ "version" : "1.7.9"
490
+ },
491
+ { "approved_at" : "2006-03-23T07:39:48Z",
492
+ "changelog" : "A bug in the --invert-match (-v) option was fixed.\r\nA check for recursive cycles caused by links was\r\nadded.\r\n",
493
+ "id" : 223150,
494
+ "tag_list" : [ "Minor bugfixes" ],
495
+ "version" : "1.7.8"
496
+ },
497
+ { "approved_at" : "2006-03-03T11:02:30Z",
498
+ "changelog" : "The --label option has been fixed to take any string, instead of just one word. Warning output for unknown options has been fixed.",
499
+ "id" : 221345,
500
+ "tag_list" : [ "Minor bugfixes" ],
501
+ "version" : "1.7.7"
502
+ }
503
+ ],
504
+ "subscriptions_count" : 60,
505
+ "tag_list" : [ "Text Processing",
506
+ "Filters",
507
+ "Utilities",
508
+ "General"
509
+ ],
510
+ "translation_list" : [ ],
511
+ "updated_at" : "2007-02-10T14:08:46Z",
512
+ "user" : { "display_name" : "Jeff Pace",
513
+ "id" : 96613,
514
+ "login" : "JEugenePace",
515
+ "url" : null
516
+ },
517
+ "vitality" : 7.5300000000000002,
518
+ "vote_score" : 5
519
+ } },
520
+ { "project" : { "approved_screenshots" : [ ],
521
+ "approved_urls" : [ { "host" : "sourceforge.net",
522
+ "id" : 25494,
523
+ "label" : "Tar/GZ",
524
+ "permalink" : "25fdbb53f6f92fe05dc43d859a6b9d04",
525
+ "redirector" : "http://freshmeat.net/urls/25fdbb53f6f92fe05dc43d859a6b9d04"
526
+ },
527
+ { "host" : "sourceforge.net",
528
+ "id" : 60037,
529
+ "label" : "Bug Tracker",
530
+ "permalink" : "74d4ee030068b02bfc660e398198dfd4",
531
+ "redirector" : "http://freshmeat.net/urls/74d4ee030068b02bfc660e398198dfd4"
532
+ },
533
+ { "host" : "pcjbot.sf.net",
534
+ "id" : 108418,
535
+ "label" : "Website",
536
+ "permalink" : "eea6452dea326af046078af31d1d06d7",
537
+ "redirector" : "http://freshmeat.net/urls/eea6452dea326af046078af31d1d06d7"
538
+ },
539
+ { "host" : "pcjbot.cvs.sourceforge.net",
540
+ "id" : 128526,
541
+ "label" : "CVS tree",
542
+ "permalink" : "f7e43d83bc63c7aae8497abfcc15773c",
543
+ "redirector" : "http://freshmeat.net/urls/f7e43d83bc63c7aae8497abfcc15773c"
544
+ }
545
+ ],
546
+ "created_at" : "2005-01-27T08:21:41Z",
547
+ "description" : "PCJBot is a Jabber bot written in Perl with PCJ.\r\nIt can do various things on a Jabber chat channel.\r\nIt remembers \"foo is bar\" facts and does other\r\nthings with plugins. Plugins include Bloglines,\r\nCron, DNS, Weather, Math, Spellcheck, Seen, and URL.",
548
+ "direct_download" : { "host" : "sourceforge.net",
549
+ "id" : 25494,
550
+ "label" : "Tar/GZ",
551
+ "permalink" : "25fdbb53f6f92fe05dc43d859a6b9d04",
552
+ "redirector" : "http://freshmeat.net/urls/25fdbb53f6f92fe05dc43d859a6b9d04"
553
+ },
554
+ "id" : 52212,
555
+ "license_list" : [ "GPL" ],
556
+ "name" : "PCJBot",
557
+ "oneliner" : "A Jabber conference bot written in Perl with PCJ.",
558
+ "operating_system_list" : [ "OS Independent" ],
559
+ "permalink" : "pcjbot",
560
+ "popularity" : 28.350000000000001,
561
+ "programming_language_list" : [ "Perl" ],
562
+ "project_filters_count" : 133,
563
+ "recent_releases" : [ { "approved_at" : "2005-03-18T10:38:02Z",
564
+ "changelog" : "Everything has been POE-ised, and there are new plugins.",
565
+ "id" : 190966,
566
+ "tag_list" : [ "Major feature enhancements" ],
567
+ "version" : "0.5"
568
+ },
569
+ { "approved_at" : "2005-02-10T00:13:07Z",
570
+ "changelog" : "The math module now handles decimals. Caching in the weather module was fixed.",
571
+ "id" : 187373,
572
+ "tag_list" : [ "Minor bugfixes" ],
573
+ "version" : "0.3"
574
+ },
575
+ { "approved_at" : "2005-02-01T14:46:36Z",
576
+ "changelog" : "Better documentation, caching weather, minimum cycle time for cron, cron improvements, and automatically creates the database if required.\r\n",
577
+ "id" : 186505,
578
+ "tag_list" : [ "Minor feature enhancements" ],
579
+ "version" : "0.2"
580
+ },
581
+ { "approved_at" : "2005-01-27T12:08:07Z",
582
+ "changelog" : "",
583
+ "id" : 185987,
584
+ "tag_list" : [ "Initial freshmeat announcement" ],
585
+ "version" : "0.1"
586
+ }
587
+ ],
588
+ "subscriptions_count" : 5,
589
+ "tag_list" : [ "Communications",
590
+ "Chat",
591
+ "Conferencing"
592
+ ],
593
+ "translation_list" : [ ],
594
+ "updated_at" : "2005-03-18T10:38:02Z",
595
+ "user" : { "display_name" : "Satya",
596
+ "id" : 44385,
597
+ "login" : "satyap",
598
+ "url" : null
599
+ },
600
+ "vitality" : 2.02,
601
+ "vote_score" : 0
602
+ } }
603
+ ] }
@@ -1 +1,67 @@
1
- [{"url":{"redirector":"http://freshmeat.net/urls/4402895302714daf0c6789ea0c3b2d78","permalink":"4402895302714daf0c6789ea0c3b2d78","label":"Mailinglist","id":34218,"host":"gimp.org"}},{"url":{"redirector":"http://freshmeat.net/urls/297aea3edd8b0a5bd7a0cf4910c725b5","permalink":"297aea3edd8b0a5bd7a0cf4910c725b5","label":"Mailinglist (Development)","id":34928,"host":"gimp.org"}},{"url":{"redirector":"http://freshmeat.net/urls/1be78f3e360075045537b9cd7d1c333e","permalink":"1be78f3e360075045537b9cd7d1c333e","label":"Changelog","id":42229,"host":"developer.gimp.org"}},{"url":{"redirector":"http://freshmeat.net/urls/71df3f7538356c231cd436373af1834c","permalink":"71df3f7538356c231cd436373af1834c","label":"Bug Tracker","id":58886,"host":"bugzilla.gnome.org"}},{"url":{"redirector":"http://freshmeat.net/urls/d666f1a0cec1b7fa6e9eec2b036b3786","permalink":"d666f1a0cec1b7fa6e9eec2b036b3786","label":"Debian Package","id":68630,"host":"packages.debian.org"}},{"url":{"redirector":"http://freshmeat.net/urls/c09f79415c2d09be1eba57d80aba3259","permalink":"c09f79415c2d09be1eba57d80aba3259","label":"Mirror site","id":71187,"host":"ftp.gwdg.de"}},{"url":{"redirector":"http://freshmeat.net/urls/c18fbc1c24dc3cf78cd270e44b75759a","permalink":"c18fbc1c24dc3cf78cd270e44b75759a","label":"Mirror site","id":71389,"host":"gimp.org"}},{"url":{"redirector":"http://freshmeat.net/urls/cdc7534a3346334eb0475e5cce942380","permalink":"cdc7534a3346334eb0475e5cce942380","label":"Tar/BZ2","id":73883,"host":"ftp.gimp.org"}},{"url":{"redirector":"http://freshmeat.net/urls/a21df0fd379f13d1c0ee3bac7110746e","permalink":"a21df0fd379f13d1c0ee3bac7110746e","label":"Website","id":92856,"host":"gimp.org"}},{"url":{"redirector":"http://freshmeat.net/urls/412f8521ffb44622fad73404c2f07a09","permalink":"412f8521ffb44622fad73404c2f07a09","label":"Git repository","id":124691,"host":"git.gnome.org"}},{"url":{"redirector":"http://freshmeat.net/urls/2953bbbdb430a26ac1af1d918e289440","permalink":"2953bbbdb430a26ac1af1d918e289440","label":"Mac OS X Download","id":148222,"host":"gimp.org"}}]
1
+ [
2
+ {"url":
3
+ {"redirector":"http://freshmeat.net/urls/4402895302714daf0c6789ea0c3b2d78",
4
+ "permalink":"4402895302714daf0c6789ea0c3b2d78",
5
+ "label":"Mailinglist",
6
+ "id":34218,
7
+ "host":"gimp.org"}},
8
+ {"url":
9
+ {"redirector":"http://freshmeat.net/urls/297aea3edd8b0a5bd7a0cf4910c725b5",
10
+ "permalink":"297aea3edd8b0a5bd7a0cf4910c725b5",
11
+ "label":"Mailinglist (Development)",
12
+ "id":34928,
13
+ "host":"gimp.org"}},
14
+ {"url":
15
+ {"redirector":"http://freshmeat.net/urls/1be78f3e360075045537b9cd7d1c333e",
16
+ "permalink":"1be78f3e360075045537b9cd7d1c333e",
17
+ "label":"Changelog",
18
+ "id":42229,
19
+ "host":"developer.gimp.org"}},
20
+ {"url":
21
+ {"redirector":"http://freshmeat.net/urls/71df3f7538356c231cd436373af1834c",
22
+ "permalink":"71df3f7538356c231cd436373af1834c",
23
+ "label":"Bug Tracker",
24
+ "id":58886,
25
+ "host":"bugzilla.gnome.org"}},
26
+ {"url":
27
+ {"redirector":"http://freshmeat.net/urls/d666f1a0cec1b7fa6e9eec2b036b3786",
28
+ "permalink":"d666f1a0cec1b7fa6e9eec2b036b3786",
29
+ "label":"Debian Package",
30
+ "id":68630,
31
+ "host":"packages.debian.org"}},
32
+ {"url":
33
+ {"redirector":"http://freshmeat.net/urls/c09f79415c2d09be1eba57d80aba3259",
34
+ "permalink":"c09f79415c2d09be1eba57d80aba3259",
35
+ "label":"Mirror site",
36
+ "id":71187,
37
+ "host":"ftp.gwdg.de"}},
38
+ {"url":
39
+ {"redirector":"http://freshmeat.net/urls/c18fbc1c24dc3cf78cd270e44b75759a",
40
+ "permalink":"c18fbc1c24dc3cf78cd270e44b75759a",
41
+ "label":"Mirror site",
42
+ "id":71389,
43
+ "host":"gimp.org"}},
44
+ {"url":
45
+ {"redirector":"http://freshmeat.net/urls/cdc7534a3346334eb0475e5cce942380",
46
+ "permalink":"cdc7534a3346334eb0475e5cce942380",
47
+ "label":"Tar/BZ2",
48
+ "id":73883,
49
+ "host":"ftp.gimp.org"}},
50
+ {"url":
51
+ {"redirector":"http://freshmeat.net/urls/a21df0fd379f13d1c0ee3bac7110746e",
52
+ "permalink":"a21df0fd379f13d1c0ee3bac7110746e",
53
+ "label":"Website",
54
+ "id":92856,
55
+ "host":"gimp.org"}},
56
+ {"url":
57
+ {"redirector":"http://freshmeat.net/urls/412f8521ffb44622fad73404c2f07a09",
58
+ "permalink":"412f8521ffb44622fad73404c2f07a09",
59
+ "label":"Git repository",
60
+ "id":124691,
61
+ "host":"git.gnome.org"}},
62
+ {"url":
63
+ {"redirector":"http://freshmeat.net/urls/2953bbbdb430a26ac1af1d918e289440",
64
+ "permalink":"2953bbbdb430a26ac1af1d918e289440",
65
+ "label":"Mac OS X Download",
66
+ "id":148222,
67
+ "host":"gimp.org"}}]
@@ -18,6 +18,7 @@
18
18
  =end
19
19
 
20
20
  require 'rspec'
21
+ require 'net/http'
21
22
  require 'spec_helper'
22
23
 
23
24
  describe Freshmeat do
@@ -193,4 +194,34 @@ describe Freshmeat do
193
194
  f.recently_released_projects().map { |p| test_project_partial(p) }
194
195
  end
195
196
  end
197
+
198
+ it "going over the API limit should throw an exception" do
199
+ FakeWeb.register_uri(:get, "http://freshmeat.net/search.json?q=amforth&page=1&auth_code=AAA",
200
+ :body => File.read("spec/fixtures/overlimit.json"),
201
+ :status => ["503", "Service Temporarily Unavailable"])
202
+ f = Freshmeat.new("AAA")
203
+ lambda {
204
+ f.search("amforth")
205
+ }.should raise_error(FreshmeatAPICreditsExceeded)
206
+ end
207
+
208
+ it "an unexpected HTTP error should result in an HTTPException and we shouldn't attempt to parse" do
209
+ FakeWeb.register_uri(:get, "http://freshmeat.net/search.json?q=amforth&page=1&auth_code=AAA",
210
+ :status => ["500", "Internal Server Error"])
211
+ f = Freshmeat.new("AAA")
212
+ lambda {
213
+ f.search("amforth")
214
+ }.should raise_error(Net::HTTPFatalError, "500 \"Internal Server Error\"")
215
+ end
216
+
217
+ it "Bad authentication attempt should result in an exception" do
218
+ FakeWeb.register_uri(:get, "http://freshmeat.net/search.json?q=amforth&page=1&auth_code=AAA",
219
+ :status => ["401", "Authorization Required"])
220
+ f = Freshmeat.new("AAA")
221
+ lambda {
222
+ f.search("amforth")
223
+ }.should raise_error(Net::HTTPServerException, "401 \"Authorization Required\"")
224
+ end
225
+
226
+
196
227
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: freshmeat
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 1
9
- - 0
10
- version: 1.1.0
9
+ - 1
10
+ version: 1.1.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Matthew Stump
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-05-04 00:00:00 -07:00
18
+ date: 2011-07-11 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -182,6 +182,7 @@ files:
182
182
  - spec/fixtures/comments.json
183
183
  - spec/fixtures/dependencies.json
184
184
  - spec/fixtures/localhost.json
185
+ - spec/fixtures/overlimit.json
185
186
  - spec/fixtures/recently_released.json
186
187
  - spec/fixtures/releases.json
187
188
  - spec/fixtures/samba.json