PageRenderTime 50ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

/lib/DDG/Publisher/Site/Duckduckgo/Root.pm

https://github.com/nrw/duckduckgo-publisher
Perl | 348 lines | 338 code | 6 blank | 4 comment | 2 complexity | 6be435283a63a87a57c6cd5ba362d667 MD5 | raw file
  1. package DDG::Publisher::Site::Duckduckgo::Root;
  2. use MooX;
  3. with qw(
  4. DDG::Publisher::DirRole
  5. );
  6. sub path { '/' }
  7. sub pages {{
  8. about => sub {
  9. copyright_footer => 1,
  10. no_content_internal => 1,
  11. no_spacer => 1,
  12. no_cw => 1,
  13. alt_header => 1,
  14. alt_header_text => 1,
  15. menu_show_press => 1,
  16. menu_hide_themes => 1,
  17. team_members => [{
  18. name => 'Gabriel Weinberg',
  19. title => 'Founder',
  20. info => 'Family guy',
  21. image => 'gabriel',
  22. link => 'https://twitter.com/yegg/',
  23. },{
  24. name => 'Caine Tighe',
  25. title => 'Core Components',
  26. info => 'Border Collie',
  27. image => 'caine',
  28. link => 'http://opensesame.st/',
  29. },{
  30. name => 'Zac Pappis',
  31. title => 'Duck.co',
  32. info => 'Lead Vocalist',
  33. image => 'zac',
  34. link => 'https://twitter.com/zacpappis',
  35. },{
  36. name => 'Russell Holt',
  37. title => 'Duck Duck Hack',
  38. info => 'Geek Dad',
  39. image => 'russell',
  40. link => 'http://beicheequi9vieveetohc3aequohngu0ohsh2zeihef7eecha9op7choofohcae.com/',
  41. },{
  42. name => 'Jaryd Malbin',
  43. title => 'Ops',
  44. info => 'BOFH',
  45. image => 'jaryd',
  46. link => 'https://www.youtube.com/watch?v=09j6vMdKi3E',
  47. },{
  48. name => 'Doug Brown',
  49. title => 'Front-End',
  50. info => 'Coffee Snob',
  51. image => 'doug',
  52. link => 'https://twitter.com/sdougbrown',
  53. },{
  54. name => 'Chris Morast',
  55. title => 'Design',
  56. info => 'Margarita Enthusiast',
  57. image => 'chris',
  58. link => 'http://christophermorast.com/',
  59. },{
  60. name => 'Jag Talon',
  61. title => 'Open Source',
  62. info => 'Internet Survival Expert',
  63. image => 'jag',
  64. link => 'https://twitter.com/juantalon',
  65. },{
  66. name => 'Brian Stoner',
  67. title => 'Front-End',
  68. info => 'Person',
  69. image => 'brian',
  70. link => 'https://twitter.com/bsstoner',
  71. },{
  72. name => 'John Barrett',
  73. title => 'Duck.co',
  74. info => 'Discombobulator',
  75. image => 'john',
  76. link => 'https://github.com/jbarrett/',
  77. }],
  78. ddg_events => [{
  79. date => 'October 29, 2007',
  80. title => 'The Beginning',
  81. snippet => 'DuckDuckGo all started with the name and an idea to make answers easier to find.',
  82. type => 'company',
  83. icon => 'idea',
  84. },{
  85. date => 'February 29, 2008',
  86. title => 'It\'s Official',
  87. snippet => 'In early 2008, Gabriel emerged from his basement with a plan. He soon made it official by incorporating DuckDuckGo.',
  88. type => 'company',
  89. },{
  90. date => 'September 25, 2008',
  91. title => 'Launch!',
  92. snippet => 'Within the year, DuckDuckGo was announced to the Hacker News community. We survived!',
  93. type => 'news',
  94. icon => 'launch',
  95. },{
  96. date => 'January 22, 2009',
  97. title => 'Anonymous',
  98. snippet => 'Inspired by conversations on reddit and because search history is so personal, DuckDuckGo decides to take a bold move and not collect or share any personal information on its users.',
  99. type => 'news',
  100. icon => 'privacy',
  101. },{
  102. date => 'July 21, 2010',
  103. title => 'Duck.co',
  104. snippet => 'DuckDuckGo\'s community is its extended team. Duck.co was born from the community\'s need for a centralized place to swap ideas.',
  105. type => 'news',
  106. icon => 'community',
  107. },{
  108. date => 'January 11, 2011',
  109. title => 'The Billboard',
  110. snippet => 'DuckDuckGo delivered a message in the heart of the tech world: a billboard in San Francisco that read "Google tracks you. We don\'t."',
  111. type => 'news',
  112. icon => 'billboard',
  113. },{
  114. date => 'February 26, 2011',
  115. title => '2011 Donations',
  116. snippet => 'DuckDuckGo relies on a lot of great open-source projects to keep our gears spinning. In 2011, we decided to start paying some of that love back to the open-source community, donating to nginx, FreeBSD, Tor, Clamwin, Tahoe-LAFS and OpenSSH.',
  117. type => 'company',
  118. subtype => 'foss',
  119. icon => 'love',
  120. },{
  121. date => 'October 13, 2011',
  122. title => 'Series "A" Funding',
  123. snippet => 'Four years in, DuckDuckGo secures funding from Union Square Ventures, a group that shares the same vision of smarter search and real privacy.',
  124. type => 'company',
  125. },{
  126. date => 'November 30, 2011',
  127. title => 'Employee #1',
  128. snippet => 'For years Gabriel was the only full-timer. Caine Tighe changed all that, coming on board as our first official employee.',
  129. type => 'company',
  130. },{
  131. date => 'December 1, 2011',
  132. title => 'Headquarters',
  133. snippet => 'DuckDuckGo moves out of Gabriel\'s basement and into our fortress in Paoli, PA, USA. It really does look like a castle!',
  134. type => 'company',
  135. },{
  136. date => 'January 16, 2012',
  137. title => 'Redesign',
  138. snippet => 'Our first major visual overhaul introduced a new design that made you not want to close your browser the second you saw our results page. ',
  139. type => 'news',
  140. icon => 'redesign',
  141. },{
  142. date => 'February 13, 2012',
  143. title => '1,000,000!',
  144. snippet => 'Reaching 1 million searches a day was a major milestone for us, having steadily grown from 100 to 1,000 to 10,000 to 100,000 and finally to 1,000,000. That\'s more than 10 searches a second!',
  145. type => 'traffic',
  146. },{
  147. date => 'March 7, 2012',
  148. title => '2012 Donations',
  149. snippet => 'For our second year of open-source donations we chose the theme "open data/information." The company-directed portion went to Tor and the Wikimedia foundation. The community-directed portion went to unhosted.org, the Disaspora project, Freenet, and friendica.',
  150. type => 'company',
  151. subtype => 'foss',
  152. icon => 'love',
  153. },{
  154. date => 'May 1, 2012',
  155. title => 'DuckDuckHack',
  156. snippet => 'Our vision of getting you the best instant answers from the best sources finally merged with our vibrant community when we introduced DuckDuckHack: our open-source platform where anyone can suggest or create instant answers for our results.',
  157. type => 'news',
  158. icon => 'community',
  159. },{
  160. date => 'February 25, 2013',
  161. title => '2013 Donations',
  162. snippet => 'Our 3rd year of open-source donations were under the theme of "fix tracking." The company portion went to the Open Street Map Foundation and the Electronic Frontier Foundation. The community directed donations to Riseup, F-Droid, NoScript, Cryptocat, and Javascript Blocker. ',
  163. type => 'company',
  164. subtype => 'foss',
  165. icon => 'love',
  166. },{
  167. date => 'June 10, 2013',
  168. title => '2,000,000',
  169. snippet => '483 days after reaching one million, we doubled our daily searches. This milestone happened days after people started sharing private alternatives (like us) in the wake of the NSA revelations. ',
  170. type => 'traffic',
  171. },{
  172. date => 'June 17, 2013',
  173. title => '3,000,000',
  174. snippet => 'Just eight days after hitting two million searches per day, we added another million. To put this in perspective, it took 1,445 days to get to one million from the day we launched.',
  175. type => 'traffic',
  176. },{
  177. date => 'June 27, 2013',
  178. title => 'Search & Stories',
  179. snippet => 'DuckDuckGo delivers an app that gives you the most interesting stories of the day packed with a convenient way to search. TIME ranked it in their, "Top 50 iPhone apps of 2013."',
  180. type => 'news',
  181. },{
  182. date => 'August 19, 2013',
  183. title => '4,000,000',
  184. snippet => 'Just over two months after hitting two million searches/day, we doubled our traffic again. People start to realize we\'re not a Chinese restaurant.',
  185. type => 'traffic',
  186. },{
  187. date => 'February 26, 2014',
  188. title => '5,000,000',
  189. snippet => 'Five million direct searches in one day. That\'s 150 million a month, 1.825 billion a year! We will stop marking each million milestone now.',
  190. type => 'traffic',
  191. },{
  192. date => 'March 12, 2014',
  193. title => '2014 Donations',
  194. snippet => 'Needed more than ever, our 2014 donation theme was, "secure communications." Our company directed portion went to SecureDrop and NoiseTor. The community directed donations went to Lavabit, Riseup, Mailpile, and I2P.',
  195. type => 'company',
  196. subtype => 'foss',
  197. icon => 'love',
  198. },{
  199. date => 'March 17, 2014',
  200. title => 'Employee #10',
  201. snippet => 'We have tens of thousands of less employees than the big guys, but each one is part of our family and grew out of our community. Brian Stoner joined us just in time!',
  202. type => 'company',
  203. },{
  204. date => 'May 19, 2014',
  205. title => 'Reimagined',
  206. snippet => 'DuckDuckGo launches a reimagined and redesigned search engine with a refined look and a focus on smarter answers.',
  207. type => 'company',
  208. icon => 'redesign',
  209. }],
  210. news_articles => [{
  211. source => 'theguardian',
  212. source_full => 'The Observer',
  213. source_link => 'http://www.theguardian.com/technology/2014/apr/04/duckduckgo-gabriel-weinberg-secure-searches',
  214. author_name => 'Alex Hern',
  215. author_img => 'the-guardian_alex-hern',
  216. date => '4 April 2014',
  217. headline => 'DuckDuckGo: the plucky upstart taking on Google with secure searches',
  218. snippet => 'Gabriel Weinberg launched DuckDuckGo as a search engine that puts privacy first, rather than collecting data for advertisers and security agencies...',
  219. },{
  220. source => 'fastco',
  221. source_full => 'FastCoLabs',
  222. source_link => 'http://www.fastcolabs.com/3026698/inside-duckduckgo-googles-tiniest-fiercest-competitor',
  223. author_name => 'John Paul Titlow',
  224. author_img => 'fast-co_john-paul-titlow',
  225. date => '20 February 2014',
  226. headline => 'Inside DuckDuckGo, Google\'s Tiniest, Fiercest Competitor',
  227. snippet => 'In 2008, launching a search engine seemed like a crazy idea. Here\'s how Gabriel Weinberg proved the critics wrong.',
  228. },{
  229. source => 'wapost',
  230. source_full => 'The Washington Post',
  231. source_link => 'http://www.washingtonpost.com/business/ducking-google-in-search-engines/2012/11/09/6cf3af10-2842-11e2-bab2-eda299503684_story.html',
  232. author_name => 'Michael Rosenwald',
  233. author_img => 'washington-post_michael-rosenwald',
  234. date => '9 November 2012',
  235. headline => 'Ducking Google in search engines',
  236. snippet => 'Not far from Valley Forge, around the corner from Bravo Pizza, up the road from Paoli Auto Body, there is an odd-looking office building that resembles a stone castle. An eye doctor is on the first floor. On the second floor is a search engine.',
  237. }]
  238. },
  239. bang => sub {},
  240. # goodies => sub {
  241. # goodies => 1,
  242. # no_content_internal => 1,
  243. # },
  244. index => sub {
  245. no_wrapper => 1,
  246. homepage => 1,
  247. },
  248. newbang => sub {},
  249. params => sub {},
  250. settings => sub {
  251. yui_body_header => 1
  252. },
  253. supportus => sub {},
  254. whatsnew => sub {
  255. no_content_internal => 1,
  256. no_spacer => 1,
  257. no_cw => 1,
  258. alt_header => 1,
  259. menu_show_press => 1,
  260. menu_hide_settings => 1,
  261. menu_hide_themes => 1,
  262. answer_types => [{
  263. title => '<b>DuckDuckGo</b>',
  264. raw_title => 'DuckDuckGo Redesigned',
  265. text => "<span>Introducing the reimagined and redesigned DuckDuckGo.</span> <span>Smarter search, less clutter, and real privacy.</span>",
  266. type => "redesign",
  267. link => "/?q=daft+punk",
  268. },{
  269. title => "<b>Images</b> & <b>Videos</b>",
  270. raw_title => 'Images & Videos',
  271. text => "<span>Images and Videos are always available.</span> <span>View them without leaving the page.</span>",
  272. type => "images-videos",
  273. link => "/?q=images+beaches+in+thailand",
  274. },{
  275. title => "Find <b>Places</b>",
  276. raw_title => 'Find Places',
  277. text => "<span>A better place to start your search for restaurants,</span> <span>or anywhere else you might decide to go.</span>",
  278. type => "places",
  279. link => "/?q=thai+food+in+san+francisco",
  280. },{
  281. title => "More <b>Meanings</b>",
  282. raw_title => 'More Meanings',
  283. text => "<span>When searching ambiguous terms, getting the meaning</span> <span>you want can be difficult. Not anymore.</span>",
  284. type => "meanings",
  285. link => "/?q=orange",
  286. },{
  287. title => "<b>Recipe</b> Search",
  288. raw_title => 'Recipe Search',
  289. text => "<span>Introducing recipe search on DuckDuckGo.</span> <span>A great place to start your next meal.</span>",
  290. type => "recipes",
  291. link => "/?q=mozzarella+tomato+salad",
  292. },{
  293. title => "<b>Weather</b>",
  294. raw_title => 'Weather',
  295. text => "<span>This week's forecast may not look so good,</span> <span>but our instant answer makes it a little better.</span>",
  296. type => "weather",
  297. link => "/?q=weather",
  298. },{
  299. title => 'Smarter <b>Answers</b>',
  300. raw_title => 'Smarter Answers',
  301. text => "<span>Answers to your questions from the best sources,</span> <span>developed by our open source community.</span>",
  302. type => "answers",
  303. link => "/?q=what+rhymes+with+duck",
  304. },{
  305. title => '<b>Try DuckDuckGo</b>',
  306. raw_title => 'Try DuckDuckGo',
  307. hero_form => 1,
  308. type => "home",
  309. link => "/",
  310. }],
  311. },
  312. ## TODO
  313. api => sub {},
  314. duckduckbot => sub {},
  315. duckduckpreview => sub {},
  316. feedback => sub {
  317. no_logo => 1,
  318. },
  319. privacy => sub {
  320. copyright_footer => 1,
  321. no_content_internal => 1,
  322. no_spacer => 1,
  323. no_cw => 1,
  324. alt_header => 1,
  325. alt_header_text => 1,
  326. menu_show_press => 1,
  327. menu_hide_themes => 1,
  328. },
  329. search_box => sub {},
  330. }}
  331. sub statics {{
  332. "50x" => sub {
  333. no_wrapper => 1,
  334. homepage => 1,
  335. },
  336. }}
  337. 1;