page.tsx 882 Bytes
Newer Older
Jeffrey Morgan's avatar
Jeffrey Morgan committed
1
2
3
4
5
6
import { Octokit } from '@octokit/rest'
import { redirect } from 'next/navigation'

const octokit = new Octokit()

export default async function Download() {
7
8
9
10
11
12
13
14
15
16
17
18
19
  const res = await fetch('https://api.github.com/repos/jmorganca/ollama/releases', { next: { revalidate: 60 } })
  const data = await res.json()

  if (data.length === 0) {
    return new Response('not found', { status: 404 })
  }

  const latest = data[0]
  const assets = latest.assets || []

  if (assets.length === 0) {
    return new Response('not found', { status: 404 })
  }
Jeffrey Morgan's avatar
Jeffrey Morgan committed
20
21

  // todo: get the correct asset for the current arch/os
22
23
24
25
26
27
28
  const asset = assets.find(
    (a: any) => a.name.toLowerCase().includes('darwin') && a.name.toLowerCase().includes('.zip')
  )

  if (!asset) {
    return new Response('not found', { status: 404 })
  }
Jeffrey Morgan's avatar
Jeffrey Morgan committed
29
30
31
32
33
34
35

  if (asset) {
    redirect(asset.browser_download_url)
  }

  return null
}