{"id":16153460,"url":"https://github.com/yonet/azuretweetmigration","last_synced_at":"2026-02-26T03:02:34.508Z","repository":{"id":50069904,"uuid":"181110161","full_name":"Yonet/AzureTweetMigration","owner":"Yonet","description":null,"archived":false,"fork":false,"pushed_at":"2021-06-05T01:01:05.000Z","size":147,"stargazers_count":0,"open_issues_count":5,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-02T11:11:16.442Z","etag":null,"topics":["3d","3d-visualization","azure","azure-functions","javascript","mixed-reality","mixedrealitytookit-unity","twitter-api","typescript"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Yonet.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-04-13T02:23:00.000Z","updated_at":"2019-04-17T22:27:07.000Z","dependencies_parsed_at":"2022-09-23T00:31:04.282Z","dependency_job_id":null,"html_url":"https://github.com/Yonet/AzureTweetMigration","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yonet%2FAzureTweetMigration","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yonet%2FAzureTweetMigration/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yonet%2FAzureTweetMigration/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yonet%2FAzureTweetMigration/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Yonet","download_url":"https://codeload.github.com/Yonet/AzureTweetMigration/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yonet%2FAzureTweetMigration/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259184670,"owners_count":22818262,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3d","3d-visualization","azure","azure-functions","javascript","mixed-reality","mixedrealitytookit-unity","twitter-api","typescript"],"created_at":"2024-10-10T01:12:34.964Z","updated_at":"2025-10-30T20:22:25.051Z","avatar_url":"https://github.com/Yonet.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AzureTweetMigration\n\nTweet Migration is a 3D visualization of tweets.\n\n## How to run\n\n1. Fork or clone this repo\n\n```\ngit clone git@github.com:Yonet/AzureTweetMigration.git\n\n\n```\n\n2. Create local.settings.json file at the root level of your project. If you follow the steps-0, this file will be automatically created for you.\n\n```js\n{\n\"IsEncrypted\": false,\n\n\"Values\": {\n\"AzureWebJobsStorage\": \"\",\n\n\"FUNCTIONS_WORKER_RUNTIME\": \"node\"\n\n}\n}\n```\n\n3. Install dependencies\n\n```\nnpm install\n```\n\n4. Run npm start script\n\n```\nnpm run start\n```\n\n## [Step-0](https://github.com/Yonet/AzureTweetMigration/tree/step-0)\n\nIn this step, we will setup our project and create an [Azure Function](https://docs.microsoft.com/azure/azure-functions/?WT.mc_id=azuretweetmigration-github-ayyonet) to get [Twitter Search](https://developer.twitter.com/en/docs.html) data into our application. You can follow the below steps or check out \"step-0\" branch of this repo.\n\n-   Download\n\n*   [Node.js latest LTS version](https://nodejs.org/en/download/). Latest Node is not compatible with the tools we are using and not recommended for most users.\n\n*   [Visual Studio Code 2019](https://visualstudio.microsoft.com/downloads/?WT.mc_id=azuretweetmigration-github-ayyonet)\n\n*   [Visual Studio Code Azure Extensions](https://docs.microsoft.com/azure/azure-functions/functions-run-local?WT.mc_id=azuretweetmigration-github-ayyonet) or [Azure Functions Extension](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azurefunctions\u0026WT.mc_id=azuretweetmigration-github-ayyonet)\n\n-   Sign up for a [free Azure account](https://azure.microsoft.com/en-us/free/?WT.mc_id=azuretweetmigration-github-ayyonet)\n\n\n*   Select Azure Extensions from VS Code [left hand panel](/images/azureToolbar.png).\n\n*   Select [Functions grouping](/images/functionsRepos.png), click on folder icon on the Functions grouping to create a new project. Select a folder or create a new folder for your project repository.\n\n*   To create a function select the second icon on the Functions grouping.\n\n*   You will be prompted to sign in if you have [Azure Tools](https://docs.microsoft.com/azure/azure-functions/functions-run-local?WT.mc_id=azuretweetmigration-github-ayyonet) or [Azure Repos](https://github.com/Microsoft/azure-repos-vscode/blob/master/TFVC_README.md?WT.mc_id=azuretweetmigration-github-ayyonet#quick-start) extensions.\n\n*   When prompted, name your function \"SearchTweets\". Language \"TypeScript\".\n\n*   When prompted, select \"Anonymous\". This will make our API public.\n\n*   [Azure Functions Extension](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azurefunctions\u0026WT.mc_id=azuretweetmigration-github-ayyonet) will create our initial configuration files as well as SearchTweet folder with our first Azure function.\n\n*   To run the code you can open up the internal terminal from the Command Palette (⇧⌘P), use the View: Toggle Integrated Terminal command.\n\n*   Run npm start script\n\n```\nnpm run start\n```\n\n-   Start script will download extensions configured in your 'functions.json' file and start a serve your project.\n\n-   In your terminal, you will see a localhost link 'http://localhost:7071/api/SearchTweets'. Click the link to open in a browser.\n\n-   You will see the error message being displayed. This message is set on ['SearchTweet/index.ts'](https://github.com/Yonet/AzureTweetMigration/blob/179f3301b20e7914733291adff208c8605b17687/SearchTweets/index.ts#L16) file.\n\n-   Add a name query value to see the message returned.\n\n```\nhttp://localhost:7071/api/SearchTweets?name=aysegul\n```\n\n## Step-1\n\nAdding Twitter Api: we will add twitter authorization and search functionality. We will refactor our code to make sure when the our projects gets bigger, it is still maintainable and structured well.\n\n-   Sign up for [Twitter Developer Api](https://developer.twitter.com/en.html)\n\n-   We will be using the [standard search api](https://developer.twitter.com/en/docs/tweets/search/api-reference/get-search-tweets.html). Add tokens and secrets as well as the search url we will be calling to local.settings.json file.\n\n```ts\n{\n    \"consumer_key\": \"fs54YbjfXuQWJRs01XatGR\",\n    \"consumer_secret\": \"lzXoL4GzxGYeItJ327BGcNmZcmPhgjgft62x0tHuZYmad\",\n    \"access_token_key\": \"35870660-0250Io0UYm5NHtutgM7bq57h9aChvA30FIBYV0j1q\",\n    \"access_token_secret\": \"RFab22sgMgg9DlwoWRZrQRIizQZultYvo2Ek9C0Xp\",\n    \"search_url\": \"https://api.twitter.com/1.1/search/tweets.json\"\n}\n\n```\n\nYou can add your keys in any other structure if you like. I can reach to my keys from my functions as:\n\n```ts\nprocess.env.Twitter.consumer_key;\n```\n\n- Authentication: we will use [application-only authentication](https://developer.twitter.com/en/docs/basics/authentication/overview/application-only). Application-only authentication offers applications the ability to issue authenticated requests on behalf of the application itself (as opposed to on behalf of a specific user). We need to acquire bearer token using our consumer key and secret.\n\n![Auth](/images/appauth_0.png)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyonet%2Fazuretweetmigration","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyonet%2Fazuretweetmigration","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyonet%2Fazuretweetmigration/lists"}