add api key
This commit is contained in:
		
							parent
							
								
									f6511f2a44
								
							
						
					
					
						commit
						6b651e1992
					
				@ -27,6 +27,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
 | 
			
		||||
public class TrendzControllerTest extends AbstractControllerTest {
 | 
			
		||||
 | 
			
		||||
    private final String trendzUrl = "https://some.domain.com:18888/also_necessary_prefix";
 | 
			
		||||
    private final String apiKey = "$2a$10$iDjfqYmnrw9gkdw4XhgzFOU.R/pVz3OKgXOdpbR2LuXaKatGcGLiG";
 | 
			
		||||
 | 
			
		||||
    @Before
 | 
			
		||||
    public void setUp() throws Exception {
 | 
			
		||||
@ -35,6 +36,7 @@ public class TrendzControllerTest extends AbstractControllerTest {
 | 
			
		||||
        TrendzSettings trendzSettings = new TrendzSettings();
 | 
			
		||||
        trendzSettings.setEnabled(true);
 | 
			
		||||
        trendzSettings.setBaseUrl(trendzUrl);
 | 
			
		||||
        trendzSettings.setApiKey(apiKey);
 | 
			
		||||
 | 
			
		||||
        doPost("/api/trendz/settings", trendzSettings).andExpect(status().isOk());
 | 
			
		||||
    }
 | 
			
		||||
@ -48,9 +50,12 @@ public class TrendzControllerTest extends AbstractControllerTest {
 | 
			
		||||
        assertThat(trendzSettings).isNotNull();
 | 
			
		||||
        assertThat(trendzSettings.isEnabled()).isTrue();
 | 
			
		||||
        assertThat(trendzSettings.getBaseUrl()).isEqualTo(trendzUrl);
 | 
			
		||||
        trendzSettings.setApiKey(apiKey);
 | 
			
		||||
 | 
			
		||||
        String updatedUrl = "https://some.domain.com:18888/tenant_trendz";
 | 
			
		||||
        String updatedApiKey = "$2a$10$aRR0bHa8rtzP5jRcE72vp.hRFsGQz4MGIs62oogLbfOCFK3.RIESG";
 | 
			
		||||
        trendzSettings.setBaseUrl(updatedUrl);
 | 
			
		||||
        trendzSettings.setApiKey(updatedApiKey);
 | 
			
		||||
 | 
			
		||||
        doPost("/api/trendz/settings", trendzSettings).andExpect(status().isOk());
 | 
			
		||||
 | 
			
		||||
@ -65,6 +70,7 @@ public class TrendzControllerTest extends AbstractControllerTest {
 | 
			
		||||
        TrendzSettings newTrendzSettings = new TrendzSettings();
 | 
			
		||||
        newTrendzSettings.setEnabled(true);
 | 
			
		||||
        newTrendzSettings.setBaseUrl("https://some.domain.com:18888/customer_trendz");
 | 
			
		||||
        newTrendzSettings.setApiKey("some_api_key");
 | 
			
		||||
 | 
			
		||||
        doPost("/api/trendz/settings", newTrendzSettings).andExpect(status().isForbidden());
 | 
			
		||||
 | 
			
		||||
@ -72,6 +78,6 @@ public class TrendzControllerTest extends AbstractControllerTest {
 | 
			
		||||
        assertThat(fetchedTrendzSettings).isNotNull();
 | 
			
		||||
        assertThat(fetchedTrendzSettings.isEnabled()).isTrue();
 | 
			
		||||
        assertThat(fetchedTrendzSettings.getBaseUrl()).isEqualTo(trendzUrl);
 | 
			
		||||
        assertThat(fetchedTrendzSettings.getApiKey()).isEqualTo(apiKey);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -15,12 +15,16 @@
 | 
			
		||||
 */
 | 
			
		||||
package org.thingsboard.server.common.data.trendz;
 | 
			
		||||
 | 
			
		||||
import lombok.AllArgsConstructor;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import lombok.NoArgsConstructor;
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
@NoArgsConstructor
 | 
			
		||||
@AllArgsConstructor
 | 
			
		||||
public class TrendzSettings {
 | 
			
		||||
 | 
			
		||||
    private boolean enabled;
 | 
			
		||||
    private String baseUrl;
 | 
			
		||||
 | 
			
		||||
    private String apiKey;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -31,13 +31,17 @@
 | 
			
		||||
      <form [formGroup]="trendzSettingsForm" (ngSubmit)="save()">
 | 
			
		||||
        <fieldset [disabled]="isLoading$ | async">
 | 
			
		||||
          <section class="tb-trendz-section flex flex-col gt-sm:flex-row">
 | 
			
		||||
            <mat-checkbox class="flex flex-1" formControlName="isTrendzEnabled">
 | 
			
		||||
              {{ 'admin.trendz-enable' | translate }}
 | 
			
		||||
            </mat-checkbox>
 | 
			
		||||
            <mat-form-field class="tb-trendz-url mat-block flex-1" subscriptSizing="dynamic">
 | 
			
		||||
              <mat-label translate>admin.trendz-url</mat-label>
 | 
			
		||||
              <input matInput formControlName="trendzUrl">
 | 
			
		||||
            </mat-form-field>
 | 
			
		||||
            <mat-checkbox class="flex flex-1" formControlName="isTrendzEnabled">
 | 
			
		||||
              {{ 'admin.trendz-enable' | translate }}
 | 
			
		||||
            </mat-checkbox>
 | 
			
		||||
            <mat-form-field class="tb-trendz-api-key mat-block flex-1" subscriptSizing="dynamic">
 | 
			
		||||
              <mat-label translate>admin.trendz-api-key</mat-label>
 | 
			
		||||
              <input matInput formControlName="apiKey">
 | 
			
		||||
            </mat-form-field>
 | 
			
		||||
          </section>
 | 
			
		||||
          <div class="flex w-full flex-row flex-wrap items-center justify-end">
 | 
			
		||||
            <button mat-button mat-raised-button color="primary" [disabled]="(isLoading$ | async) || trendzSettingsForm.invalid || !trendzSettingsForm.dirty" type="submit">
 | 
			
		||||
 | 
			
		||||
@ -33,4 +33,14 @@
 | 
			
		||||
        padding-bottom: 12px;
 | 
			
		||||
      }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .tb-trendz-api-key {
 | 
			
		||||
      @media #{$mat-gt-sm} {
 | 
			
		||||
        padding-right: 12px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      @media #{$mat-lt-md} {
 | 
			
		||||
        padding-bottom: 12px;
 | 
			
		||||
      }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -20,7 +20,6 @@ import { HasConfirmForm } from '@core/guards/confirm-on-exit.guard';
 | 
			
		||||
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
 | 
			
		||||
import { TrendzSettingsService } from '@core/http/trendz-settings.service';
 | 
			
		||||
import { TrendzSettings } from '@shared/models/trendz-settings.models';
 | 
			
		||||
import { isDefinedAndNotNull } from '@core/utils';
 | 
			
		||||
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
 | 
			
		||||
 | 
			
		||||
@Component({
 | 
			
		||||
@ -40,8 +39,9 @@ export class TrendzSettingsComponent extends PageComponent implements OnInit, Ha
 | 
			
		||||
 | 
			
		||||
  ngOnInit() {
 | 
			
		||||
    this.trendzSettingsForm = this.fb.group({
 | 
			
		||||
      isTrendzEnabled: [false],
 | 
			
		||||
      trendzUrl: [null, [Validators.pattern(/^(https?:\/\/)[^\s/$.?#].[^\s]*$/i)]],
 | 
			
		||||
      isTrendzEnabled: [false]
 | 
			
		||||
      apiKey: [null]
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    this.trendzSettingsService.getTrendzSettings().subscribe((trendzSettings) => {
 | 
			
		||||
@ -67,8 +67,9 @@ export class TrendzSettingsComponent extends PageComponent implements OnInit, Ha
 | 
			
		||||
 | 
			
		||||
  setTrendzSettings(trendzSettings: TrendzSettings) {
 | 
			
		||||
    this.trendzSettingsForm.reset({
 | 
			
		||||
      isTrendzEnabled: trendzSettings?.enabled ?? false,
 | 
			
		||||
      trendzUrl: trendzSettings?.baseUrl,
 | 
			
		||||
      isTrendzEnabled: trendzSettings?.enabled ?? false
 | 
			
		||||
      apiKey: trendzSettings?.apiKey
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    this.toggleUrlRequired(this.trendzSettingsForm.get('isTrendzEnabled').value);
 | 
			
		||||
@ -79,16 +80,19 @@ export class TrendzSettingsComponent extends PageComponent implements OnInit, Ha
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  save(): void {
 | 
			
		||||
    const trendzUrl = this.trendzSettingsForm.get('trendzUrl').value;
 | 
			
		||||
    const isTrendzEnabled =   this.trendzSettingsForm.get('isTrendzEnabled').value;
 | 
			
		||||
    const trendzUrl = this.trendzSettingsForm.get('trendzUrl').value;
 | 
			
		||||
    const apiKey = this.trendzSettingsForm.get('apiKey').value;
 | 
			
		||||
 | 
			
		||||
    const trendzSettings: TrendzSettings = {
 | 
			
		||||
      enabled: isTrendzEnabled,
 | 
			
		||||
      baseUrl: trendzUrl,
 | 
			
		||||
      enabled: isTrendzEnabled
 | 
			
		||||
      apiKey: apiKey
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    this.trendzSettingsService.saveTrendzSettings(trendzSettings).subscribe(() => {
 | 
			
		||||
      this.setTrendzSettings(trendzSettings);
 | 
			
		||||
    })
 | 
			
		||||
    this.trendzSettingsService.saveTrendzSettings(trendzSettings)
 | 
			
		||||
      .subscribe(() => {
 | 
			
		||||
        this.setTrendzSettings(trendzSettings);
 | 
			
		||||
      })
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -15,11 +15,13 @@
 | 
			
		||||
///
 | 
			
		||||
 | 
			
		||||
export interface TrendzSettings {
 | 
			
		||||
  enabled: boolean,
 | 
			
		||||
  baseUrl: string,
 | 
			
		||||
  enabled: boolean
 | 
			
		||||
  apiKey: string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export const initialTrendzSettings: TrendzSettings = {
 | 
			
		||||
  enabled: false,
 | 
			
		||||
  baseUrl: null,
 | 
			
		||||
  enabled: false
 | 
			
		||||
  apiKey: null
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -549,6 +549,7 @@
 | 
			
		||||
        "trendz": "Trendz",
 | 
			
		||||
        "trendz-settings": "Trendz settings",
 | 
			
		||||
        "trendz-url": "Trendz URL",
 | 
			
		||||
        "trendz-api-key": "Trendz API key",
 | 
			
		||||
        "trendz-enable": "Enable Trendz"
 | 
			
		||||
      },
 | 
			
		||||
    "alarm": {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user