Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add proxy code #1

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
name: Lint Code Base

on: [push]

jobs:
build:
name: Lint Code Base
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: bahmutov/npm-install@v1
- run: npm run format
- run: git status

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: fix trailing space and keep only one empty line

1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
node_modules/
5 changes: 5 additions & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"printWidth": 140,
"singleQuote": true,
"semi": true
}
21 changes: 21 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,23 @@
# url-privacy-proxy
Extracts coordinates from google-encoded urls without exposing clients' IP addresses

URIs like https://maps.app.goo.gl/Ce7zkj2X8oUy3Se49?g_st=ic are unshortened and coordinates are extracted and then coverted to geo URIs.


[![Deploy master to Production](https://deploy.workers.cloudflare.com/button)](https://deploy.workers.cloudflare.com/?url=https://github.com/organicmaps/url-privacy-proxy)

## Requirements

Install CloudFlare's wrangler and other dev dependencies using npm:

```bash
npm i
```

## Development

Use `npx wrangler dev` for development using Cloudflare, or `npx wrangler dev --local` for localhost development.

## Testing

Run `npm start` and then `npm test` or `jest` in a different terminal to test the proxy with some earlier feeded URIs.
2 changes: 1 addition & 1 deletion header.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/**
/*
* URL Privacy Proxy by Organic Maps
* Copyright (C) 2023 Organic Maps OÜ
*
Expand Down
34 changes: 34 additions & 0 deletions index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import { Router } from 'itty-router';
import { getCoordinates } from './src/coordinates';

const router = Router();

router.get('/coordinates', async (request) => {
const json = await getCoordinates(request);
if (json==null) {
return new Response('Bad Request', {
status:400,
statusText: 'Bad Request'
})
}
return new Response(json, {
headers: {
'content-type': 'application/json;charset=UTF-8',
},
});
});

router
.get('/redirect', async (request) => {
let json = await getCoordinates(request);
json = JSON.parse(json);
const link = json.url.geo;
return Response.redirect(link);
})

.get('*', async (request) => {
return new Response(JSON.stringify({ error: 'hey' }));
});
addEventListener('fetch', (e) => {
e.respondWith(router.handle(e.request));
});
Loading