From de3fcc67af0b9293871fbda65fc726a8e65eb60a Mon Sep 17 00:00:00 2001 From: Bruno Leonardo Michels Date: Sun, 17 Jun 2018 21:20:10 -0300 Subject: [PATCH 1/3] Add camel-case-keys package --- package-lock.json | 47 ++++++++++++++++++++++++++++++++++------------- package.json | 1 + 2 files changed, 35 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6ff572e..f06b04e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2332,24 +2332,22 @@ "camelcase": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" }, "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" }, "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true + "map-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=" } } }, @@ -7907,6 +7905,24 @@ "read-pkg-up": "^1.0.1", "redent": "^1.0.0", "trim-newlines": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + } } }, "merge-descriptors": { @@ -9736,6 +9752,11 @@ "integrity": "sha512-eTPo5t/4bgaMNZxyjWx6N2a6AuE0mq51KWvpc7nU/MAqixcI6v6KrGUKES0HaomdnolQBBXU/++X6/QQ9KL4tw==", "dev": true }, + "quick-lru": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=" + }, "randomatic": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz", diff --git a/package.json b/package.json index 6cb1714..3011860 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "@angular/platform-browser-dynamic": "^6.0.5", "@angular/router": "^6.0.5", "bootstrap": "^4.0.0-beta.2", + "camelcase-keys": "^4.2.0", "core-js": "^2.4.1", "ngx-redux-state-props": "0.0.3", "ngx-take-until-destroy": "^3.0.0", From c0c89eb17674d40c123b34fc89331db22db0e281 Mon Sep 17 00:00:00 2001 From: Bruno Leonardo Michels Date: Sun, 17 Jun 2018 21:22:15 -0300 Subject: [PATCH 2/3] Add nasa service --- src/app/shared/nasa.service.spec.ts | 15 ++++++++++++ src/app/shared/nasa.service.ts | 36 +++++++++++++++++++++++++++++ src/app/shared/shared.module.ts | 3 ++- 3 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 src/app/shared/nasa.service.spec.ts create mode 100644 src/app/shared/nasa.service.ts diff --git a/src/app/shared/nasa.service.spec.ts b/src/app/shared/nasa.service.spec.ts new file mode 100644 index 0000000..736f514 --- /dev/null +++ b/src/app/shared/nasa.service.spec.ts @@ -0,0 +1,15 @@ +import { TestBed, inject } from '@angular/core/testing'; + +import { NasaService } from './nasa.service'; + +describe('NasaService', () => { + beforeEach(() => { + TestBed.configureTestingModule({ + providers: [NasaService] + }); + }); + + it('should be created', inject([NasaService], (service: NasaService) => { + expect(service).toBeTruthy(); + })); +}); diff --git a/src/app/shared/nasa.service.ts b/src/app/shared/nasa.service.ts new file mode 100644 index 0000000..d718dc9 --- /dev/null +++ b/src/app/shared/nasa.service.ts @@ -0,0 +1,36 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import camelcaseKeys from 'camelcase-keys'; +import { map } from 'rxjs/operators'; + +interface Apod { + date: string; + explanation: string; + hdurl: string; + media_type: string; + service_version: string; + title: string; + url: string; +} + +@Injectable({ + providedIn: 'root', +}) +export class NasaService { + static baseUrl = 'https://api.nasa.gov'; + + static params = { + params: { + api_key: 'DEMO_KEY', + }, + }; + + constructor(private http: HttpClient) {} + + async getApod() { + return await this.http + .get(`${NasaService.baseUrl}/planetary/apod`, NasaService.params) + .pipe(map((response) => camelcaseKeys(response, { deep: true }))) + .toPromise(); + } +} diff --git a/src/app/shared/shared.module.ts b/src/app/shared/shared.module.ts index caa8f34..b976942 100644 --- a/src/app/shared/shared.module.ts +++ b/src/app/shared/shared.module.ts @@ -1,4 +1,5 @@ import { CommonModule } from '@angular/common'; +import { HttpClientModule } from '@angular/common/http'; import { NgModule } from '@angular/core'; import { RouterModule } from '@angular/router'; @@ -6,7 +7,7 @@ import { LayoutComponent } from './layout/layout.component'; import { TitleComponent } from './title/title.component'; @NgModule({ - imports: [CommonModule, RouterModule], + imports: [CommonModule, RouterModule, HttpClientModule], exports: [LayoutComponent, TitleComponent], declarations: [LayoutComponent, TitleComponent], }) From 66c5f844d7f21354065c83622ea407aec2b7abbd Mon Sep 17 00:00:00 2001 From: Bruno Leonardo Michels Date: Sun, 17 Jun 2018 21:25:23 -0300 Subject: [PATCH 3/3] Update NASA service --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 95134ab..2ea908c 100644 --- a/README.md +++ b/README.md @@ -50,3 +50,7 @@ Each Pull Request will contain explanation and steps taken to complete a feature ## Forms - [Reactive form, hero-edit](https://github.com/brunolm/angular-how-to/pull/12) + +## Services + +- [Adding Nasa service, consume Nasa API](https://github.com/brunolm/angular-how-to/pull/15)